<<<<<<< HEAD
======= "use strict"; var n = Object.getOwnPropertySymbols, i = Object.prototype.hasOwnProperty, a = Object.prototype.propertyIsEnumerable; function o(t) { if (null == t) throw new TypeError( "Object.assign cannot be called with null or undefined", ); return Object(t); } e.exports = (function () { try { if (!Object.assign) return !1; var t = new String("abc"); if ( ((t[5] = "de"), "5" === Object.getOwnPropertyNames(t)[0]) ) return !1; for (var e = {}, r = 0; r < 10; r++) e["_" + String.fromCharCode(r)] = r; if ( "0123456789" !== Object.getOwnPropertyNames(e) .map(function (t) { return e[t]; }) .join("") ) return !1; var n = {}; return ( "abcdefghijklmnopqrst".split("").forEach(function (t) { n[t] = t; }), "abcdefghijklmnopqrst" === Object.keys(Object.assign({}, n)).join("") ); } catch (t) { return !1; } })() ? Object.assign : function (t, e) { for ( var r, s, l = o(t), c = 1; c < arguments.length; c++ ) { for (var u in (r = Object(arguments[c]))) i.call(r, u) && (l[u] = r[u]); if (n) { s = n(r); for (var f = 0; f < s.length; f++) a.call(r, s[f]) && (l[s[f]] = r[s[f]]); } } return l; }; }, {}, ], 248: [ function (t, e, r) { "use strict"; function n(t, e) { if ("string" != typeof t) return [t]; var r = [t]; "string" == typeof e || Array.isArray(e) ? (e = { brackets: e }) : e || (e = {}); var n = e.brackets ? Array.isArray(e.brackets) ? e.brackets : [e.brackets] : ["{}", "[]", "()"], i = e.escape || "___", a = !!e.flat; n.forEach(function (t) { var e = new RegExp( [ "\\", t[0], "[^\\", t[0], "\\", t[1], "]*\\", t[1], ].join(""), ), n = []; function a(e, a, o) { var s = r.push(e.slice(t[0].length, -t[1].length)) - 1; return n.push(s), i + s + i; } r.forEach(function (t, n) { for (var i, o = 0; t != i; ) if (((i = t), (t = t.replace(e, a)), o++ > 1e4)) throw Error( "References have circular dependency. Please, check them.", ); r[n] = t; }), (n = n.reverse()), (r = r.map(function (e) { return ( n.forEach(function (r) { e = e.replace( new RegExp("(\\" + i + r + "\\" + i + ")", "g"), t[0] + "$1" + t[1], ); }), e ); })); }); var o = new RegExp("\\" + i + "([0-9]+)\\" + i); return a ? r : (function t(e, r, n) { for (var i, a = [], s = 0; (i = o.exec(e)); ) { if (s++ > 1e4) throw Error("Circular references in parenthesis"); a.push(e.slice(0, i.index)), a.push(t(r[i[1]], r)), (e = e.slice(i.index + i[0].length)); } return a.push(e), a; })(r[0], r); } function i(t, e) { if (e && e.flat) { var r, n = (e && e.escape) || "___", i = t[0]; if (!i) return ""; for ( var a = new RegExp("\\" + n + "([0-9]+)\\" + n), o = 0; i != r; ) { if (o++ > 1e4) throw Error("Circular references in " + t); (r = i), (i = i.replace(a, s)); } return i; } return t.reduce(function t(e, r) { return Array.isArray(r) && (r = r.reduce(t, "")), e + r; }, ""); function s(e, r) { if (null == t[r]) throw Error("Reference " + r + "is undefined"); return t[r]; } } function a(t, e) { return Array.isArray(t) ? i(t, e) : n(t, e); } (a.parse = n), (a.stringify = i), (e.exports = a); }, {}, ], 249: [ function (t, e, r) { "use strict"; var n = t("pick-by-alias"); e.exports = function (t) { var e; arguments.length > 1 && (t = arguments); "string" == typeof t ? (t = t.split(/\s/).map(parseFloat)) : "number" == typeof t && (t = [t]); t.length && "number" == typeof t[0] ? (e = 1 === t.length ? { width: t[0], height: t[0], x: 0, y: 0 } : 2 === t.length ? { width: t[0], height: t[1], x: 0, y: 0 } : { x: t[0], y: t[1], width: t[2] - t[0] || 0, height: t[3] - t[1] || 0, }) : t && ((t = n(t, { left: "x l left Left", top: "y t top Top", width: "w width W Width", height: "h height W Width", bottom: "b bottom Bottom", right: "r right Right", })), (e = { x: t.left || 0, y: t.top || 0 }), null == t.width ? t.right ? (e.width = t.right - e.x) : (e.width = 0) : (e.width = t.width), null == t.height ? t.bottom ? (e.height = t.bottom - e.y) : (e.height = 0) : (e.height = t.height)); return e; }; }, { "pick-by-alias": 253 }, ], 250: [ function (t, e, r) { e.exports = function (t) { var e = []; return ( t.replace(i, function (t, r, i) { var o = r.toLowerCase(); for ( i = (function (t) { var e = t.match(a); return e ? e.map(Number) : []; })(i), "m" == o && i.length > 2 && (e.push([r].concat(i.splice(0, 2))), (o = "l"), (r = "m" == r ? "l" : "L")); ; ) { if (i.length == n[o]) return i.unshift(r), e.push(i); if (i.length < n[o]) throw new Error("malformed path data"); e.push([r].concat(i.splice(0, n[o]))); } }), e ); }; var n = { a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0, }, i = /([astvzqmhlc])([^astvzqmhlc]*)/gi; var a = /-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi; }, {}, ], 251: [ function (t, e, r) { e.exports = function (t, e) { e || (e = [0, ""]), (t = String(t)); var r = parseFloat(t, 10); return ( (e[0] = r), (e[1] = t.match(/[\d.\-\+]*\s*(.*)/)[1] || ""), e ); }; }, {}, ], 252: [ function (t, e, r) { (function (t) { (function () { (function () { var r, n, i, a, o, s; "undefined" != typeof performance && null !== performance && performance.now ? (e.exports = function () { return performance.now(); }) : null != t && t.hrtime ? ((e.exports = function () { return (r() - o) / 1e6; }), (n = t.hrtime), (a = (r = function () { var t; return 1e9 * (t = n())[0] + t[1]; })()), (s = 1e9 * t.uptime()), (o = a - s)) : Date.now ? ((e.exports = function () { return Date.now() - i; }), (i = Date.now())) : ((e.exports = function () { return new Date().getTime() - i; }), (i = new Date().getTime())); }).call(this); }).call(this); }).call(this, t("_process")); }, { _process: 278 }, ], 253: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { var n, a, o = {}; if ( ("string" == typeof e && (e = i(e)), Array.isArray(e)) ) { var s = {}; for (a = 0; a < e.length; a++) s[e[a]] = !0; e = s; } for (n in e) e[n] = i(e[n]); var l = {}; for (n in e) { var c = e[n]; if (Array.isArray(c)) for (a = 0; a < c.length; a++) { var u = c[a]; if ((r && (l[u] = !0), u in t)) { if (((o[n] = t[u]), r)) for (var f = a; f < c.length; f++) l[c[f]] = !0; break; } } else n in t && (e[n] && (o[n] = t[n]), r && (l[n] = !0)); } if (r) for (n in t) l[n] || (o[n] = t[n]); return o; }; var n = {}; function i(t) { return n[t] ? n[t] : ("string" == typeof t && (t = n[t] = t.split(/\s*,\s*|\s+/)), t); } }, {}, ], 254: [ function (t, e, r) { e.exports = function (t, e, r, n) { var i = t[0], a = t[1], o = !1; void 0 === r && (r = 0), void 0 === n && (n = e.length); for (var s = n - r, l = 0, c = s - 1; l < s; c = l++) { var u = e[l + r][0], f = e[l + r][1], h = e[c + r][0], p = e[c + r][1]; f > a != p > a && i < ((h - u) * (a - f)) / (p - f) + u && (o = !o); } return o; }; }, {}, ], 255: [ function (t, e, r) { /* * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc * @license MIT * @preserve Project Home: https://github.com/voidqk/polybooljs */ var n, i = t("./lib/build-log"), a = t("./lib/epsilon"), o = t("./lib/intersecter"), s = t("./lib/segment-chainer"), l = t("./lib/segment-selector"), c = t("./lib/geojson"), u = !1, f = a(); function h(t, e, r) { var i = n.segments(t), a = n.segments(e), o = r(n.combine(i, a)); return n.polygon(o); } (n = { buildLog: function (t) { return ( !0 === t ? (u = i()) : !1 === t && (u = !1), !1 !== u && u.list ); }, epsilon: function (t) { return f.epsilon(t); }, segments: function (t) { var e = o(!0, f, u); return ( t.regions.forEach(e.addRegion), { segments: e.calculate(t.inverted), inverted: t.inverted, } ); }, combine: function (t, e) { return { combined: o(!1, f, u).calculate( t.segments, t.inverted, e.segments, e.inverted, ), inverted1: t.inverted, inverted2: e.inverted, }; }, selectUnion: function (t) { return { segments: l.union(t.combined, u), inverted: t.inverted1 || t.inverted2, }; }, selectIntersect: function (t) { return { segments: l.intersect(t.combined, u), inverted: t.inverted1 && t.inverted2, }; }, selectDifference: function (t) { return { segments: l.difference(t.combined, u), inverted: t.inverted1 && !t.inverted2, }; }, selectDifferenceRev: function (t) { return { segments: l.differenceRev(t.combined, u), inverted: !t.inverted1 && t.inverted2, }; }, selectXor: function (t) { return { segments: l.xor(t.combined, u), inverted: t.inverted1 !== t.inverted2, }; }, polygon: function (t) { return { regions: s(t.segments, f, u), inverted: t.inverted, }; }, polygonFromGeoJSON: function (t) { return c.toPolygon(n, t); }, polygonToGeoJSON: function (t) { return c.fromPolygon(n, f, t); }, union: function (t, e) { return h(t, e, n.selectUnion); }, intersect: function (t, e) { return h(t, e, n.selectIntersect); }, difference: function (t, e) { return h(t, e, n.selectDifference); }, differenceRev: function (t, e) { return h(t, e, n.selectDifferenceRev); }, xor: function (t, e) { return h(t, e, n.selectXor); }, }), "object" == typeof window && (window.PolyBool = n), (e.exports = n); }, { "./lib/build-log": 256, "./lib/epsilon": 257, "./lib/geojson": 258, "./lib/intersecter": 259, "./lib/segment-chainer": 261, "./lib/segment-selector": 262, }, ], 256: [ function (t, e, r) { e.exports = function () { var t, e = 0, r = !1; function n(e, r) { return ( t.list.push({ type: e, data: r ? JSON.parse(JSON.stringify(r)) : void 0, }), t ); } return (t = { list: [], segmentId: function () { return e++; }, checkIntersection: function (t, e) { return n("check", { seg1: t, seg2: e }); }, segmentChop: function (t, e) { return ( n("div_seg", { seg: t, pt: e }), n("chop", { seg: t, pt: e }) ); }, statusRemove: function (t) { return n("pop_seg", { seg: t }); }, segmentUpdate: function (t) { return n("seg_update", { seg: t }); }, segmentNew: function (t, e) { return n("new_seg", { seg: t, primary: e }); }, segmentRemove: function (t) { return n("rem_seg", { seg: t }); }, tempStatus: function (t, e, r) { return n("temp_status", { seg: t, above: e, below: r }); }, rewind: function (t) { return n("rewind", { seg: t }); }, status: function (t, e, r) { return n("status", { seg: t, above: e, below: r }); }, vert: function (e) { return e === r ? t : ((r = e), n("vert", { x: e })); }, log: function (t) { return ( "string" != typeof t && (t = JSON.stringify(t, !1, " ")), n("log", { txt: t }) ); }, reset: function () { return n("reset"); }, selected: function (t) { return n("selected", { segs: t }); }, chainStart: function (t) { return n("chain_start", { seg: t }); }, chainRemoveHead: function (t, e) { return n("chain_rem_head", { index: t, pt: e }); }, chainRemoveTail: function (t, e) { return n("chain_rem_tail", { index: t, pt: e }); }, chainNew: function (t, e) { return n("chain_new", { pt1: t, pt2: e }); }, chainMatch: function (t) { return n("chain_match", { index: t }); }, chainClose: function (t) { return n("chain_close", { index: t }); }, chainAddHead: function (t, e) { return n("chain_add_head", { index: t, pt: e }); }, chainAddTail: function (t, e) { return n("chain_add_tail", { index: t, pt: e }); }, chainConnect: function (t, e) { return n("chain_con", { index1: t, index2: e }); }, chainReverse: function (t) { return n("chain_rev", { index: t }); }, chainJoin: function (t, e) { return n("chain_join", { index1: t, index2: e }); }, done: function () { return n("done"); }, }); }; }, {}, ], 257: [ function (t, e, r) { e.exports = function (t) { "number" != typeof t && (t = 1e-10); var e = { epsilon: function (e) { return "number" == typeof e && (t = e), t; }, pointAboveOrOnLine: function (e, r, n) { var i = r[0], a = r[1], o = n[0], s = n[1], l = e[0]; return (o - i) * (e[1] - a) - (s - a) * (l - i) >= -t; }, pointBetween: function (e, r, n) { var i = e[1] - r[1], a = n[0] - r[0], o = e[0] - r[0], s = n[1] - r[1], l = o * a + i * s; return !(l < t) && !(l - (a * a + s * s) > -t); }, pointsSameX: function (e, r) { return Math.abs(e[0] - r[0]) < t; }, pointsSameY: function (e, r) { return Math.abs(e[1] - r[1]) < t; }, pointsSame: function (t, r) { return e.pointsSameX(t, r) && e.pointsSameY(t, r); }, pointsCompare: function (t, r) { return e.pointsSameX(t, r) ? e.pointsSameY(t, r) ? 0 : t[1] < r[1] ? -1 : 1 : t[0] < r[0] ? -1 : 1; }, pointsCollinear: function (e, r, n) { var i = e[0] - r[0], a = e[1] - r[1], o = r[0] - n[0], s = r[1] - n[1]; return Math.abs(i * s - o * a) < t; }, linesIntersect: function (e, r, n, i) { var a = r[0] - e[0], o = r[1] - e[1], s = i[0] - n[0], l = i[1] - n[1], c = a * l - o * s; if (Math.abs(c) < t) return !1; var u = e[0] - n[0], f = e[1] - n[1], h = (s * f - l * u) / c, p = (a * f - o * u) / c, d = { alongA: 0, alongB: 0, pt: [e[0] + h * a, e[1] + h * o], }; return ( (d.alongA = h <= -t ? -2 : h < t ? -1 : h - 1 <= -t ? 0 : h - 1 < t ? 1 : 2), (d.alongB = p <= -t ? -2 : p < t ? -1 : p - 1 <= -t ? 0 : p - 1 < t ? 1 : 2), d ); }, pointInsideRegion: function (e, r) { for ( var n = e[0], i = e[1], a = r[r.length - 1][0], o = r[r.length - 1][1], s = !1, l = 0; l < r.length; l++ ) { var c = r[l][0], u = r[l][1]; u - i > t != o - i > t && ((a - c) * (i - u)) / (o - u) + c - n > t && (s = !s), (a = c), (o = u); } return s; }, }; return e; }; }, {}, ], 258: [ function (t, e, r) { var n = { toPolygon: function (t, e) { function r(e) { if (e.length <= 0) return t.segments({ inverted: !1, regions: [] }); function r(e) { var r = e.slice(0, e.length - 1); return t.segments({ inverted: !1, regions: [r] }); } for (var n = r(e[0]), i = 1; i < e.length; i++) n = t.selectDifference(t.combine(n, r(e[i]))); return n; } if ("Polygon" === e.type) return t.polygon(r(e.coordinates)); if ("MultiPolygon" === e.type) { for ( var n = t.segments({ inverted: !1, regions: [] }), i = 0; i < e.coordinates.length; i++ ) n = t.selectUnion(t.combine(n, r(e.coordinates[i]))); return t.polygon(n); } throw new Error( "PolyBool: Cannot convert GeoJSON object to PolyBool polygon", ); }, fromPolygon: function (t, e, r) { function n(t, r) { return e.pointInsideRegion( [ 0.5 * (t[0][0] + t[1][0]), 0.5 * (t[0][1] + t[1][1]), ], r, ); } function i(t) { return { region: t, children: [] }; } r = t.polygon(t.segments(r)); var a = i(null); function o(t, e) { for (var r = 0; r < t.children.length; r++) { if (n(e, (s = t.children[r]).region)) return void o(s, e); } var a = i(e); for (r = 0; r < t.children.length; r++) { var s; n((s = t.children[r]).region, e) && (a.children.push(s), t.children.splice(r, 1), r--); } t.children.push(a); } for (var s = 0; s < r.regions.length; s++) { var l = r.regions[s]; l.length < 3 || o(a, l); } function c(t, e) { for ( var r = 0, n = t[t.length - 1][0], i = t[t.length - 1][1], a = [], o = 0; o < t.length; o++ ) { var s = t[o][0], l = t[o][1]; a.push([s, l]), (r += l * n - s * i), (n = s), (i = l); } return ( r < 0 !== e && a.reverse(), a.push([a[0][0], a[0][1]]), a ); } var u = []; function f(t) { var e = [c(t.region, !1)]; u.push(e); for (var r = 0; r < t.children.length; r++) e.push(h(t.children[r])); } function h(t) { for (var e = 0; e < t.children.length; e++) f(t.children[e]); return c(t.region, !0); } for (s = 0; s < a.children.length; s++) f(a.children[s]); return u.length <= 0 ? { type: "Polygon", coordinates: [] } : 1 == u.length ? { type: "Polygon", coordinates: u[0] } : { type: "MultiPolygon", coordinates: u }; }, }; e.exports = n; }, {}, ], 259: [ function (t, e, r) { var n = t("./linked-list"); e.exports = function (t, e, r) { function i(t, e, n) { return { id: r ? r.segmentId() : -1, start: t, end: e, myFill: { above: n.myFill.above, below: n.myFill.below, }, otherFill: null, }; } var a = n.create(); function o(t, r) { a.insertBefore(t, function (n) { return ( (function (t, r, n, i, a, o) { var s = e.pointsCompare(r, a); return 0 !== s ? s : e.pointsSame(n, o) ? 0 : t !== i ? t ? 1 : -1 : e.pointAboveOrOnLine( n, i ? a : o, i ? o : a, ) ? 1 : -1; })(t.isStart, t.pt, r, n.isStart, n.pt, n.other.pt) < 0 ); }); } function s(t, e) { var r = (function (t, e) { var r = n.node({ isStart: !0, pt: t.start, seg: t, primary: e, other: null, status: null, }); return o(r, t.end), r; })(t, e); return ( (function (t, e, r) { var i = n.node({ isStart: !1, pt: e.end, seg: e, primary: r, other: t, status: null, }); (t.other = i), o(i, t.pt); })(r, t, e), r ); } function l(t, e) { var n = i(e, t.seg.end, t.seg); return ( (function (t, e) { r && r.segmentChop(t.seg, e), t.other.remove(), (t.seg.end = e), (t.other.pt = e), o(t.other, t.pt); })(t, e), s(n, t.primary) ); } function c(i, o) { var s = n.create(); function c(t) { return s.findTransition(function (r) { var n, i, a, o, s, l; return ( ((n = t), (i = r.ev), (a = n.seg.start), (o = n.seg.end), (s = i.seg.start), (l = i.seg.end), e.pointsCollinear(a, s, l) ? e.pointsCollinear(o, s, l) || e.pointAboveOrOnLine(o, s, l) ? 1 : -1 : e.pointAboveOrOnLine(a, s, l) ? 1 : -1) > 0 ); }); } function u(t, n) { var i = t.seg, a = n.seg, o = i.start, s = i.end, c = a.start, u = a.end; r && r.checkIntersection(i, a); var f = e.linesIntersect(o, s, c, u); if (!1 === f) { if (!e.pointsCollinear(o, s, c)) return !1; if (e.pointsSame(o, u) || e.pointsSame(s, c)) return !1; var h = e.pointsSame(o, c), p = e.pointsSame(s, u); if (h && p) return n; var d = !h && e.pointBetween(o, c, u), m = !p && e.pointBetween(s, c, u); if (h) return m ? l(n, s) : l(t, u), n; d && (p || (m ? l(n, s) : l(t, u)), l(n, o)); } else 0 === f.alongA && (-1 === f.alongB ? l(t, c) : 0 === f.alongB ? l(t, f.pt) : 1 === f.alongB && l(t, u)), 0 === f.alongB && (-1 === f.alongA ? l(n, o) : 0 === f.alongA ? l(n, f.pt) : 1 === f.alongA && l(n, s)); return !1; } for (var f = []; !a.isEmpty(); ) { var h = a.getHead(); if ((r && r.vert(h.pt[0]), h.isStart)) { r && r.segmentNew(h.seg, h.primary); var p = c(h), d = p.before ? p.before.ev : null, m = p.after ? p.after.ev : null; function g() { if (d) { var t = u(h, d); if (t) return t; } return !!m && u(h, m); } r && r.tempStatus(h.seg, !!d && d.seg, !!m && m.seg); var v, y = g(); if (y) { var x; if (t) (x = null === h.seg.myFill.below || h.seg.myFill.above !== h.seg.myFill.below) && (y.seg.myFill.above = !y.seg.myFill.above); else y.seg.otherFill = h.seg.myFill; r && r.segmentUpdate(y.seg), h.other.remove(), h.remove(); } if (a.getHead() !== h) { r && r.rewind(h.seg); continue; } if (t) (x = null === h.seg.myFill.below || h.seg.myFill.above !== h.seg.myFill.below), (h.seg.myFill.below = m ? m.seg.myFill.above : i), (h.seg.myFill.above = x ? !h.seg.myFill.below : h.seg.myFill.below); else if (null === h.seg.otherFill) (v = m ? h.primary === m.primary ? m.seg.otherFill.above : m.seg.myFill.above : h.primary ? o : i), (h.seg.otherFill = { above: v, below: v }); r && r.status(h.seg, !!d && d.seg, !!m && m.seg), (h.other.status = p.insert(n.node({ ev: h }))); } else { var b = h.status; if (null === b) throw new Error( "PolyBool: Zero-length segment detected; your epsilon is probably too small or too large", ); if ( (s.exists(b.prev) && s.exists(b.next) && u(b.prev.ev, b.next.ev), r && r.statusRemove(b.ev.seg), b.remove(), !h.primary) ) { var _ = h.seg.myFill; (h.seg.myFill = h.seg.otherFill), (h.seg.otherFill = _); } f.push(h.seg); } a.getHead().remove(); } return r && r.done(), f; } return t ? { addRegion: function (t) { for ( var n, i, a, o = t[t.length - 1], l = 0; l < t.length; l++ ) { (n = o), (o = t[l]); var c = e.pointsCompare(n, o); 0 !== c && s( ((i = c < 0 ? n : o), (a = c < 0 ? o : n), { id: r ? r.segmentId() : -1, start: i, end: a, myFill: { above: null, below: null }, otherFill: null, }), !0, ); } }, calculate: function (t) { return c(t, !1); }, } : { calculate: function (t, e, r, n) { return ( t.forEach(function (t) { s(i(t.start, t.end, t), !0); }), r.forEach(function (t) { s(i(t.start, t.end, t), !1); }), c(e, n) ); }, }; }; }, { "./linked-list": 260 }, ], 260: [ function (t, e, r) { e.exports = { create: function () { var t = { root: { root: !0, next: null }, exists: function (e) { return null !== e && e !== t.root; }, isEmpty: function () { return null === t.root.next; }, getHead: function () { return t.root.next; }, insertBefore: function (e, r) { for (var n = t.root, i = t.root.next; null !== i; ) { if (r(i)) return ( (e.prev = i.prev), (e.next = i), (i.prev.next = e), void (i.prev = e) ); (n = i), (i = i.next); } (n.next = e), (e.prev = n), (e.next = null); }, findTransition: function (e) { for ( var r = t.root, n = t.root.next; null !== n && !e(n); ) (r = n), (n = n.next); return { before: r === t.root ? null : r, after: n, insert: function (t) { return ( (t.prev = r), (t.next = n), (r.next = t), null !== n && (n.prev = t), t ); }, }; }, }; return t; }, node: function (t) { return ( (t.prev = null), (t.next = null), (t.remove = function () { (t.prev.next = t.next), t.next && (t.next.prev = t.prev), (t.prev = null), (t.next = null); }), t ); }, }; }, {}, ], 261: [ function (t, e, r) { e.exports = function (t, e, r) { var n = [], i = []; return ( t.forEach(function (t) { var a = t.start, o = t.end; if (e.pointsSame(a, o)) console.warn( "PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large", ); else { r && r.chainStart(t); for ( var s = { index: 0, matches_head: !1, matches_pt1: !1, }, l = { index: 0, matches_head: !1, matches_pt1: !1, }, c = s, u = 0; u < n.length; u++ ) { var f = (g = n[u])[0], h = (g[1], g[g.length - 1]); g[g.length - 2]; if (e.pointsSame(f, a)) { if (k(u, !0, !0)) break; } else if (e.pointsSame(f, o)) { if (k(u, !0, !1)) break; } else if (e.pointsSame(h, a)) { if (k(u, !1, !0)) break; } else if (e.pointsSame(h, o) && k(u, !1, !1)) break; } if (c === s) return n.push([a, o]), void (r && r.chainNew(a, o)); if (c === l) { r && r.chainMatch(s.index); var p = s.index, d = s.matches_pt1 ? o : a, m = s.matches_head, g = n[p], v = m ? g[0] : g[g.length - 1], y = m ? g[1] : g[g.length - 2], x = m ? g[g.length - 1] : g[0], b = m ? g[g.length - 2] : g[1]; return ( e.pointsCollinear(y, v, d) && (m ? (r && r.chainRemoveHead(s.index, d), g.shift()) : (r && r.chainRemoveTail(s.index, d), g.pop()), (v = y)), e.pointsSame(x, d) ? (n.splice(p, 1), e.pointsCollinear(b, x, v) && (m ? (r && r.chainRemoveTail(s.index, v), g.pop()) : (r && r.chainRemoveHead(s.index, v), g.shift())), r && r.chainClose(s.index), void i.push(g)) : void (m ? (r && r.chainAddHead(s.index, d), g.unshift(d)) : (r && r.chainAddTail(s.index, d), g.push(d))) ); } var _ = s.index, w = l.index; r && r.chainConnect(_, w); var T = n[_].length < n[w].length; s.matches_head ? l.matches_head ? T ? (A(_), M(_, w)) : (A(w), M(w, _)) : M(w, _) : l.matches_head ? M(_, w) : T ? (A(_), M(w, _)) : (A(w), M(_, w)); } function k(t, e, r) { return ( (c.index = t), (c.matches_head = e), (c.matches_pt1 = r), c === s ? ((c = l), !1) : ((c = null), !0) ); } function A(t) { r && r.chainReverse(t), n[t].reverse(); } function M(t, i) { var a = n[t], o = n[i], s = a[a.length - 1], l = a[a.length - 2], c = o[0], u = o[1]; e.pointsCollinear(l, s, c) && (r && r.chainRemoveTail(t, s), a.pop(), (s = l)), e.pointsCollinear(s, c, u) && (r && r.chainRemoveHead(i, c), o.shift()), r && r.chainJoin(t, i), (n[t] = a.concat(o)), n.splice(i, 1); } }), i ); }; }, {}, ], 262: [ function (t, e, r) { function n(t, e, r) { var n = []; return ( t.forEach(function (t) { var i = (t.myFill.above ? 8 : 0) + (t.myFill.below ? 4 : 0) + (t.otherFill && t.otherFill.above ? 2 : 0) + (t.otherFill && t.otherFill.below ? 1 : 0); 0 !== e[i] && n.push({ id: r ? r.segmentId() : -1, start: t.start, end: t.end, myFill: { above: 1 === e[i], below: 2 === e[i] }, otherFill: null, }); }), r && r.selected(n), n ); } var i = { union: function (t, e) { return n( t, [0, 2, 1, 0, 2, 2, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0], e, ); }, intersect: function (t, e) { return n( t, [0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 1, 1, 0, 2, 1, 0], e, ); }, difference: function (t, e) { return n( t, [0, 0, 0, 0, 2, 0, 2, 0, 1, 1, 0, 0, 0, 1, 2, 0], e, ); }, differenceRev: function (t, e) { return n( t, [0, 2, 1, 0, 0, 0, 1, 1, 0, 2, 0, 2, 0, 0, 0, 0], e, ); }, xor: function (t, e) { return n( t, [0, 2, 1, 0, 2, 0, 0, 1, 1, 0, 0, 2, 0, 1, 2, 0], e, ); }, }; e.exports = i; }, {}, ], 263: [ function (t, e, r) { "use strict"; var n = t("stream").Transform, i = t("stream-parser"); function a() { n.call(this, { readableObjectMode: !0 }); } function o(t, e, r) { Error.call(this), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : (this.stack = new Error().stack || ""), (this.name = this.constructor.name), (this.message = t), e && (this.code = e), r && (this.statusCode = r); } (a.prototype = Object.create(n.prototype)), (a.prototype.constructor = a), i(a.prototype), (r.ParserStream = a), (r.sliceEq = function (t, e, r) { for (var n = e, i = 0; i < r.length; ) if (t[n++] !== r[i++]) return !1; return !0; }), (r.str2arr = function (t, e) { var r = [], n = 0; if (e && "hex" === e) for (; n < t.length; ) r.push(parseInt(t.slice(n, n + 2), 16)), (n += 2); else for (; n < t.length; n++) r.push(255 & t.charCodeAt(n)); return r; }), (r.readUInt16LE = function (t, e) { return t[e] | (t[e + 1] << 8); }), (r.readUInt16BE = function (t, e) { return t[e + 1] | (t[e] << 8); }), (r.readUInt32LE = function (t, e) { return ( t[e] | (t[e + 1] << 8) | (t[e + 2] << 16) | (16777216 * t[e + 3]) ); }), (r.readUInt32BE = function (t, e) { return ( t[e + 3] | (t[e + 2] << 8) | (t[e + 1] << 16) | (16777216 * t[e]) ); }), (o.prototype = Object.create(Error.prototype)), (o.prototype.constructor = o), (r.ProbeError = o); }, { stream: 286, "stream-parser": 302 }, ], 264: [ function (t, e, r) { "use strict"; function n(t, e) { var r = new Error(t); return (r.code = e), r; } function i(t) { try { return decodeURIComponent(escape(t)); } catch (e) { return t; } } function a(t, e, r) { (this.input = t.subarray(e, r)), (this.start = e); var i = String.fromCharCode.apply( null, this.input.subarray(0, 4), ); if ("II*\0" !== i && "MM\0*" !== i) throw n("invalid TIFF signature", "EBADDATA"); this.big_endian = "M" === i[0]; } (a.prototype.each = function (t) { this.aborted = !1; var e = this.read_uint32(4); for ( this.ifds_to_read = [{ id: 0, offset: e }]; this.ifds_to_read.length > 0 && !this.aborted; ) { var r = this.ifds_to_read.shift(); r.offset && this.scan_ifd(r.id, r.offset, t); } }), (a.prototype.read_uint16 = function (t) { var e = this.input; if (t + 2 > e.length) throw n("unexpected EOF", "EBADDATA"); return this.big_endian ? 256 * e[t] + e[t + 1] : e[t] + 256 * e[t + 1]; }), (a.prototype.read_uint32 = function (t) { var e = this.input; if (t + 4 > e.length) throw n("unexpected EOF", "EBADDATA"); return this.big_endian ? 16777216 * e[t] + 65536 * e[t + 1] + 256 * e[t + 2] + e[t + 3] : e[t] + 256 * e[t + 1] + 65536 * e[t + 2] + 16777216 * e[t + 3]; }), (a.prototype.is_subifd_link = function (t, e) { return ( (0 === t && 34665 === e) || (0 === t && 34853 === e) || (34665 === t && 40965 === e) ); }), (a.prototype.exif_format_length = function (t) { switch (t) { case 1: case 2: case 6: case 7: return 1; case 3: case 8: return 2; case 4: case 9: case 11: return 4; case 5: case 10: case 12: return 8; default: return 0; } }), (a.prototype.exif_format_read = function (t, e) { var r; switch (t) { case 1: case 2: return (r = this.input[e]); case 6: return (r = this.input[e]) | (33554430 * (128 & r)); case 3: return (r = this.read_uint16(e)); case 8: return ( (r = this.read_uint16(e)) | (131070 * (32768 & r)) ); case 4: return (r = this.read_uint32(e)); case 9: return 0 | (r = this.read_uint32(e)); case 5: case 10: case 11: case 12: case 7: default: return null; } }), (a.prototype.scan_ifd = function (t, e, r) { var a = this.read_uint16(e); e += 2; for (var o = 0; o < a; o++) { var s = this.read_uint16(e), l = this.read_uint16(e + 2), c = this.read_uint32(e + 4), u = this.exif_format_length(l), f = c * u, h = f <= 4 ? e + 8 : this.read_uint32(e + 8), p = !1; if (h + f > this.input.length) throw n("unexpected EOF", "EBADDATA"); for (var d = [], m = h, g = 0; g < c; g++, m += u) { var v = this.exif_format_read(l, m); if (null === v) { d = null; break; } d.push(v); } if ( (Array.isArray(d) && 2 === l && (d = i(String.fromCharCode.apply(null, d))) && "\0" === d[d.length - 1] && (d = d.slice(0, -1)), this.is_subifd_link(t, s) && Array.isArray(d) && Number.isInteger(d[0]) && d[0] > 0 && (this.ifds_to_read.push({ id: s, offset: d[0] }), (p = !0)), !1 === r({ is_big_endian: this.big_endian, ifd: t, tag: s, format: l, count: c, entry_offset: e + this.start, data_length: f, data_offset: h + this.start, value: d, is_subifd_link: p, })) ) return void (this.aborted = !0); e += 12; } 0 === t && this.ifds_to_read.push({ id: 1, offset: this.read_uint32(e), }); }), (e.exports.ExifParser = a), (e.exports.get_orientation = function (t) { var e = 0; try { return ( new a(t, 0, t.length).each(function (t) { if ( 0 === t.ifd && 274 === t.tag && Array.isArray(t.value) ) return (e = t.value[0]), !1; }), e ); } catch (t) { return -1; } }); }, {}, ], 265: [ function (t, e, r) { "use strict"; var n = t("./common").readUInt16BE, i = t("./common").readUInt32BE; function a(t, e) { if (t.length < 4 + e) return null; var r = i(t, e); return t.length < r + e || r < 8 ? null : { boxtype: String.fromCharCode.apply( null, t.slice(e + 4, e + 8), ), data: t.slice(e + 8, e + r), end: e + r, }; } function o(t, e) { for (var r = 0; ; ) { var n = a(t, r); if (!n) break; switch (n.boxtype) { case "ispe": e.sizes.push({ width: i(n.data, 4), height: i(n.data, 8), }); break; case "irot": e.transforms.push({ type: "irot", value: 3 & n.data[0], }); break; case "imir": e.transforms.push({ type: "imir", value: 1 & n.data[0], }); } r = n.end; } } function s(t, e, r) { for (var n = 0, i = 0; i < r; i++) n = 256 * n + (t[e + i] || 0); return n; } function l(t, e) { for ( var r = (t[4] >> 4) & 15, i = 15 & t[4], a = (t[5] >> 4) & 15, o = n(t, 6), l = 8, c = 0; c < o; c++ ) { var u = n(t, l), f = n(t, (l += 2)), h = s(t, (l += 2), a), p = n(t, (l += a)); if (((l += 2), 0 === f && 1 === p)) { var d = s(t, l, r), m = s(t, l + r, i); e.item_loc[u] = { length: m, offset: d + h }; } l += p * (r + i); } } function c(t, e) { for (var r = n(t, 4), i = 6, o = 0; o < r; o++) { var s = a(t, i); if (!s) break; if ("infe" === s.boxtype) { for ( var l = n(s.data, 4), c = "", u = 8; u < s.data.length && s.data[u]; u++ ) c += String.fromCharCode(s.data[u]); e.item_inf[c] = l; } i = s.end; } } function u(t, e) { for (var r = 0; ; ) { var n = a(t, r); if (!n) break; "ipco" === n.boxtype && o(n.data, e), (r = n.end); } } (e.exports.unbox = a), (e.exports.readSizeFromMeta = function (t) { var e = { sizes: [], transforms: [], item_inf: {}, item_loc: {}, }; if ( ((function (t, e) { for (var r = 4; ; ) { var n = a(t, r); if (!n) break; "iprp" === n.boxtype && u(n.data, e), "iloc" === n.boxtype && l(n.data, e), "iinf" === n.boxtype && c(n.data, e), (r = n.end); } })(t, e), e.sizes.length) ) { var r, n, i, o = ((r = e.sizes), (n = r.reduce(function (t, e) { return t.width > e.width || (t.width === e.width && t.height > e.height) ? t : e; })), (i = r.reduce(function (t, e) { return t.height > e.height || (t.height === e.height && t.width > e.width) ? t : e; })), n.width > i.height || (n.width === i.height && n.height > i.width) ? n : i), s = 1; e.transforms.forEach(function (t) { var e = { 1: 6, 2: 5, 3: 8, 4: 7, 5: 4, 6: 3, 7: 2, 8: 1, }, r = { 1: 4, 2: 3, 3: 2, 4: 1, 5: 6, 6: 5, 7: 8, 8: 7, }; if ( ("imir" === t.type && (s = 0 === t.value ? r[s] : e[(s = e[(s = r[s])])]), "irot" === t.type) ) for (var n = 0; n < t.value; n++) s = e[s]; }); var f = null; return ( e.item_inf.Exif && (f = e.item_loc[e.item_inf.Exif]), { width: o.width, height: o.height, orientation: e.transforms.length ? s : null, variants: e.sizes, exif_location: f, } ); } }), (e.exports.getMimeType = function (t) { var e = String.fromCharCode.apply(null, t.slice(0, 4)), r = {}; r[e] = !0; for (var n = 8; n < t.length; n += 4) r[String.fromCharCode.apply(null, t.slice(n, n + 4))] = !0; if (r.mif1 || r.msf1 || r.miaf) return "avif" === e || "avis" === e || "avio" === e ? { type: "avif", mime: "image/avif" } : "heic" === e || "heix" === e ? { type: "heic", mime: "image/heic" } : "hevc" === e || "hevx" === e ? { type: "heic", mime: "image/heic-sequence" } : r.avif || r.avis ? { type: "avif", mime: "image/avif" } : r.heic || r.heix || r.hevc || r.hevx || r.heis ? r.msf1 ? { type: "heif", mime: "image/heif-sequence", } : { type: "heif", mime: "image/heif" } : { type: "avif", mime: "image/avif" }; }); }, { "./common": 263 }, ], 266: [ function (t, e, r) { "use strict"; var n = t("../common").str2arr, i = t("../common").sliceEq, a = t("../common").readUInt32BE, o = t("../miaf_utils"), s = t("../exif_utils"), l = n("ftyp"); e.exports = function (t) { if (i(t, 4, l)) { var e = o.unbox(t, 0); if (e) { var r = o.getMimeType(e.data); if (r) { for (var n, c = e.end; ; ) { var u = o.unbox(t, c); if (!u) break; if (((c = u.end), "mdat" === u.boxtype)) return; if ("meta" === u.boxtype) { n = u.data; break; } } if (n) { var f = o.readSizeFromMeta(n); if (f) { var h = { width: f.width, height: f.height, type: r.type, mime: r.mime, wUnits: "px", hUnits: "px", }; if ( (f.variants.length > 1 && (h.variants = f.variants), f.orientation && (h.orientation = f.orientation), f.exif_location && f.exif_location.offset + f.exif_location.length <= t.length) ) { var p = a(t, f.exif_location.offset), d = t.slice( f.exif_location.offset + p + 4, f.exif_location.offset + f.exif_location.length, ), m = s.get_orientation(d); m > 0 && (h.orientation = m); } return h; } } } } } }; }, { "../common": 263, "../exif_utils": 264, "../miaf_utils": 265, }, ], 267: [ function (t, e, r) { "use strict"; var n = t("../common").str2arr, i = t("../common").sliceEq, a = t("../common").readUInt16LE, o = n("BM"); e.exports = function (t) { if (!(t.length < 26) && i(t, 0, o)) return { width: a(t, 18), height: a(t, 22), type: "bmp", mime: "image/bmp", wUnits: "px", hUnits: "px", }; }; }, { "../common": 263 }, ], 268: [ function (t, e, r) { "use strict"; var n = t("../common").str2arr, i = t("../common").sliceEq, a = t("../common").readUInt16LE, o = n("GIF87a"), s = n("GIF89a"); e.exports = function (t) { if (!(t.length < 10) && (i(t, 0, o) || i(t, 0, s))) return { width: a(t, 6), height: a(t, 8), type: "gif", mime: "image/gif", wUnits: "px", hUnits: "px", }; }; }, { "../common": 263 }, ], 269: [ function (t, e, r) { "use strict"; var n = t("../common").readUInt16LE; e.exports = function (t) { var e = n(t, 0), r = n(t, 2), i = n(t, 4); if (0 === e && 1 === r && i) { for ( var a = [], o = { width: 0, height: 0 }, s = 0; s < i; s++ ) { var l = t[6 + 16 * s] || 256, c = t[6 + 16 * s + 1] || 256, u = { width: l, height: c }; a.push(u), (l > o.width || c > o.height) && (o = u); } return { width: o.width, height: o.height, variants: a, type: "ico", mime: "image/x-icon", wUnits: "px", hUnits: "px", }; } }; }, { "../common": 263 }, ], 270: [ function (t, e, r) { "use strict"; var n = t("../common").readUInt16BE, i = t("../common").str2arr, a = t("../common").sliceEq, o = t("../exif_utils"), s = i("Exif\0\0"); e.exports = function (t) { if ( !(t.length < 2) && 255 === t[0] && 216 === t[1] && 255 === t[2] ) for (var e = 2; ; ) { for (;;) { if (t.length - e < 2) return; if (255 === t[e++]) break; } for (var r, i, l = t[e++]; 255 === l; ) l = t[e++]; if ((208 <= l && l <= 217) || 1 === l) r = 0; else { if (!(192 <= l && l <= 254)) return; if (t.length - e < 2) return; (r = n(t, e) - 2), (e += 2); } if (217 === l || 218 === l) return; if ( (225 === l && r >= 10 && a(t, e, s) && (i = o.get_orientation(t.slice(e + 6, e + r))), r >= 5 && 192 <= l && l <= 207 && 196 !== l && 200 !== l && 204 !== l) ) { if (t.length - e < r) return; var c = { width: n(t, e + 3), height: n(t, e + 1), type: "jpg", mime: "image/jpeg", wUnits: "px", hUnits: "px", }; return i > 0 && (c.orientation = i), c; } e += r; } }; }, { "../common": 263, "../exif_utils": 264 }, ], 271: [ function (t, e, r) { "use strict"; var n = t("../common").str2arr, i = t("../common").sliceEq, a = t("../common").readUInt32BE, o = n("\x89PNG\r\n\x1a\n"), s = n("IHDR"); e.exports = function (t) { if (!(t.length < 24) && i(t, 0, o) && i(t, 12, s)) return { width: a(t, 16), height: a(t, 20), type: "png", mime: "image/png", wUnits: "px", hUnits: "px", }; }; }, { "../common": 263 }, ], 272: [ function (t, e, r) { "use strict"; var n = t("../common").str2arr, i = t("../common").sliceEq, a = t("../common").readUInt32BE, o = n("8BPS\0\x01"); e.exports = function (t) { if (!(t.length < 22) && i(t, 0, o)) return { width: a(t, 18), height: a(t, 14), type: "psd", mime: "image/vnd.adobe.photoshop", wUnits: "px", hUnits: "px", }; }; }, { "../common": 263 }, ], 273: [ function (t, e, r) { "use strict"; function n(t) { return "number" == typeof t && isFinite(t) && t > 0; } var i = /<[-_.:a-zA-Z0-9][^>]*>/, a = /^<([-_.:a-zA-Z0-9]+:)?svg\s/, o = /[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/, s = /\bheight="([^%]+?)"|\bheight='([^%]+?)'/, l = /\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/, c = /in$|mm$|cm$|pt$|pc$|px$|em$|ex$/; function u(t) { return c.test(t) ? t.match(c)[0] : "px"; } e.exports = function (t) { if ( (function (t) { var e, r = 0, n = t.length; for ( 239 === t[0] && 187 === t[1] && 191 === t[2] && (r = 3); r < n && (32 === (e = t[r]) || 9 === e || 13 === e || 10 === e); ) r++; return r !== n && 60 === t[r]; })(t) ) { for (var e = "", r = 0; r < t.length; r++) e += String.fromCharCode(t[r]); var c = (e.match(i) || [""])[0]; if (a.test(c)) { var f = (function (t) { var e = t.match(o), r = t.match(s), n = t.match(l); return { width: e && (e[1] || e[2]), height: r && (r[1] || r[2]), viewbox: n && (n[1] || n[2]), }; })(c), h = parseFloat(f.width), p = parseFloat(f.height); if (f.width && f.height) { if (!n(h) || !n(p)) return; return { width: h, height: p, type: "svg", mime: "image/svg+xml", wUnits: u(f.width), hUnits: u(f.height), }; } var d = (f.viewbox || "").split(" "), m = { width: d[2], height: d[3] }, g = parseFloat(m.width), v = parseFloat(m.height); if (n(g) && n(v) && u(m.width) === u(m.height)) { var y = g / v; if (f.width) { if (!n(h)) return; return { width: h, height: h / y, type: "svg", mime: "image/svg+xml", wUnits: u(f.width), hUnits: u(f.width), }; } if (f.height) { if (!n(p)) return; return { width: p * y, height: p, type: "svg", mime: "image/svg+xml", wUnits: u(f.height), hUnits: u(f.height), }; } return { width: g, height: v, type: "svg", mime: "image/svg+xml", wUnits: u(m.width), hUnits: u(m.height), }; } } } }; }, {}, ], 274: [ function (t, e, r) { "use strict"; var n = t("../common").str2arr, i = t("../common").sliceEq, a = t("../common").readUInt16LE, o = t("../common").readUInt16BE, s = t("../common").readUInt32LE, l = t("../common").readUInt32BE, c = n("II*\0"), u = n("MM\0*"); function f(t, e, r) { return r ? o(t, e) : a(t, e); } function h(t, e, r) { return r ? l(t, e) : s(t, e); } function p(t, e, r) { var n = f(t, e + 2, r); return 1 !== h(t, e + 4, r) || (3 !== n && 4 !== n) ? null : 3 === n ? f(t, e + 8, r) : h(t, e + 8, r); } e.exports = function (t) { if (!(t.length < 8) && (i(t, 0, c) || i(t, 0, u))) { var e = 77 === t[0], r = h(t, 4, e) - 8; if (!(r < 0)) { var n = r + 8; if (!(t.length - n < 2)) { var a = 12 * f(t, n + 0, e); if (!(a <= 0 || ((n += 2), t.length - n < a))) { var o, s, l, d; for (o = 0; o < a; o += 12) 256 === (d = f(t, n + o, e)) ? (s = p(t, n + o, e)) : 257 === d && (l = p(t, n + o, e)); return s && l ? { width: s, height: l, type: "tiff", mime: "image/tiff", wUnits: "px", hUnits: "px", } : void 0; } } } } }; }, { "../common": 263 }, ], 275: [ function (t, e, r) { "use strict"; var n = t("../common").str2arr, i = t("../common").sliceEq, a = t("../common").readUInt16LE, o = t("../common").readUInt32LE, s = t("../exif_utils"), l = n("RIFF"), c = n("WEBP"); function u(t, e) { if (157 === t[e + 3] && 1 === t[e + 4] && 42 === t[e + 5]) return { width: 16383 & a(t, e + 6), height: 16383 & a(t, e + 8), type: "webp", mime: "image/webp", wUnits: "px", hUnits: "px", }; } function f(t, e) { if (47 === t[e]) { var r = o(t, e + 1); return { width: 1 + (16383 & r), height: 1 + ((r >> 14) & 16383), type: "webp", mime: "image/webp", wUnits: "px", hUnits: "px", }; } } function h(t, e) { return { width: 1 + ((t[e + 6] << 16) | (t[e + 5] << 8) | t[e + 4]), height: 1 + ((t[e + 9] << e) | (t[e + 8] << 8) | t[e + 7]), type: "webp", mime: "image/webp", wUnits: "px", hUnits: "px", }; } e.exports = function (t) { if (!(t.length < 16) && (i(t, 0, l) || i(t, 8, c))) { var e = 12, r = null, n = 0, a = o(t, 4) + 8; if (!(a > t.length)) { for (; e + 8 < a; ) if (0 !== t[e]) { var p = String.fromCharCode.apply( null, t.slice(e, e + 4), ), d = o(t, e + 4); "VP8 " === p && d >= 10 ? (r = r || u(t, e + 8)) : "VP8L" === p && d >= 9 ? (r = r || f(t, e + 8)) : "VP8X" === p && d >= 10 ? (r = r || h(t, e + 8)) : "EXIF" === p && ((n = s.get_orientation( t.slice(e + 8, e + 8 + d), )), (e = 1 / 0)), (e += 8 + d); } else e++; if (r) return n > 0 && (r.orientation = n), r; } } }; }, { "../common": 263, "../exif_utils": 264 }, ], 276: [ function (t, e, r) { "use strict"; e.exports = { avif: t("./parse_sync/avif"), bmp: t("./parse_sync/bmp"), gif: t("./parse_sync/gif"), ico: t("./parse_sync/ico"), jpeg: t("./parse_sync/jpeg"), png: t("./parse_sync/png"), psd: t("./parse_sync/psd"), svg: t("./parse_sync/svg"), tiff: t("./parse_sync/tiff"), webp: t("./parse_sync/webp"), }; }, { "./parse_sync/avif": 266, "./parse_sync/bmp": 267, "./parse_sync/gif": 268, "./parse_sync/ico": 269, "./parse_sync/jpeg": 270, "./parse_sync/png": 271, "./parse_sync/psd": 272, "./parse_sync/svg": 273, "./parse_sync/tiff": 274, "./parse_sync/webp": 275, }, ], 277: [ function (t, e, r) { "use strict"; var n = t("./lib/parsers_sync"); (e.exports = function (t) { return (function (t) { for (var e = Object.keys(n), r = 0; r < e.length; r++) { var i = n[e[r]](t); if (i) return i; } return null; })(t); }), (e.exports.parsers = n); }, { "./lib/parsers_sync": 276 }, ], 278: [ function (t, e, r) { var n, i, a = (e.exports = {}); function o() { throw new Error("setTimeout has not been defined"); } function s() { throw new Error("clearTimeout has not been defined"); } function l(t) { if (n === setTimeout) return setTimeout(t, 0); if ((n === o || !n) && setTimeout) return (n = setTimeout), setTimeout(t, 0); try { return n(t, 0); } catch (e) { try { return n.call(null, t, 0); } catch (e) { return n.call(this, t, 0); } } } !(function () { try { n = "function" == typeof setTimeout ? setTimeout : o; } catch (t) { n = o; } try { i = "function" == typeof clearTimeout ? clearTimeout : s; } catch (t) { i = s; } })(); var c, u = [], f = !1, h = -1; function p() { f && c && ((f = !1), c.length ? (u = c.concat(u)) : (h = -1), u.length && d()); } function d() { if (!f) { var t = l(p); f = !0; for (var e = u.length; e; ) { for (c = u, u = []; ++h < e; ) c && c[h].run(); (h = -1), (e = u.length); } (c = null), (f = !1), (function (t) { if (i === clearTimeout) return clearTimeout(t); if ((i === s || !i) && clearTimeout) return (i = clearTimeout), clearTimeout(t); try { i(t); } catch (e) { try { return i.call(null, t); } catch (e) { return i.call(this, t); } } })(t); } } function m(t, e) { (this.fun = t), (this.array = e); } function g() {} (a.nextTick = function (t) { var e = new Array(arguments.length - 1); if (arguments.length > 1) for (var r = 1; r < arguments.length; r++) e[r - 1] = arguments[r]; u.push(new m(t, e)), 1 !== u.length || f || l(d); }), (m.prototype.run = function () { this.fun.apply(null, this.array); }), (a.title = "browser"), (a.browser = !0), (a.env = {}), (a.argv = []), (a.version = ""), (a.versions = {}), (a.on = g), (a.addListener = g), (a.once = g), (a.off = g), (a.removeListener = g), (a.removeAllListeners = g), (a.emit = g), (a.prependListener = g), (a.prependOnceListener = g), (a.listeners = function (t) { return []; }), (a.binding = function (t) { throw new Error("process.binding is not supported"); }), (a.cwd = function () { return "/"; }), (a.chdir = function (t) { throw new Error("process.chdir is not supported"); }), (a.umask = function () { return 0; }); }, {}, ], 279: [ function (t, e, r) { (function (r) { (function () { for ( var n = t("performance-now"), i = "undefined" == typeof window ? r : window, a = ["moz", "webkit"], o = "AnimationFrame", s = i["request" + o], l = i["cancel" + o] || i["cancelRequest" + o], c = 0; !s && c < a.length; c++ ) (s = i[a[c] + "Request" + o]), (l = i[a[c] + "Cancel" + o] || i[a[c] + "CancelRequest" + o]); if (!s || !l) { var u = 0, f = 0, h = []; (s = function (t) { if (0 === h.length) { var e = n(), r = Math.max(0, 1e3 / 60 - (e - u)); (u = r + e), setTimeout(function () { var t = h.slice(0); h.length = 0; for (var e = 0; e < t.length; e++) if (!t[e].cancelled) try { t[e].callback(u); } catch (t) { setTimeout(function () { throw t; }, 0); } }, Math.round(r)); } return ( h.push({ handle: ++f, callback: t, cancelled: !1 }), f ); }), (l = function (t) { for (var e = 0; e < h.length; e++) h[e].handle === t && (h[e].cancelled = !0); }); } (e.exports = function (t) { return s.call(i, t); }), (e.exports.cancel = function () { l.apply(i, arguments); }), (e.exports.polyfill = function (t) { t || (t = i), (t.requestAnimationFrame = s), (t.cancelAnimationFrame = l); }); }).call(this); }).call( this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, ); }, { "performance-now": 252 }, ], 280: [ function (t, e, r) { "use strict"; var n = t("array-bounds"), i = t("color-normalize"), a = t("update-diff"), o = t("pick-by-alias"), s = t("object-assign"), l = t("flatten-vertex-data"), c = t("to-float32"), u = c.float32, f = c.fract32; e.exports = function (t, e) { "function" == typeof t ? (e || (e = {}), (e.regl = t)) : (e = t); e.length && (e.positions = e); if (!(t = e.regl).hasExtension("ANGLE_instanced_arrays")) throw Error( "regl-error2d: `ANGLE_instanced_arrays` extension should be enabled", ); var r, c, p, d, m, g, v = t._gl, y = { color: "black", capSize: 5, lineWidth: 1, opacity: 1, viewport: null, range: null, offset: 0, count: 0, bounds: null, positions: [], errors: [], }, x = []; return ( (d = t.buffer({ usage: "dynamic", type: "uint8", data: new Uint8Array(0), })), (c = t.buffer({ usage: "dynamic", type: "float", data: new Uint8Array(0), })), (p = t.buffer({ usage: "dynamic", type: "float", data: new Uint8Array(0), })), (m = t.buffer({ usage: "dynamic", type: "float", data: new Uint8Array(0), })), (g = t.buffer({ usage: "static", type: "float", data: h, })), T(e), (r = t({ vert: "\n\t\tprecision highp float;\n\n\t\tattribute vec2 position, positionFract;\n\t\tattribute vec4 error;\n\t\tattribute vec4 color;\n\n\t\tattribute vec2 direction, lineOffset, capOffset;\n\n\t\tuniform vec4 viewport;\n\t\tuniform float lineWidth, capSize;\n\t\tuniform vec2 scale, scaleFract, translate, translateFract;\n\n\t\tvarying vec4 fragColor;\n\n\t\tvoid main() {\n\t\t\tfragColor = color / 255.;\n\n\t\t\tvec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset;\n\n\t\t\tvec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw;\n\n\t\t\tvec2 position = position + dxy;\n\n\t\t\tvec2 pos = (position + translate) * scale\n\t\t\t\t+ (positionFract + translateFract) * scale\n\t\t\t\t+ (position + translate) * scaleFract\n\t\t\t\t+ (positionFract + translateFract) * scaleFract;\n\n\t\t\tpos += pixelOffset / viewport.zw;\n\n\t\t\tgl_Position = vec4(pos * 2. - 1., 0, 1);\n\t\t}\n\t\t", frag: "\n\t\tprecision highp float;\n\n\t\tvarying vec4 fragColor;\n\n\t\tuniform float opacity;\n\n\t\tvoid main() {\n\t\t\tgl_FragColor = fragColor;\n\t\t\tgl_FragColor.a *= opacity;\n\t\t}\n\t\t", uniforms: { range: t.prop("range"), lineWidth: t.prop("lineWidth"), capSize: t.prop("capSize"), opacity: t.prop("opacity"), scale: t.prop("scale"), translate: t.prop("translate"), scaleFract: t.prop("scaleFract"), translateFract: t.prop("translateFract"), viewport: function (t, e) { return [ e.viewport.x, e.viewport.y, t.viewportWidth, t.viewportHeight, ]; }, }, attributes: { color: { buffer: d, offset: function (t, e) { return 4 * e.offset; }, divisor: 1, }, position: { buffer: c, offset: function (t, e) { return 8 * e.offset; }, divisor: 1, }, positionFract: { buffer: p, offset: function (t, e) { return 8 * e.offset; }, divisor: 1, }, error: { buffer: m, offset: function (t, e) { return 16 * e.offset; }, divisor: 1, }, direction: { buffer: g, stride: 24, offset: 0 }, lineOffset: { buffer: g, stride: 24, offset: 8 }, capOffset: { buffer: g, stride: 24, offset: 16 }, }, primitive: "triangles", blend: { enable: !0, color: [0, 0, 0, 0], equation: { rgb: "add", alpha: "add" }, func: { srcRGB: "src alpha", dstRGB: "one minus src alpha", srcAlpha: "one minus dst alpha", dstAlpha: "one", }, }, depth: { enable: !1 }, scissor: { enable: !0, box: t.prop("viewport") }, viewport: t.prop("viewport"), stencil: !1, instances: t.prop("count"), count: h.length, })), s(b, { update: T, draw: _, destroy: k, regl: t, gl: v, canvas: v.canvas, groups: x, }), b ); function b(t) { t ? T(t) : null === t && k(), _(); } function _(e) { if ("number" == typeof e) return w(e); e && !Array.isArray(e) && (e = [e]), t._refresh(), x.forEach(function (t, r) { t && (e && (e[r] ? (t.draw = !0) : (t.draw = !1)), t.draw ? w(r) : (t.draw = !0)); }); } function w(t) { "number" == typeof t && (t = x[t]), null != t && t && t.count && t.color && t.opacity && t.positions && t.positions.length > 1 && ((t.scaleRatio = [ t.scale[0] * t.viewport.width, t.scale[1] * t.viewport.height, ]), r(t), t.after && t.after(t)); } function T(t) { if (t) { null != t.length ? "number" == typeof t[0] && (t = [{ positions: t }]) : Array.isArray(t) || (t = [t]); var e = 0, r = 0; if ( ((b.groups = x = t.map(function (t, c) { var u = x[c]; return t ? ("function" == typeof t ? (t = { after: t }) : "number" == typeof t[0] && (t = { positions: t }), (t = o(t, { color: "color colors fill", capSize: "capSize cap capsize cap-size", lineWidth: "lineWidth line-width width line thickness", opacity: "opacity alpha", range: "range dataBox", viewport: "viewport viewBox", errors: "errors error", positions: "positions position data points", })), u || ((x[c] = u = { id: c, scale: null, translate: null, scaleFract: null, translateFract: null, draw: !0, }), (t = s({}, y, t))), a(u, t, [ { lineWidth: function (t) { return 0.5 * +t; }, capSize: function (t) { return 0.5 * +t; }, opacity: parseFloat, errors: function (t) { return (t = l(t)), (r += t.length), t; }, positions: function (t, r) { return ( (t = l(t, "float64")), (r.count = Math.floor(t.length / 2)), (r.bounds = n(t, 2)), (r.offset = e), (e += r.count), t ); }, }, { color: function (t, e) { var r = e.count; if ( (t || (t = "transparent"), !Array.isArray(t) || "number" == typeof t[0]) ) { var n = t; t = Array(r); for (var a = 0; a < r; a++) t[a] = n; } if (t.length < r) throw Error("Not enough colors"); for ( var o = new Uint8Array(4 * r), s = 0; s < r; s++ ) { var l = i(t[s], "uint8"); o.set(l, 4 * s); } return o; }, range: function (t, e, r) { var n = e.bounds; return ( t || (t = n), (e.scale = [ 1 / (t[2] - t[0]), 1 / (t[3] - t[1]), ]), (e.translate = [-t[0], -t[1]]), (e.scaleFract = f(e.scale)), (e.translateFract = f(e.translate)), t ); }, viewport: function (t) { var e; return ( Array.isArray(t) ? (e = { x: t[0], y: t[1], width: t[2] - t[0], height: t[3] - t[1], }) : t ? ((e = { x: t.x || t.left || 0, y: t.y || t.top || 0, }), t.right ? (e.width = t.right - e.x) : (e.width = t.w || t.width || 0), t.bottom ? (e.height = t.bottom - e.y) : (e.height = t.h || t.height || 0)) : (e = { x: 0, y: 0, width: v.drawingBufferWidth, height: v.drawingBufferHeight, }), e ); }, }, ]), u) : u; })), e || r) ) { var h = x.reduce(function (t, e, r) { return t + (e ? e.count : 0); }, 0), g = new Float64Array(2 * h), _ = new Uint8Array(4 * h), w = new Float32Array(4 * h); x.forEach(function (t, e) { if (t) { var r = t.positions, n = t.count, i = t.offset, a = t.color, o = t.errors; n && (_.set(a, 4 * i), w.set(o, 4 * i), g.set(r, 2 * i)); } }); var T = u(g); c(T); var k = f(g, T); p(k), d(_), m(w); } } } function k() { c.destroy(), p.destroy(), d.destroy(), m.destroy(), g.destroy(); } }; var h = [ [1, 0, 0, 1, 0, 0], [1, 0, 0, -1, 0, 0], [-1, 0, 0, -1, 0, 0], [-1, 0, 0, -1, 0, 0], [-1, 0, 0, 1, 0, 0], [1, 0, 0, 1, 0, 0], [1, 0, -1, 0, 0, 1], [1, 0, -1, 0, 0, -1], [1, 0, 1, 0, 0, -1], [1, 0, 1, 0, 0, -1], [1, 0, 1, 0, 0, 1], [1, 0, -1, 0, 0, 1], [-1, 0, -1, 0, 0, 1], [-1, 0, -1, 0, 0, -1], [-1, 0, 1, 0, 0, -1], [-1, 0, 1, 0, 0, -1], [-1, 0, 1, 0, 0, 1], [-1, 0, -1, 0, 0, 1], [0, 1, 1, 0, 0, 0], [0, 1, -1, 0, 0, 0], [0, -1, -1, 0, 0, 0], [0, -1, -1, 0, 0, 0], [0, 1, 1, 0, 0, 0], [0, -1, 1, 0, 0, 0], [0, 1, 0, -1, 1, 0], [0, 1, 0, -1, -1, 0], [0, 1, 0, 1, -1, 0], [0, 1, 0, 1, 1, 0], [0, 1, 0, -1, 1, 0], [0, 1, 0, 1, -1, 0], [0, -1, 0, -1, 1, 0], [0, -1, 0, -1, -1, 0], [0, -1, 0, 1, -1, 0], [0, -1, 0, 1, 1, 0], [0, -1, 0, -1, 1, 0], [0, -1, 0, 1, -1, 0], ]; }, { "array-bounds": 71, "color-normalize": 89, "flatten-vertex-data": 191, "object-assign": 247, "pick-by-alias": 253, "to-float32": 314, "update-diff": 330, }, ], 281: [ function (t, e, r) { "use strict"; var n = t("color-normalize"), i = t("array-bounds"), a = t("object-assign"), o = t("glslify"), s = t("pick-by-alias"), l = t("flatten-vertex-data"), c = t("earcut"), u = t("array-normalize"), f = t("to-float32"), h = f.float32, p = f.fract32, d = t("es6-weak-map"), m = t("parse-rect"), g = t("array-find-index"); function v(t, e) { if (!(this instanceof v)) return new v(t, e); if ( ("function" == typeof t ? (e || (e = {}), (e.regl = t)) : (e = t), e.length && (e.positions = e), !(t = e.regl).hasExtension("ANGLE_instanced_arrays")) ) throw Error( "regl-error2d: `ANGLE_instanced_arrays` extension should be enabled", ); (this.gl = t._gl), (this.regl = t), (this.passes = []), (this.shaders = v.shaders.has(t) ? v.shaders.get(t) : v.shaders.set(t, v.createShaders(t)).get(t)), this.update(e); } (e.exports = v), (v.dashMult = 2), (v.maxPatternLength = 256), (v.precisionThreshold = 3e6), (v.maxPoints = 1e4), (v.maxLines = 2048), (v.shaders = new d()), (v.createShaders = function (t) { var e, r = t.buffer({ usage: "static", type: "float", data: [0, 1, 0, 0, 1, 1, 1, 0], }), n = { primitive: "triangle strip", instances: t.prop("count"), count: 4, offset: 0, uniforms: { miterMode: function (t, e) { return "round" === e.join ? 2 : 1; }, miterLimit: t.prop("miterLimit"), scale: t.prop("scale"), scaleFract: t.prop("scaleFract"), translateFract: t.prop("translateFract"), translate: t.prop("translate"), thickness: t.prop("thickness"), dashTexture: t.prop("dashTexture"), opacity: t.prop("opacity"), pixelRatio: t.context("pixelRatio"), id: t.prop("id"), dashLength: t.prop("dashLength"), viewport: function (t, e) { return [ e.viewport.x, e.viewport.y, t.viewportWidth, t.viewportHeight, ]; }, depth: t.prop("depth"), }, blend: { enable: !0, color: [0, 0, 0, 0], equation: { rgb: "add", alpha: "add" }, func: { srcRGB: "src alpha", dstRGB: "one minus src alpha", srcAlpha: "one minus dst alpha", dstAlpha: "one", }, }, depth: { enable: function (t, e) { return !e.overlay; }, }, stencil: { enable: !1 }, scissor: { enable: !0, box: t.prop("viewport") }, viewport: t.prop("viewport"), }, i = t( a( { vert: o([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec2 aCoord, bCoord, aCoordFract, bCoordFract;\nattribute vec4 color;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float thickness, pixelRatio, id, depth;\nuniform vec4 viewport;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) {\n\t// the order is important\n\treturn position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n}\n\nvoid main() {\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineOffset = lineTop * 2. - 1.;\n\n\tvec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract);\n\ttangent = normalize(diff * scale * viewport.zw);\n\tvec2 normal = vec2(-tangent.y, tangent.x);\n\n\tvec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart\n\t\t+ project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd\n\n\t\t+ thickness * normal * .5 * lineOffset / viewport.zw;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n}\n", ]), frag: o([ "precision highp float;\n#define GLSLIFY 1\n\nuniform float dashLength, pixelRatio, thickness, opacity, id;\nuniform sampler2D dashTexture;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvoid main() {\n\tfloat alpha = 1.;\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n", ]), attributes: { lineEnd: { buffer: r, divisor: 0, stride: 8, offset: 0, }, lineTop: { buffer: r, divisor: 0, stride: 8, offset: 4, }, aCoord: { buffer: t.prop("positionBuffer"), stride: 8, offset: 8, divisor: 1, }, bCoord: { buffer: t.prop("positionBuffer"), stride: 8, offset: 16, divisor: 1, }, aCoordFract: { buffer: t.prop("positionFractBuffer"), stride: 8, offset: 8, divisor: 1, }, bCoordFract: { buffer: t.prop("positionFractBuffer"), stride: 8, offset: 16, divisor: 1, }, color: { buffer: t.prop("colorBuffer"), stride: 4, offset: 0, divisor: 1, }, }, }, n, ), ); try { e = t( a( { cull: { enable: !0, face: "back" }, vert: o([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec2 aCoord, bCoord, nextCoord, prevCoord;\nattribute vec4 aColor, bColor;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, translate;\nuniform float thickness, pixelRatio, id, depth;\nuniform vec4 viewport;\nuniform float miterLimit, miterMode;\n\nvarying vec4 fragColor;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 tangent;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nconst float REVERSE_THRESHOLD = -.875;\nconst float MIN_DIFF = 1e-6;\n\n// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead\n// TODO: precalculate dot products, normalize things beforehead etc.\n// TODO: refactor to rectangular algorithm\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nbool isNaN( float val ){\n return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true;\n}\n\nvoid main() {\n\tvec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord;\n\n vec2 adjustedScale;\n adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x;\n adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y;\n\n vec2 scaleRatio = adjustedScale * viewport.zw;\n\tvec2 normalWidth = thickness / scaleRatio;\n\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineBot = 1. - lineTop;\n\n\tfragColor = (lineStart * aColor + lineEnd * bColor) / 255.;\n\n\tif (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return;\n\n\tif (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord);\n\tif (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord);\n\n\tvec2 prevDiff = aCoord - prevCoord;\n\tvec2 currDiff = bCoord - aCoord;\n\tvec2 nextDiff = nextCoord - bCoord;\n\n\tvec2 prevTangent = normalize(prevDiff * scaleRatio);\n\tvec2 currTangent = normalize(currDiff * scaleRatio);\n\tvec2 nextTangent = normalize(nextDiff * scaleRatio);\n\n\tvec2 prevNormal = vec2(-prevTangent.y, prevTangent.x);\n\tvec2 currNormal = vec2(-currTangent.y, currTangent.x);\n\tvec2 nextNormal = vec2(-nextTangent.y, nextTangent.x);\n\n\tvec2 startJoinDirection = normalize(prevTangent - currTangent);\n\tvec2 endJoinDirection = normalize(currTangent - nextTangent);\n\n\t// collapsed/unidirectional segment cases\n\t// FIXME: there should be more elegant solution\n\tvec2 prevTanDiff = abs(prevTangent - currTangent);\n\tvec2 nextTanDiff = abs(nextTangent - currTangent);\n\tif (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) {\n\t\tstartJoinDirection = currNormal;\n\t}\n\tif (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) {\n\t\tendJoinDirection = currNormal;\n\t}\n\tif (aCoord == bCoord) {\n\t\tendJoinDirection = startJoinDirection;\n\t\tcurrNormal = prevNormal;\n\t\tcurrTangent = prevTangent;\n\t}\n\n\ttangent = currTangent;\n\n\t//calculate join shifts relative to normals\n\tfloat startJoinShift = dot(currNormal, startJoinDirection);\n\tfloat endJoinShift = dot(currNormal, endJoinDirection);\n\n\tfloat startMiterRatio = abs(1. / startJoinShift);\n\tfloat endMiterRatio = abs(1. / endJoinShift);\n\n\tvec2 startJoin = startJoinDirection * startMiterRatio;\n\tvec2 endJoin = endJoinDirection * endMiterRatio;\n\n\tvec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin;\n\tstartTopJoin = sign(startJoinShift) * startJoin * .5;\n\tstartBotJoin = -startTopJoin;\n\n\tendTopJoin = sign(endJoinShift) * endJoin * .5;\n\tendBotJoin = -endTopJoin;\n\n\tvec2 aTopCoord = aCoord + normalWidth * startTopJoin;\n\tvec2 bTopCoord = bCoord + normalWidth * endTopJoin;\n\tvec2 aBotCoord = aCoord + normalWidth * startBotJoin;\n\tvec2 bBotCoord = bCoord + normalWidth * endBotJoin;\n\n\t//miter anti-clipping\n\tfloat baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x)));\n\tfloat abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x)));\n\n\t//prevent close to reverse direction switch\n\tbool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) < length(normalWidth * currNormal);\n\tbool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) < length(normalWidth * currNormal);\n\n\tif (prevReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.);\n\t\taBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\taTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) {\n\t\t//handle miter clipping\n\t\tbTopCoord -= normalWidth * endTopJoin;\n\t\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\n\t}\n\n\tif (nextReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\n\t\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\n\t\t//handle miter clipping\n\t\taBotCoord -= normalWidth * startBotJoin;\n\t\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\n\t}\n\n\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\n\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\n\n\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\n\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\n\n\t//position is normalized 0..1 coord on the screen\n\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\n\n\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\n\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\n\n\t//bevel miter cutoffs\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n\n\t//round miter cutoffs\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n}\n", ]), frag: o([ "precision highp float;\n#define GLSLIFY 1\n\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\nuniform sampler2D dashTexture;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nvoid main() {\n\tfloat alpha = 1., distToStart, distToEnd;\n\tfloat cutoff = thickness * .5;\n\n\t//bevel miter\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToStart + 1., 0.), 1.);\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToEnd + 1., 0.), 1.);\n\t\t}\n\t}\n\n\t// round miter\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - startCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - endCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\t}\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n", ]), attributes: { lineEnd: { buffer: r, divisor: 0, stride: 8, offset: 0, }, lineTop: { buffer: r, divisor: 0, stride: 8, offset: 4, }, aColor: { buffer: t.prop("colorBuffer"), stride: 4, offset: 0, divisor: 1, }, bColor: { buffer: t.prop("colorBuffer"), stride: 4, offset: 4, divisor: 1, }, prevCoord: { buffer: t.prop("positionBuffer"), stride: 8, offset: 0, divisor: 1, }, aCoord: { buffer: t.prop("positionBuffer"), stride: 8, offset: 8, divisor: 1, }, bCoord: { buffer: t.prop("positionBuffer"), stride: 8, offset: 16, divisor: 1, }, nextCoord: { buffer: t.prop("positionBuffer"), stride: 8, offset: 24, divisor: 1, }, }, }, n, ), ); } catch (t) { e = i; } return { fill: t({ primitive: "triangle", elements: function (t, e) { return e.triangles; }, offset: 0, vert: o([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec2 position, positionFract;\n\nuniform vec4 color;\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float pixelRatio, id;\nuniform vec4 viewport;\nuniform float opacity;\n\nvarying vec4 fragColor;\n\nconst float MAX_LINES = 256.;\n\nvoid main() {\n\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\n\n\tvec2 position = position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n\tfragColor.a *= opacity;\n}\n", ]), frag: o([ "precision highp float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor;\n\nvoid main() {\n\tgl_FragColor = fragColor;\n}\n", ]), uniforms: { scale: t.prop("scale"), color: t.prop("fill"), scaleFract: t.prop("scaleFract"), translateFract: t.prop("translateFract"), translate: t.prop("translate"), opacity: t.prop("opacity"), pixelRatio: t.context("pixelRatio"), id: t.prop("id"), viewport: function (t, e) { return [ e.viewport.x, e.viewport.y, t.viewportWidth, t.viewportHeight, ]; }, }, attributes: { position: { buffer: t.prop("positionBuffer"), stride: 8, offset: 8, }, positionFract: { buffer: t.prop("positionFractBuffer"), stride: 8, offset: 8, }, }, blend: n.blend, depth: { enable: !1 }, scissor: n.scissor, stencil: n.stencil, viewport: n.viewport, }), rect: i, miter: e, }; }), (v.defaults = { dashes: null, join: "miter", miterLimit: 1, thickness: 10, cap: "square", color: "black", opacity: 1, overlay: !1, viewport: null, range: null, close: !1, fill: null, }), (v.prototype.render = function () { for (var t, e = [], r = arguments.length; r--; ) e[r] = arguments[r]; e.length && (t = this).update.apply(t, e), this.draw(); }), (v.prototype.draw = function () { for (var t = this, e = [], r = arguments.length; r--; ) e[r] = arguments[r]; return ( (e.length ? e : this.passes).forEach(function (e, r) { var n; if (e && Array.isArray(e)) return (n = t).draw.apply(n, e); "number" == typeof e && (e = t.passes[e]), e && e.count > 1 && e.opacity && (t.regl._refresh(), e.fill && e.triangles && e.triangles.length > 2 && t.shaders.fill(e), e.thickness && (e.scale[0] * e.viewport.width > v.precisionThreshold || e.scale[1] * e.viewport.height > v.precisionThreshold || "rect" === e.join || (!e.join && (e.thickness <= 2 || e.count >= v.maxPoints)) ? t.shaders.rect(e) : t.shaders.miter(e))); }), this ); }), (v.prototype.update = function (t) { var e = this; if (t) { null != t.length ? "number" == typeof t[0] && (t = [{ positions: t }]) : Array.isArray(t) || (t = [t]); var r = this.regl, o = this.gl; if ( (t.forEach(function (t, f) { var d = e.passes[f]; if (void 0 !== t) if (null !== t) { if ( ("number" == typeof t[0] && (t = { positions: t }), (t = s(t, { positions: "positions points data coords", thickness: "thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth", join: "lineJoin linejoin join type mode", miterLimit: "miterlimit miterLimit", dashes: "dash dashes dasharray dash-array dashArray", color: "color colour stroke colors colours stroke-color strokeColor", fill: "fill fill-color fillColor", opacity: "alpha opacity", overlay: "overlay crease overlap intersect", close: "closed close closed-path closePath", range: "range dataBox", viewport: "viewport viewBox", hole: "holes hole hollow", splitNull: "splitNull", })), d || ((e.passes[f] = d = { id: f, scale: null, scaleFract: null, translate: null, translateFract: null, count: 0, hole: [], depth: 0, dashLength: 1, dashTexture: r.texture({ channels: 1, data: new Uint8Array([255]), width: 1, height: 1, mag: "linear", min: "linear", }), colorBuffer: r.buffer({ usage: "dynamic", type: "uint8", data: new Uint8Array(), }), positionBuffer: r.buffer({ usage: "dynamic", type: "float", data: new Uint8Array(), }), positionFractBuffer: r.buffer({ usage: "dynamic", type: "float", data: new Uint8Array(), }), }), (t = a({}, v.defaults, t))), null != t.thickness && (d.thickness = parseFloat(t.thickness)), null != t.opacity && (d.opacity = parseFloat(t.opacity)), null != t.miterLimit && (d.miterLimit = parseFloat(t.miterLimit)), null != t.overlay && ((d.overlay = !!t.overlay), f < v.maxLines && (d.depth = (2 * (v.maxLines - 1 - (f % v.maxLines))) / v.maxLines - 1)), null != t.join && (d.join = t.join), null != t.hole && (d.hole = t.hole), null != t.fill && (d.fill = t.fill ? n(t.fill, "uint8") : null), null != t.viewport && (d.viewport = m(t.viewport)), d.viewport || (d.viewport = m([ o.drawingBufferWidth, o.drawingBufferHeight, ])), null != t.close && (d.close = t.close), null === t.positions && (t.positions = []), t.positions) ) { var y, x; if (t.positions.x && t.positions.y) { var b = t.positions.x, _ = t.positions.y; (x = d.count = Math.max(b.length, _.length)), (y = new Float64Array(2 * x)); for (var w = 0; w < x; w++) (y[2 * w] = b[w]), (y[2 * w + 1] = _[w]); } else (y = l(t.positions, "float64")), (x = d.count = Math.floor(y.length / 2)); var T = (d.bounds = i(y, 2)); if (d.fill) { for ( var k = [], A = {}, M = 0, S = 0, E = 0, L = d.count; S < L; S++ ) { var C = y[2 * S], P = y[2 * S + 1]; isNaN(C) || isNaN(P) || null == C || null == P ? ((C = y[2 * M]), (P = y[2 * M + 1]), (A[S] = M)) : (M = S), (k[E++] = C), (k[E++] = P); } if (t.splitNull) { d.count - 1 in A || (A[d.count] = d.count - 1); var I = Object.keys(A) .map(Number) .sort(function (t, e) { return t - e; }), O = [], z = 0, D = null != d.hole ? d.hole[0] : null; if (null != D) { var R = g(I, function (t) { return t >= D; }); (I = I.slice(0, R)).push(D); } for ( var F = function (t) { var e = k .slice(2 * z, 2 * I[t]) .concat( D ? k.slice(2 * D) : [], ), r = (d.hole || []).map( function (e) { return e - D + (I[t] - z); }, ), n = c(e, r); (n = n.map(function (e) { return ( e + z + (e + z < I[t] ? 0 : D - I[t]) ); })), O.push.apply(O, n), (z = I[t] + 1); }, B = 0; B < I.length; B++ ) F(B); for (var N = 0, j = O.length; N < j; N++) null != A[O[N]] && (O[N] = A[O[N]]); d.triangles = O; } else { for ( var U = c(k, d.hole || []), V = 0, H = U.length; V < H; V++ ) null != A[U[V]] && (U[V] = A[U[V]]); d.triangles = U; } } var q = new Float64Array(y); u(q, 2, T); var G = new Float64Array(2 * x + 6); d.close ? y[0] === y[2 * x - 2] && y[1] === y[2 * x - 1] ? ((G[0] = q[2 * x - 4]), (G[1] = q[2 * x - 3])) : ((G[0] = q[2 * x - 2]), (G[1] = q[2 * x - 1])) : ((G[0] = q[0]), (G[1] = q[1])), G.set(q, 2), d.close ? y[0] === y[2 * x - 2] && y[1] === y[2 * x - 1] ? ((G[2 * x + 2] = q[2]), (G[2 * x + 3] = q[3]), (d.count -= 1)) : ((G[2 * x + 2] = q[0]), (G[2 * x + 3] = q[1]), (G[2 * x + 4] = q[2]), (G[2 * x + 5] = q[3])) : ((G[2 * x + 2] = q[2 * x - 2]), (G[2 * x + 3] = q[2 * x - 1]), (G[2 * x + 4] = q[2 * x - 2]), (G[2 * x + 5] = q[2 * x - 1])); var Y = h(G); d.positionBuffer(Y); var W = p(G, Y); d.positionFractBuffer(W); } if ( (t.range ? (d.range = t.range) : d.range || (d.range = d.bounds), (t.range || t.positions) && d.count) ) { var Z = d.bounds, X = Z[2] - Z[0], J = Z[3] - Z[1], K = d.range[2] - d.range[0], Q = d.range[3] - d.range[1]; (d.scale = [X / K, J / Q]), (d.translate = [ -d.range[0] / K + Z[0] / K || 0, -d.range[1] / Q + Z[1] / Q || 0, ]), (d.scaleFract = p(d.scale)), (d.translateFract = p(d.translate)); } if (t.dashes) { var $, tt = 0; if (!t.dashes || t.dashes.length < 2) (tt = 1), ($ = new Uint8Array([ 255, 255, 255, 255, 255, 255, 255, 255, ])); else { tt = 0; for (var et = 0; et < t.dashes.length; ++et) tt += t.dashes[et]; $ = new Uint8Array(tt * v.dashMult); for ( var rt = 0, nt = 255, it = 0; it < 2; it++ ) for ( var at = 0; at < t.dashes.length; ++at ) { for ( var ot = 0, st = t.dashes[at] * v.dashMult * 0.5; ot < st; ++ot ) $[rt++] = nt; nt ^= 255; } } (d.dashLength = tt), d.dashTexture( { channels: 1, data: $, width: $.length, height: 1, mag: "linear", min: "linear", }, 0, 0, ); } if (t.color) { var lt = d.count, ct = t.color; ct || (ct = "transparent"); var ut = new Uint8Array(4 * lt + 4); if ( Array.isArray(ct) && "number" != typeof ct[0] ) { for (var ft = 0; ft < lt; ft++) { var ht = n(ct[ft], "uint8"); ut.set(ht, 4 * ft); } ut.set(n(ct[0], "uint8"), 4 * lt); } else for ( var pt = n(ct, "uint8"), dt = 0; dt < lt + 1; dt++ ) ut.set(pt, 4 * dt); d.colorBuffer({ usage: "dynamic", type: "uint8", data: ut, }); } } else e.passes[f] = null; }), t.length < this.passes.length) ) { for (var f = t.length; f < this.passes.length; f++) { var d = this.passes[f]; d && (d.colorBuffer.destroy(), d.positionBuffer.destroy(), d.dashTexture.destroy()); } this.passes.length = t.length; } for (var y = [], x = 0; x < this.passes.length; x++) null !== this.passes[x] && y.push(this.passes[x]); return (this.passes = y), this; } }), (v.prototype.destroy = function () { return ( this.passes.forEach(function (t) { t.colorBuffer.destroy(), t.positionBuffer.destroy(), t.dashTexture.destroy(); }), (this.passes.length = 0), this ); }); }, { "array-bounds": 71, "array-find-index": 72, "array-normalize": 73, "color-normalize": 89, earcut: 129, "es6-weak-map": 183, "flatten-vertex-data": 191, glslify: 227, "object-assign": 247, "parse-rect": 249, "pick-by-alias": 253, "to-float32": 314, }, ], 282: [ function (t, e, r) { "use strict"; function n(t, e) { return ( (function (t) { if (Array.isArray(t)) return t; })(t) || (function (t, e) { var r = null == t ? null : ("undefined" != typeof Symbol && t[Symbol.iterator]) || t["@@iterator"]; if (null == r) return; var n, i, a = [], o = !0, s = !1; try { for ( r = r.call(t); !(o = (n = r.next()).done) && (a.push(n.value), !e || a.length !== e); o = !0 ); } catch (t) { (s = !0), (i = t); } finally { try { o || null == r.return || r.return(); } finally { if (s) throw i; } } return a; })(t, e) || a(t, e) || (function () { throw new TypeError( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.", ); })() ); } function i(t) { return ( (function (t) { if (Array.isArray(t)) return o(t); })(t) || (function (t) { if ( ("undefined" != typeof Symbol && null != t[Symbol.iterator]) || null != t["@@iterator"] ) return Array.from(t); })(t) || a(t) || (function () { throw new TypeError( "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.", ); })() ); } function a(t, e) { if (t) { if ("string" == typeof t) return o(t, e); var r = Object.prototype.toString.call(t).slice(8, -1); return ( "Object" === r && t.constructor && (r = t.constructor.name), "Map" === r || "Set" === r ? Array.from(t) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? o(t, e) : void 0 ); } } function o(t, e) { (null == e || e > t.length) && (e = t.length); for (var r = 0, n = new Array(e); r < e; r++) n[r] = t[r]; return n; } var s = t("color-normalize"), l = t("array-bounds"), c = t("color-id"), u = t("@plotly/point-cluster"), f = t("object-assign"), h = t("glslify"), p = t("pick-by-alias"), d = t("update-diff"), m = t("flatten-vertex-data"), g = t("is-iexplorer"), v = t("to-float32"), y = t("parse-rect"), x = b; function b(t, e) { var r = this; if (!(this instanceof b)) return new b(t, e); "function" == typeof t ? (e || (e = {}), (e.regl = t)) : ((e = t), (t = null)), e && e.length && (e.positions = e); var n, i = (t = e.regl)._gl, a = []; (this.tooManyColors = g), (n = t.texture({ data: new Uint8Array(1020), width: 255, height: 1, type: "uint8", format: "rgba", wrapS: "clamp", wrapT: "clamp", mag: "nearest", min: "nearest", })), f(this, { regl: t, gl: i, groups: [], markerCache: [null], markerTextures: [null], palette: a, paletteIds: {}, paletteTexture: n, maxColors: 255, maxSize: 100, canvas: i.canvas, }), this.update(e); var o = { uniforms: { constPointSize: !!e.constPointSize, opacity: t.prop("opacity"), paletteSize: function (t, e) { return [r.tooManyColors ? 0 : 255, n.height]; }, pixelRatio: t.context("pixelRatio"), scale: t.prop("scale"), scaleFract: t.prop("scaleFract"), translate: t.prop("translate"), translateFract: t.prop("translateFract"), markerTexture: t.prop("markerTexture"), paletteTexture: n, }, attributes: { x: function (t, e) { return ( e.xAttr || { buffer: e.positionBuffer, stride: 8, offset: 0, } ); }, y: function (t, e) { return ( e.yAttr || { buffer: e.positionBuffer, stride: 8, offset: 4, } ); }, xFract: function (t, e) { return e.xAttr ? { constant: [0, 0] } : { buffer: e.positionFractBuffer, stride: 8, offset: 0, }; }, yFract: function (t, e) { return e.yAttr ? { constant: [0, 0] } : { buffer: e.positionFractBuffer, stride: 8, offset: 4, }; }, size: function (t, e) { return e.size.length ? { buffer: e.sizeBuffer, stride: 2, offset: 0 } : { constant: [ Math.round((255 * e.size) / r.maxSize), ], }; }, borderSize: function (t, e) { return e.borderSize.length ? { buffer: e.sizeBuffer, stride: 2, offset: 1 } : { constant: [ Math.round( (255 * e.borderSize) / r.maxSize, ), ], }; }, colorId: function (t, e) { return e.color.length ? { buffer: e.colorBuffer, stride: r.tooManyColors ? 8 : 4, offset: 0, } : { constant: r.tooManyColors ? a.slice(4 * e.color, 4 * e.color + 4) : [e.color], }; }, borderColorId: function (t, e) { return e.borderColor.length ? { buffer: e.colorBuffer, stride: r.tooManyColors ? 8 : 4, offset: r.tooManyColors ? 4 : 2, } : { constant: r.tooManyColors ? a.slice( 4 * e.borderColor, 4 * e.borderColor + 4, ) : [e.borderColor], }; }, isActive: function (t, e) { return !0 === e.activation ? { constant: [1] } : e.activation ? e.activation : { constant: [0] }; }, }, blend: { enable: !0, color: [0, 0, 0, 1], func: { srcRGB: "src alpha", dstRGB: "one minus src alpha", srcAlpha: "one minus dst alpha", dstAlpha: "one", }, }, scissor: { enable: !0, box: t.prop("viewport") }, viewport: t.prop("viewport"), stencil: { enable: !1 }, depth: { enable: !1 }, elements: t.prop("elements"), count: t.prop("count"), offset: t.prop("offset"), primitive: "points", }, s = f({}, o); (s.frag = h([ "precision highp float;\n#define GLSLIFY 1\n\nuniform float opacity;\nuniform sampler2D markerTexture;\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragWidth, fragBorderColorLevel, fragColorLevel;\n\nfloat smoothStep(float x, float y) {\n return 1.0 / (1.0 + exp(50.0*(x - y)));\n}\n\nvoid main() {\n float dist = texture2D(markerTexture, gl_PointCoord).r, delta = fragWidth;\n\n // max-distance alpha\n if (dist < 0.003) discard;\n\n // null-border case\n if (fragBorderColorLevel == fragColorLevel || fragBorderColor.a == 0.) {\n float colorAmt = smoothstep(.5 - delta, .5 + delta, dist);\n gl_FragColor = vec4(fragColor.rgb, colorAmt * fragColor.a * opacity);\n }\n else {\n float borderColorAmt = smoothstep(fragBorderColorLevel - delta, fragBorderColorLevel + delta, dist);\n float colorAmt = smoothstep(fragColorLevel - delta, fragColorLevel + delta, dist);\n\n vec4 color = fragBorderColor;\n color.a *= borderColorAmt;\n color = mix(color, fragColor, colorAmt);\n color.a *= opacity;\n\n gl_FragColor = color;\n }\n\n}\n", ])), (s.vert = h([ "precision highp float;\n#define GLSLIFY 1\n\nattribute float x, y, xFract, yFract;\nattribute float size, borderSize;\nattribute vec4 colorId, borderColorId;\nattribute float isActive;\n\nuniform bool constPointSize;\nuniform float pixelRatio;\nuniform vec2 scale, scaleFract, translate, translateFract, paletteSize;\nuniform sampler2D paletteTexture;\n\nconst float maxSize = 100.;\nconst float borderLevel = .5;\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragPointSize, fragBorderRadius, fragWidth, fragBorderColorLevel, fragColorLevel;\n\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\n\nbool isDirect = (paletteSize.x < 1.);\n\nvec4 getColor(vec4 id) {\n return isDirect ? id / 255. : texture2D(paletteTexture,\n vec2(\n (id.x + .5) / paletteSize.x,\n (id.y + .5) / paletteSize.y\n )\n );\n}\n\nvoid main() {\n // ignore inactive points\n if (isActive == 0.) return;\n\n vec2 position = vec2(x, y);\n vec2 positionFract = vec2(xFract, yFract);\n\n vec4 color = getColor(colorId);\n vec4 borderColor = getColor(borderColorId);\n\n float size = size * maxSize / 255.;\n float borderSize = borderSize * maxSize / 255.;\n\n gl_PointSize = 2. * size * pointSizeScale;\n fragPointSize = size * pixelRatio;\n\n vec2 pos = (position + translate) * scale\n + (positionFract + translateFract) * scale\n + (position + translate) * scaleFract\n + (positionFract + translateFract) * scaleFract;\n\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\n\n fragColor = color;\n fragBorderColor = borderColor;\n fragWidth = 1. / gl_PointSize;\n\n fragBorderColorLevel = clamp(borderLevel - borderLevel * borderSize / size, 0., 1.);\n fragColorLevel = clamp(borderLevel + (1. - borderLevel) * borderSize / size, 0., 1.);\n}", ])), (this.drawMarker = t(s)); var l = f({}, o); (l.frag = h([ "precision highp float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragBorderRadius, fragWidth;\n\nuniform float opacity;\n\nfloat smoothStep(float edge0, float edge1, float x) {\n\tfloat t;\n\tt = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\n\treturn t * t * (3.0 - 2.0 * t);\n}\n\nvoid main() {\n\tfloat radius, alpha = 1.0, delta = fragWidth;\n\n\tradius = length(2.0 * gl_PointCoord.xy - 1.0);\n\n\tif (radius > 1.0 + delta) {\n\t\tdiscard;\n\t}\n\n\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\n\n\tfloat borderRadius = fragBorderRadius;\n\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\n\tvec4 color = mix(fragColor, fragBorderColor, ratio);\n\tcolor.a *= alpha * opacity;\n\tgl_FragColor = color;\n}\n", ])), (l.vert = h([ "precision highp float;\n#define GLSLIFY 1\n\nattribute float x, y, xFract, yFract;\nattribute float size, borderSize;\nattribute vec4 colorId, borderColorId;\nattribute float isActive;\n\nuniform bool constPointSize;\nuniform float pixelRatio;\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\nuniform sampler2D paletteTexture;\n\nconst float maxSize = 100.;\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragBorderRadius, fragWidth;\n\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\n\nbool isDirect = (paletteSize.x < 1.);\n\nvec4 getColor(vec4 id) {\n return isDirect ? id / 255. : texture2D(paletteTexture,\n vec2(\n (id.x + .5) / paletteSize.x,\n (id.y + .5) / paletteSize.y\n )\n );\n}\n\nvoid main() {\n // ignore inactive points\n if (isActive == 0.) return;\n\n vec2 position = vec2(x, y);\n vec2 positionFract = vec2(xFract, yFract);\n\n vec4 color = getColor(colorId);\n vec4 borderColor = getColor(borderColorId);\n\n float size = size * maxSize / 255.;\n float borderSize = borderSize * maxSize / 255.;\n\n gl_PointSize = (size + borderSize) * pointSizeScale;\n\n vec2 pos = (position + translate) * scale\n + (positionFract + translateFract) * scale\n + (position + translate) * scaleFract\n + (positionFract + translateFract) * scaleFract;\n\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\n\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\n fragColor = color;\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\n fragWidth = 1. / gl_PointSize;\n}\n", ])), g && ((l.frag = l.frag.replace("smoothstep", "smoothStep")), (s.frag = s.frag.replace("smoothstep", "smoothStep"))), (this.drawCircle = t(l)); } (b.defaults = { color: "black", borderColor: "transparent", borderSize: 0, size: 12, opacity: 1, marker: void 0, viewport: null, range: null, pixelSize: null, count: 0, offset: 0, bounds: null, positions: [], snap: 1e4, }), (b.prototype.render = function () { return ( arguments.length && this.update.apply(this, arguments), this.draw(), this ); }), (b.prototype.draw = function () { for ( var t = this, e = arguments.length, r = new Array(e), n = 0; n < e; n++ ) r[n] = arguments[n]; var i = this.groups; if ( (1 === r.length && Array.isArray(r[0]) && (null === r[0][0] || Array.isArray(r[0][0])) && (r = r[0]), this.regl._refresh(), r.length) ) for (var a = 0; a < r.length; a++) this.drawItem(a, r[a]); else i.forEach(function (e, r) { t.drawItem(r); }); return this; }), (b.prototype.drawItem = function (t, e) { var r = this.groups, n = r[t]; if ( ("number" == typeof e && ((t = e), (n = r[e]), (e = null)), n && n.count && n.opacity) ) { n.activation[0] && this.drawCircle(this.getMarkerDrawOptions(0, n, e)); for (var a = [], o = 1; o < n.activation.length; o++) n.activation[o] && (!0 === n.activation[o] || n.activation[o].data.length) && a.push.apply( a, i(this.getMarkerDrawOptions(o, n, e)), ); a.length && this.drawMarker(a); } }), (b.prototype.getMarkerDrawOptions = function (t, e, r) { var i = e.range, a = e.tree, o = e.viewport, s = e.activation, l = e.selectionBuffer, c = e.count; this.regl; if (!a) return r ? [ f({}, e, { markerTexture: this.markerTextures[t], activation: s[t], count: r.length, elements: r, offset: 0, }), ] : [ f({}, e, { markerTexture: this.markerTextures[t], activation: s[t], offset: 0, }), ]; var u = [], h = a.range(i, { lod: !0, px: [ (i[2] - i[0]) / o.width, (i[3] - i[1]) / o.height, ], }); if (r) { for ( var p = s[t].data, d = new Uint8Array(c), m = 0; m < r.length; m++ ) { var g = r[m]; d[g] = p ? p[g] : 1; } l.subdata(d); } for (var v = h.length; v--; ) { var y = n(h[v], 2), x = y[0], b = y[1]; u.push( f({}, e, { markerTexture: this.markerTextures[t], activation: r ? l : s[t], offset: x, count: b - x, }), ); } return u; }), (b.prototype.update = function () { for ( var t = this, e = arguments.length, r = new Array(e), n = 0; n < e; n++ ) r[n] = arguments[n]; if (r.length) { 1 === r.length && Array.isArray(r[0]) && (r = r[0]); var i = this.groups, a = this.gl, o = this.regl, s = this.maxSize, c = this.maxColors, h = this.palette; this.groups = i = r.map(function (e, r) { var n = i[r]; if (void 0 === e) return n; null === e ? (e = { positions: null }) : "function" == typeof e ? (e = { ondraw: e }) : "number" == typeof e[0] && (e = { positions: e }), null === (e = p(e, { positions: "positions data points", snap: "snap cluster lod tree", size: "sizes size radius", borderSize: "borderSizes borderSize border-size bordersize borderWidth borderWidths border-width borderwidth stroke-width strokeWidth strokewidth outline", color: "colors color fill fill-color fillColor", borderColor: "borderColors borderColor stroke stroke-color strokeColor", marker: "markers marker shape", range: "range dataBox databox", viewport: "viewport viewPort viewBox viewbox", opacity: "opacity alpha transparency", bounds: "bound bounds boundaries limits", tooManyColors: "tooManyColors palette paletteMode optimizePalette enablePalette", })).positions && (e.positions = []), null != e.tooManyColors && (t.tooManyColors = e.tooManyColors), n || ((i[r] = n = { id: r, scale: null, translate: null, scaleFract: null, translateFract: null, activation: [], selectionBuffer: o.buffer({ data: new Uint8Array(0), usage: "stream", type: "uint8", }), sizeBuffer: o.buffer({ data: new Uint8Array(0), usage: "dynamic", type: "uint8", }), colorBuffer: o.buffer({ data: new Uint8Array(0), usage: "dynamic", type: "uint8", }), positionBuffer: o.buffer({ data: new Uint8Array(0), usage: "dynamic", type: "float", }), positionFractBuffer: o.buffer({ data: new Uint8Array(0), usage: "dynamic", type: "float", }), }), (e = f({}, b.defaults, e))), e.positions && !("marker" in e) && ((e.marker = n.marker), delete n.marker), e.marker && !("positions" in e) && ((e.positions = n.positions), delete n.positions); var g = 0, x = 0; if ( (d(n, e, [ { snap: !0, size: function (t, e) { return ( null == t && (t = b.defaults.size), (g += t && t.length ? 1 : 0), t ); }, borderSize: function (t, e) { return ( null == t && (t = b.defaults.borderSize), (g += t && t.length ? 1 : 0), t ); }, opacity: parseFloat, color: function (e, r) { return ( null == e && (e = b.defaults.color), (e = t.updateColor(e)), x++, e ); }, borderColor: function (e, r) { return ( null == e && (e = b.defaults.borderColor), (e = t.updateColor(e)), x++, e ); }, bounds: function (t, e, r) { return "range" in r || (r.range = null), t; }, positions: function (t, e, r) { var n = e.snap, i = e.positionBuffer, a = e.positionFractBuffer, s = e.selectionBuffer; if (t.x || t.y) return ( t.x.length ? (e.xAttr = { buffer: o.buffer(t.x), offset: 0, stride: 4, count: t.x.length, }) : (e.xAttr = { buffer: t.x.buffer, offset: 4 * t.x.offset || 0, stride: 4 * (t.x.stride || 1), count: t.x.count, }), t.y.length ? (e.yAttr = { buffer: o.buffer(t.y), offset: 0, stride: 4, count: t.y.length, }) : (e.yAttr = { buffer: t.y.buffer, offset: 4 * t.y.offset || 0, stride: 4 * (t.y.stride || 1), count: t.y.count, }), (e.count = Math.max( e.xAttr.count, e.yAttr.count, )), t ); t = m(t, "float64"); var c = (e.count = Math.floor(t.length / 2)), f = (e.bounds = c ? l(t, 2) : null); if ( (r.range || e.range || (delete e.range, (r.range = f)), r.marker || e.marker || (delete e.marker, (r.marker = null)), n && (!0 === n || c > n) ? (e.tree = u(t, { bounds: f })) : n && n.length && (e.tree = n), e.tree) ) { var h = { primitive: "points", usage: "static", data: e.tree, type: "uint32", }; e.elements ? e.elements(h) : (e.elements = o.elements(h)); } var p = v.float32(t); return ( i({ data: p, usage: "dynamic" }), a({ data: v.fract32(t, p), usage: "dynamic", }), s({ data: new Uint8Array(c), type: "uint8", usage: "stream", }), t ); }, }, { marker: function (e, r, n) { var i = r.activation; if ( (i.forEach(function (t) { return t && t.destroy && t.destroy(); }), (i.length = 0), e && "number" != typeof e[0]) ) { for ( var a = [], s = 0, l = Math.min(e.length, r.count); s < l; s++ ) { var c = t.addMarker(e[s]); a[c] || (a[c] = new Uint8Array(r.count)), (a[c][s] = 1); } for (var u = 0; u < a.length; u++) if (a[u]) { var f = { data: a[u], type: "uint8", usage: "static", }; i[u] ? i[u](f) : (i[u] = o.buffer(f)), (i[u].data = a[u]); } } else { i[t.addMarker(e)] = !0; } return e; }, range: function (t, e, r) { var n = e.bounds; if (n) return ( t || (t = n), (e.scale = [ 1 / (t[2] - t[0]), 1 / (t[3] - t[1]), ]), (e.translate = [-t[0], -t[1]]), (e.scaleFract = v.fract(e.scale)), (e.translateFract = v.fract(e.translate)), t ); }, viewport: function (t) { return y( t || [ a.drawingBufferWidth, a.drawingBufferHeight, ], ); }, }, ]), g) ) { var _ = n, w = _.count, T = _.size, k = _.borderSize, A = _.sizeBuffer, M = new Uint8Array(2 * w); if (T.length || k.length) for (var S = 0; S < w; S++) (M[2 * S] = Math.round( (255 * (null == T[S] ? T : T[S])) / s, )), (M[2 * S + 1] = Math.round( (255 * (null == k[S] ? k : k[S])) / s, )); A({ data: M, usage: "dynamic" }); } if (x) { var E, L = n, C = L.count, P = L.color, I = L.borderColor, O = L.colorBuffer; if (t.tooManyColors) { if (P.length || I.length) { E = new Uint8Array(8 * C); for (var z = 0; z < C; z++) { var D = P[z]; (E[8 * z] = h[4 * D]), (E[8 * z + 1] = h[4 * D + 1]), (E[8 * z + 2] = h[4 * D + 2]), (E[8 * z + 3] = h[4 * D + 3]); var R = I[z]; (E[8 * z + 4] = h[4 * R]), (E[8 * z + 5] = h[4 * R + 1]), (E[8 * z + 6] = h[4 * R + 2]), (E[8 * z + 7] = h[4 * R + 3]); } } } else if (P.length || I.length) { E = new Uint8Array(4 * C + 2); for (var F = 0; F < C; F++) null != P[F] && ((E[4 * F] = P[F] % c), (E[4 * F + 1] = Math.floor(P[F] / c))), null != I[F] && ((E[4 * F + 2] = I[F] % c), (E[4 * F + 3] = Math.floor(I[F] / c))); } O({ data: E || new Uint8Array(0), type: "uint8", usage: "dynamic", }); } return n; }); } }), (b.prototype.addMarker = function (t) { var e, r = this.markerTextures, n = this.regl, i = this.markerCache, a = null == t ? 0 : i.indexOf(t); if (a >= 0) return a; if ( t instanceof Uint8Array || t instanceof Uint8ClampedArray ) e = t; else { e = new Uint8Array(t.length); for (var o = 0, s = t.length; o < s; o++) e[o] = 255 * t[o]; } var l = Math.floor(Math.sqrt(e.length)); return ( (a = r.length), i.push(t), r.push( n.texture({ channels: 1, data: e, radius: l, mag: "linear", min: "linear", }), ), a ); }), (b.prototype.updateColor = function (t) { var e = this.paletteIds, r = this.palette, n = this.maxColors; Array.isArray(t) || (t = [t]); var i = []; if ("number" == typeof t[0]) { var a = []; if (Array.isArray(t)) for (var o = 0; o < t.length; o += 4) a.push(t.slice(o, o + 4)); else for (var l = 0; l < t.length; l += 4) a.push(t.subarray(l, l + 4)); t = a; } for (var u = 0; u < t.length; u++) { var f = t[u]; f = s(f, "uint8"); var h = c(f, !1); if (null == e[h]) { var p = r.length; (e[h] = Math.floor(p / 4)), (r[p] = f[0]), (r[p + 1] = f[1]), (r[p + 2] = f[2]), (r[p + 3] = f[3]); } i[u] = e[h]; } return ( !this.tooManyColors && r.length > 4 * n && (this.tooManyColors = !0), this.updatePalette(r), 1 === i.length ? i[0] : i ); }), (b.prototype.updatePalette = function (t) { if (!this.tooManyColors) { var e = this.maxColors, r = this.paletteTexture, n = Math.ceil((0.25 * t.length) / e); if (n > 1) for ( var i = (0.25 * (t = t.slice()).length) % e; i < n * e; i++ ) t.push(0, 0, 0, 0); r.height < n && r.resize(e, n), r.subimage( { width: Math.min(0.25 * t.length, e), height: n, data: t, }, 0, 0, ); } }), (b.prototype.destroy = function () { return ( this.groups.forEach(function (t) { t.sizeBuffer.destroy(), t.positionBuffer.destroy(), t.positionFractBuffer.destroy(), t.colorBuffer.destroy(), t.activation.forEach(function (t) { return t && t.destroy && t.destroy(); }), t.selectionBuffer.destroy(), t.elements && t.elements.destroy(); }), (this.groups.length = 0), this.paletteTexture.destroy(), this.markerTextures.forEach(function (t) { return t && t.destroy && t.destroy(); }), this ); }); var _ = t("object-assign"); e.exports = function (t, e) { var r = new x(t, e), n = r.render.bind(r); return ( _(n, { render: n, update: r.update.bind(r), draw: r.draw.bind(r), destroy: r.destroy.bind(r), regl: r.regl, gl: r.gl, canvas: r.gl.canvas, groups: r.groups, markers: r.markerCache, palette: r.palette, }), n ); }; }, { "@plotly/point-cluster": 59, "array-bounds": 71, "color-id": 87, "color-normalize": 89, "flatten-vertex-data": 191, glslify: 227, "is-iexplorer": 233, "object-assign": 247, "parse-rect": 249, "pick-by-alias": 253, "to-float32": 314, "update-diff": 330, }, ], 283: [ function (t, e, r) { "use strict"; var n = t("regl-scatter2d"), i = t("pick-by-alias"), a = t("array-bounds"), o = t("raf"), s = t("array-range"), l = t("parse-rect"), c = t("flatten-vertex-data"); function u(t, e) { if (!(this instanceof u)) return new u(t, e); (this.traces = []), (this.passes = {}), (this.regl = t), (this.scatter = n(t)), (this.canvas = this.scatter.canvas); } function f(t, e, r) { return ( ((null != t.id ? t.id : t) << 16) | ((255 & e) << 8) | (255 & r) ); } function h(t, e, r) { var n, i, a, o, s = t[e], l = t[r]; return ( s.length > 2 ? (s[0], s[2], (n = s[1]), (i = s[3])) : s.length ? ((n = s[0]), (i = s[1])) : (s.x, (n = s.y), s.x + s.width, (i = s.y + s.height)), l.length > 2 ? ((a = l[0]), (o = l[2]), l[1], l[3]) : l.length ? ((a = l[0]), (o = l[1])) : ((a = l.x), l.y, (o = l.x + l.width), l.y + l.height), [a, n, o, i] ); } function p(t) { if ("number" == typeof t) return [t, t, t, t]; if (2 === t.length) return [t[0], t[1], t[0], t[1]]; var e = l(t); return [e.x, e.y, e.x + e.width, e.y + e.height]; } (e.exports = u), (u.prototype.render = function () { for (var t, e = this, r = [], n = arguments.length; n--; ) r[n] = arguments[n]; return ( r.length && (t = this).update.apply(t, r), this.regl.attributes.preserveDrawingBuffer ? this.draw() : (this.dirty ? null == this.planned && (this.planned = o(function () { e.draw(), (e.dirty = !0), (e.planned = null); })) : (this.draw(), (this.dirty = !0), o(function () { e.dirty = !1; })), this) ); }), (u.prototype.update = function () { for (var t, e = [], r = arguments.length; r--; ) e[r] = arguments[r]; if (e.length) { for (var n = 0; n < e.length; n++) this.updateItem(n, e[n]); this.traces = this.traces.filter(Boolean); for ( var i = [], a = 0, o = 0; o < this.traces.length; o++ ) { for ( var s = this.traces[o], l = this.traces[o].passes, c = 0; c < l.length; c++ ) i.push(this.passes[l[c]]); (s.passOffset = a), (a += s.passes.length); } return (t = this.scatter).update.apply(t, i), this; } }), (u.prototype.updateItem = function (t, e) { var r = this.regl; if (null === e) return (this.traces[t] = null), this; if (!e) return this; var n, o = i(e, { data: "data items columns rows values dimensions samples x", snap: "snap cluster", size: "sizes size radius", color: "colors color fill fill-color fillColor", opacity: "opacity alpha transparency opaque", borderSize: "borderSizes borderSize border-size bordersize borderWidth borderWidths border-width borderwidth stroke-width strokeWidth strokewidth outline", borderColor: "borderColors borderColor bordercolor stroke stroke-color strokeColor", marker: "markers marker shape", range: "range ranges databox dataBox", viewport: "viewport viewBox viewbox", domain: "domain domains area areas", padding: "pad padding paddings pads margin margins", transpose: "transpose transposed", diagonal: "diagonal diag showDiagonal", upper: "upper up top upperhalf upperHalf showupperhalf showUpper showUpperHalf", lower: "lower low bottom lowerhalf lowerHalf showlowerhalf showLowerHalf showLower", }), s = this.traces[t] || (this.traces[t] = { id: t, buffer: r.buffer({ usage: "dynamic", type: "float", data: new Uint8Array(), }), color: "black", marker: null, size: 12, borderColor: "transparent", borderSize: 1, viewport: l([ r._gl.drawingBufferWidth, r._gl.drawingBufferHeight, ]), padding: [0, 0, 0, 0], opacity: 1, diagonal: !0, upper: !0, lower: !0, }); if ( (null != o.color && (s.color = o.color), null != o.size && (s.size = o.size), null != o.marker && (s.marker = o.marker), null != o.borderColor && (s.borderColor = o.borderColor), null != o.borderSize && (s.borderSize = o.borderSize), null != o.opacity && (s.opacity = o.opacity), o.viewport && (s.viewport = l(o.viewport)), null != o.diagonal && (s.diagonal = o.diagonal), null != o.upper && (s.upper = o.upper), null != o.lower && (s.lower = o.lower), o.data) ) { s.buffer(c(o.data)), (s.columns = o.data.length), (s.count = o.data[0].length), (s.bounds = []); for (var u = 0; u < s.columns; u++) s.bounds[u] = a(o.data[u], 1); } o.range && ((s.range = o.range), (n = s.range && "number" != typeof s.range[0])), o.domain && (s.domain = o.domain); var d = !1; null != o.padding && (Array.isArray(o.padding) && o.padding.length === s.columns && "number" == typeof o.padding[o.padding.length - 1] ? ((s.padding = o.padding.map(p)), (d = !0)) : (s.padding = p(o.padding))); var m = s.columns, g = s.count, v = s.viewport.width, y = s.viewport.height, x = s.viewport.x, b = s.viewport.y, _ = v / m, w = y / m; s.passes = []; for (var T = 0; T < m; T++) for (var k = 0; k < m; k++) if ( (s.diagonal || k !== T) && (s.upper || !(T > k)) && (s.lower || !(T < k)) ) { var A = f(s.id, T, k), M = this.passes[A] || (this.passes[A] = {}); if ( (o.data && (o.transpose ? (M.positions = { x: { buffer: s.buffer, offset: k, count: g, stride: m, }, y: { buffer: s.buffer, offset: T, count: g, stride: m, }, }) : (M.positions = { x: { buffer: s.buffer, offset: k * g, count: g, }, y: { buffer: s.buffer, offset: T * g, count: g, }, }), (M.bounds = h(s.bounds, T, k))), o.domain || o.viewport || o.data) ) { var S = d ? h(s.padding, T, k) : s.padding; if (s.domain) { var E = h(s.domain, T, k), L = E[0], C = E[1], P = E[2], I = E[3]; M.viewport = [ x + L * v + S[0], b + C * y + S[1], x + P * v - S[2], b + I * y - S[3], ]; } else M.viewport = [ x + k * _ + _ * S[0], b + T * w + w * S[1], x + (k + 1) * _ - _ * S[2], b + (T + 1) * w - w * S[3], ]; } o.color && (M.color = s.color), o.size && (M.size = s.size), o.marker && (M.marker = s.marker), o.borderSize && (M.borderSize = s.borderSize), o.borderColor && (M.borderColor = s.borderColor), o.opacity && (M.opacity = s.opacity), o.range && (M.range = n ? h(s.range, T, k) : s.range || M.bounds), s.passes.push(A); } return this; }), (u.prototype.draw = function () { for (var t, e = [], r = arguments.length; r--; ) e[r] = arguments[r]; if (e.length) { for (var n = [], i = 0; i < e.length; i++) if ("number" == typeof e[i]) { var a = this.traces[e[i]], o = a.passes, l = a.passOffset; n.push.apply(n, s(l, l + o.length)); } else if (e[i].length) { var c = e[i], u = this.traces[i], f = u.passes, h = u.passOffset; f = f.map(function (t, e) { n[h + e] = c; }); } (t = this.scatter).draw.apply(t, n); } else this.scatter.draw(); return this; }), (u.prototype.destroy = function () { return ( this.traces.forEach(function (t) { t.buffer && t.buffer.destroy && t.buffer.destroy(); }), (this.traces = null), (this.passes = null), this.scatter.destroy(), this ); }); }, { "array-bounds": 71, "array-range": 74, "flatten-vertex-data": 191, "parse-rect": 249, "pick-by-alias": 253, raf: 279, "regl-scatter2d": 282, }, ], 284: [ function (t, e, r) { !(function (t, n) { "object" == typeof r && void 0 !== e ? (e.exports = n()) : (t.createREGL = n()); })(this, function () { function t(t, e) { (this.id = q++), (this.type = t), (this.data = e); } function e(t) { return ( "[" + (function t(e) { if (0 === e.length) return []; var r = e.charAt(0), n = e.charAt(e.length - 1); if ( 1 < e.length && r === n && ('"' === r || "'" === r) ) return [ '"' + e .substr(1, e.length - 2) .replace(/\\/g, "\\\\") .replace(/"/g, '\\"') + '"', ]; if ( (r = /\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec( e, )) ) return t(e.substr(0, r.index)) .concat(t(r[1])) .concat(t(e.substr(r.index + r[0].length))); if (1 === (r = e.split(".")).length) return [ '"' + e.replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '"', ]; for (e = [], n = 0; n < r.length; ++n) e = e.concat(t(r[n])); return e; })(t).join("][") + "]" ); } function r(t) { return "string" == typeof t ? t.split() : t; } function n(t) { return "string" == typeof t ? document.querySelector(t) : t; } function i(t) { var e, i, a, o, s = t || {}; t = {}; var l = [], c = [], u = "undefined" == typeof window ? 1 : window.devicePixelRatio, f = !1, h = {}, p = function (t) {}, d = function () {}; if ( ("string" == typeof s ? (e = document.querySelector(s)) : "object" == typeof s && ("string" == typeof s.nodeName && "function" == typeof s.appendChild && "function" == typeof s.getBoundingClientRect ? (e = s) : "function" == typeof s.drawArrays || "function" == typeof s.drawElements ? (a = (o = s).canvas) : ("gl" in s ? (o = s.gl) : "canvas" in s ? (a = n(s.canvas)) : "container" in s && (i = n(s.container)), "attributes" in s && (t = s.attributes), "extensions" in s && (l = r(s.extensions)), "optionalExtensions" in s && (c = r(s.optionalExtensions)), "onDone" in s && (p = s.onDone), "profile" in s && (f = !!s.profile), "pixelRatio" in s && (u = +s.pixelRatio), "cachedCode" in s && (h = s.cachedCode))), e && ("canvas" === e.nodeName.toLowerCase() ? (a = e) : (i = e)), !o) ) { if (!a) { if ( !(e = (function (t, e, r) { function n() { var e = window.innerWidth, n = window.innerHeight; t !== document.body && ((e = (n = a.getBoundingClientRect()).right - n.left), (n = n.bottom - n.top)), (a.width = r * e), (a.height = r * n); } var i, a = document.createElement("canvas"); return ( H(a.style, { border: 0, margin: 0, padding: 0, top: 0, left: 0, width: "100%", height: "100%", }), t.appendChild(a), t === document.body && ((a.style.position = "absolute"), H(t.style, { margin: 0, padding: 0 })), t !== document.body && "function" == typeof ResizeObserver ? (i = new ResizeObserver(function () { setTimeout(n); })).observe(t) : window.addEventListener("resize", n, !1), n(), { canvas: a, onDestroy: function () { i ? i.disconnect() : window.removeEventListener("resize", n), t.removeChild(a); }, } ); })(i || document.body, 0, u)) ) return null; (a = e.canvas), (d = e.onDestroy); } void 0 === t.premultipliedAlpha && (t.premultipliedAlpha = !0), (o = (function (t, e) { function r(r) { try { return t.getContext(r, e); } catch (t) { return null; } } return ( r("webgl") || r("experimental-webgl") || r("webgl-experimental") ); })(a, t)); } return o ? { gl: o, canvas: a, container: i, extensions: l, optionalExtensions: c, pixelRatio: u, profile: f, cachedCode: h, onDone: p, onDestroy: d, } : (d(), p( "webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org", ), null); } function a(t, e) { for (var r = Array(t), n = 0; n < t; ++n) r[n] = e(n); return r; } function o(t) { var e, r; return ( (e = (65535 < t) << 4), (e |= r = (255 < (t >>>= e)) << 3), (e |= r = (15 < (t >>>= r)) << 2) | (r = (3 < (t >>>= r)) << 1) | ((t >>> r) >> 1) ); } function s() { function t(t) { t: { for (var e = 16; 268435456 >= e; e *= 16) if (t <= e) { t = e; break t; } t = 0; } return 0 < (e = r[o(t) >> 2]).length ? e.pop() : new ArrayBuffer(t); } function e(t) { r[o(t.byteLength) >> 2].push(t); } var r = a(8, function () { return []; }); return { alloc: t, free: e, allocType: function (e, r) { var n = null; switch (e) { case 5120: n = new Int8Array(t(r), 0, r); break; case 5121: n = new Uint8Array(t(r), 0, r); break; case 5122: n = new Int16Array(t(2 * r), 0, r); break; case 5123: n = new Uint16Array(t(2 * r), 0, r); break; case 5124: n = new Int32Array(t(4 * r), 0, r); break; case 5125: n = new Uint32Array(t(4 * r), 0, r); break; case 5126: n = new Float32Array(t(4 * r), 0, r); break; default: return null; } return n.length !== r ? n.subarray(0, r) : n; }, freeType: function (t) { e(t.buffer); }, }; } function l(t) { return ( !!t && "object" == typeof t && Array.isArray(t.shape) && Array.isArray(t.stride) && "number" == typeof t.offset && t.shape.length === t.stride.length && (Array.isArray(t.data) || J(t.data)) ); } function c(t, e, r, n, i, a) { for (var o = 0; o < e; ++o) for (var s = t[o], l = 0; l < r; ++l) for (var c = s[l], u = 0; u < n; ++u) i[a++] = c[u]; } function u(t) { return 0 | $[Object.prototype.toString.call(t)]; } function f(t, e) { for (var r = 0; r < e.length; ++r) t[r] = e[r]; } function h(t, e, r, n, i, a, o) { for (var s = 0, l = 0; l < r; ++l) for (var c = 0; c < n; ++c) t[s++] = e[i * l + a * c + o]; } function p(t, e, r, n) { function i(e) { (this.id = c++), (this.buffer = t.createBuffer()), (this.type = e), (this.usage = 35044), (this.byteLength = 0), (this.dimension = 1), (this.dtype = 5121), (this.persistentData = null), r.profile && (this.stats = { size: 0 }); } function a(e, r, n) { (e.byteLength = r.byteLength), t.bufferData(e.type, r, n); } function o(t, e, r, n, i, o) { if (((t.usage = r), Array.isArray(e))) { if (((t.dtype = n || 5126), 0 < e.length)) if (Array.isArray(e[0])) { i = nt(e); for (var s = (n = 1); s < i.length; ++s) n *= i[s]; (t.dimension = n), a(t, (e = rt(e, i, t.dtype)), r), o ? (t.persistentData = e) : Z.freeType(e); } else "number" == typeof e[0] ? ((t.dimension = i), f((i = Z.allocType(t.dtype, e.length)), e), a(t, i, r), o ? (t.persistentData = i) : Z.freeType(i)) : J(e[0]) && ((t.dimension = e[0].length), (t.dtype = n || u(e[0]) || 5126), a( t, (e = rt( e, [e.length, e[0].length], t.dtype, )), r, ), o ? (t.persistentData = e) : Z.freeType(e)); } else if (J(e)) (t.dtype = n || u(e)), (t.dimension = i), a(t, e, r), o && (t.persistentData = new Uint8Array( new Uint8Array(e.buffer), )); else if (l(e)) { i = e.shape; var c = e.stride, p = ((s = e.offset), 0), d = 0, m = 0, g = 0; 1 === i.length ? ((p = i[0]), (d = 1), (m = c[0]), (g = 0)) : 2 === i.length && ((p = i[0]), (d = i[1]), (m = c[0]), (g = c[1])), (t.dtype = n || u(e.data) || 5126), (t.dimension = d), h( (i = Z.allocType(t.dtype, p * d)), e.data, p, d, m, g, s, ), a(t, i, r), o ? (t.persistentData = i) : Z.freeType(i); } else e instanceof ArrayBuffer && ((t.dtype = 5121), (t.dimension = i), a(t, e, r), o && (t.persistentData = new Uint8Array( new Uint8Array(e), ))); } function s(r) { e.bufferCount--, n(r), t.deleteBuffer(r.buffer), (r.buffer = null), delete p[r.id]; } var c = 0, p = {}; (i.prototype.bind = function () { t.bindBuffer(this.type, this.buffer); }), (i.prototype.destroy = function () { s(this); }); var d = []; return ( r.profile && (e.getTotalBufferSize = function () { var t = 0; return ( Object.keys(p).forEach(function (e) { t += p[e].stats.size; }), t ); }), { create: function (n, a, c, d) { function m(e) { var n = 35044, i = null, a = 0, s = 0, c = 1; return ( Array.isArray(e) || J(e) || l(e) || e instanceof ArrayBuffer ? (i = e) : "number" == typeof e ? (a = 0 | e) : e && ("data" in e && (i = e.data), "usage" in e && (n = et[e.usage]), "type" in e && (s = tt[e.type]), "dimension" in e && (c = 0 | e.dimension), "length" in e && (a = 0 | e.length)), g.bind(), i ? o(g, i, n, s, c, d) : (a && t.bufferData(g.type, a, n), (g.dtype = s || 5121), (g.usage = n), (g.dimension = c), (g.byteLength = a)), r.profile && (g.stats.size = g.byteLength * it[g.dtype]), m ); } e.bufferCount++; var g = new i(a); return ( (p[g.id] = g), c || m(n), (m._reglType = "buffer"), (m._buffer = g), (m.subdata = function (e, r) { var n, i = 0 | (r || 0); if ( (g.bind(), J(e) || e instanceof ArrayBuffer) ) t.bufferSubData(g.type, i, e); else if (Array.isArray(e)) { if (0 < e.length) if ("number" == typeof e[0]) { var a = Z.allocType(g.dtype, e.length); f(a, e), t.bufferSubData(g.type, i, a), Z.freeType(a); } else (Array.isArray(e[0]) || J(e[0])) && ((n = nt(e)), (a = rt(e, n, g.dtype)), t.bufferSubData(g.type, i, a), Z.freeType(a)); } else if (l(e)) { n = e.shape; var o = e.stride, s = (a = 0), c = 0, p = 0; 1 === n.length ? ((a = n[0]), (s = 1), (c = o[0]), (p = 0)) : 2 === n.length && ((a = n[0]), (s = n[1]), (c = o[0]), (p = o[1])), (n = Array.isArray(e.data) ? g.dtype : u(e.data)), h( (n = Z.allocType(n, a * s)), e.data, a, s, c, p, e.offset, ), t.bufferSubData(g.type, i, n), Z.freeType(n); } return m; }), r.profile && (m.stats = g.stats), (m.destroy = function () { s(g); }), m ); }, createStream: function (t, e) { var r = d.pop(); return ( r || (r = new i(t)), r.bind(), o(r, e, 35040, 0, 1, !1), r ); }, destroyStream: function (t) { d.push(t); }, clear: function () { K(p).forEach(s), d.forEach(s); }, getBuffer: function (t) { return t && t._buffer instanceof i ? t._buffer : null; }, restore: function () { K(p).forEach(function (e) { (e.buffer = t.createBuffer()), t.bindBuffer(e.type, e.buffer), t.bufferData( e.type, e.persistentData || e.byteLength, e.usage, ); }); }, _initBuffer: o, } ); } function d(t, e, r, n) { function i(t) { (this.id = c++), (s[this.id] = this), (this.buffer = t), (this.primType = 4), (this.type = this.vertCount = 0); } function a(n, i, a, o, s, c, u) { var f; if ( (n.buffer.bind(), i ? ((f = u) || (J(i) && (!l(i) || J(i.data))) || (f = e.oes_element_index_uint ? 5125 : 5123), r._initBuffer(n.buffer, i, a, f, 3)) : (t.bufferData(34963, c, a), (n.buffer.dtype = f || 5121), (n.buffer.usage = a), (n.buffer.dimension = 3), (n.buffer.byteLength = c)), (f = u), !u) ) { switch (n.buffer.dtype) { case 5121: case 5120: f = 5121; break; case 5123: case 5122: f = 5123; break; case 5125: case 5124: f = 5125; } n.buffer.dtype = f; } (n.type = f), 0 > (i = s) && ((i = n.buffer.byteLength), 5123 === f ? (i >>= 1) : 5125 === f && (i >>= 2)), (n.vertCount = i), (i = o), 0 > o && ((i = 4), 1 === (o = n.buffer.dimension) && (i = 0), 2 === o && (i = 1), 3 === o && (i = 4)), (n.primType = i); } function o(t) { n.elementsCount--, delete s[t.id], t.buffer.destroy(), (t.buffer = null); } var s = {}, c = 0, u = { uint8: 5121, uint16: 5123 }; e.oes_element_index_uint && (u.uint32 = 5125), (i.prototype.bind = function () { this.buffer.bind(); }); var f = []; return { create: function (t, e) { function s(t) { if (t) if ("number" == typeof t) c(t), (f.primType = 4), (f.vertCount = 0 | t), (f.type = 5121); else { var e = null, r = 35044, n = -1, i = -1, o = 0, h = 0; Array.isArray(t) || J(t) || l(t) ? (e = t) : ("data" in t && (e = t.data), "usage" in t && (r = et[t.usage]), "primitive" in t && (n = at[t.primitive]), "count" in t && (i = 0 | t.count), "type" in t && (h = u[t.type]), "length" in t ? (o = 0 | t.length) : ((o = i), 5123 === h || 5122 === h ? (o *= 2) : (5125 !== h && 5124 !== h) || (o *= 4))), a(f, e, r, n, i, o, h); } else c(), (f.primType = 4), (f.vertCount = 0), (f.type = 5121); return s; } var c = r.create(null, 34963, !0), f = new i(c._buffer); return ( n.elementsCount++, s(t), (s._reglType = "elements"), (s._elements = f), (s.subdata = function (t, e) { return c.subdata(t, e), s; }), (s.destroy = function () { o(f); }), s ); }, createStream: function (t) { var e = f.pop(); return ( e || (e = new i( r.create(null, 34963, !0, !1)._buffer, )), a(e, t, 35040, -1, -1, 0, 0), e ); }, destroyStream: function (t) { f.push(t); }, getElements: function (t) { return "function" == typeof t && t._elements instanceof i ? t._elements : null; }, clear: function () { K(s).forEach(o); }, }; } function m(t) { for ( var e = Z.allocType(5123, t.length), r = 0; r < t.length; ++r ) if (isNaN(t[r])) e[r] = 65535; else if (1 / 0 === t[r]) e[r] = 31744; else if (-1 / 0 === t[r]) e[r] = 64512; else { ot[0] = t[r]; var n = ((a = st[0]) >>> 31) << 15, i = ((a << 1) >>> 24) - 127, a = (a >> 13) & 1023; e[r] = -24 > i ? n : -14 > i ? n + ((a + 1024) >> (-14 - i)) : 15 < i ? n + 31744 : n + ((i + 15) << 10) + a; } return e; } function g(t) { return Array.isArray(t) || J(t); } function v(t) { return "[object " + t + "]"; } function y(t) { return ( Array.isArray(t) && (0 === t.length || "number" == typeof t[0]) ); } function x(t) { return !(!Array.isArray(t) || 0 === t.length || !g(t[0])); } function b(t) { return Object.prototype.toString.call(t); } function _(t) { if (!t) return !1; var e = b(t); return 0 <= vt.indexOf(e) || y(t) || x(t) || l(t); } function w(t, e) { 36193 === t.type ? ((t.data = m(e)), Z.freeType(e)) : (t.data = e); } function T(t, e, r, n, i, a) { if ( ((t = void 0 !== xt[t] ? xt[t] : ut[t] * yt[e]), a && (t *= 6), i) ) { for (n = 0; 1 <= r; ) (n += t * r * r), (r /= 2); return n; } return t * r * n; } function k(t, e, r, n, i, a, o) { function s() { (this.format = this.internalformat = 6408), (this.type = 5121), (this.flipY = this.premultiplyAlpha = this.compressed = !1), (this.unpackAlignment = 1), (this.colorSpace = 37444), (this.channels = this.height = this.width = 0); } function c(t, e) { (t.internalformat = e.internalformat), (t.format = e.format), (t.type = e.type), (t.compressed = e.compressed), (t.premultiplyAlpha = e.premultiplyAlpha), (t.flipY = e.flipY), (t.unpackAlignment = e.unpackAlignment), (t.colorSpace = e.colorSpace), (t.width = e.width), (t.height = e.height), (t.channels = e.channels); } function u(t, e) { if ("object" == typeof e && e) { "premultiplyAlpha" in e && (t.premultiplyAlpha = e.premultiplyAlpha), "flipY" in e && (t.flipY = e.flipY), "alignment" in e && (t.unpackAlignment = e.alignment), "colorSpace" in e && (t.colorSpace = V[e.colorSpace]), "type" in e && (t.type = q[e.type]); var r = t.width, n = t.height, i = t.channels, a = !1; "shape" in e ? ((r = e.shape[0]), (n = e.shape[1]), 3 === e.shape.length && ((i = e.shape[2]), (a = !0))) : ("radius" in e && (r = n = e.radius), "width" in e && (r = e.width), "height" in e && (n = e.height), "channels" in e && ((i = e.channels), (a = !0))), (t.width = 0 | r), (t.height = 0 | n), (t.channels = 0 | i), (r = !1), "format" in e && ((r = e.format), (n = t.internalformat = G[r]), (t.format = at[n]), r in q && !("type" in e) && (t.type = q[r]), r in Y && (t.compressed = !0), (r = !0)), !a && r ? (t.channels = ut[t.format]) : a && !r && t.channels !== ct[t.format] && (t.format = t.internalformat = ct[t.channels]); } } function f(e) { t.pixelStorei(37440, e.flipY), t.pixelStorei(37441, e.premultiplyAlpha), t.pixelStorei(37443, e.colorSpace), t.pixelStorei(3317, e.unpackAlignment); } function h() { s.call(this), (this.yOffset = this.xOffset = 0), (this.data = null), (this.needsFree = !1), (this.element = null), (this.needsCopy = !1); } function p(t, e) { var r = null; if ( (_(e) ? (r = e) : e && (u(t, e), "x" in e && (t.xOffset = 0 | e.x), "y" in e && (t.yOffset = 0 | e.y), _(e.data) && (r = e.data)), e.copy) ) { var n = i.viewportWidth, a = i.viewportHeight; (t.width = t.width || n - t.xOffset), (t.height = t.height || a - t.yOffset), (t.needsCopy = !0); } else if (r) { if (J(r)) (t.channels = t.channels || 4), (t.data = r), "type" in e || 5121 !== t.type || (t.type = 0 | $[Object.prototype.toString.call(r)]); else if (y(r)) { switch ( ((t.channels = t.channels || 4), (a = (n = r).length), t.type) ) { case 5121: case 5123: case 5125: case 5126: (a = Z.allocType(t.type, a)).set(n), (t.data = a); break; case 36193: t.data = m(n); } (t.alignment = 1), (t.needsFree = !0); } else if (l(r)) { (n = r.data), Array.isArray(n) || 5121 !== t.type || (t.type = 0 | $[Object.prototype.toString.call(n)]); a = r.shape; var o, s, c, f, h = r.stride; 3 === a.length ? ((c = a[2]), (f = h[2])) : (f = c = 1), (o = a[0]), (s = a[1]), (a = h[0]), (h = h[1]), (t.alignment = 1), (t.width = o), (t.height = s), (t.channels = c), (t.format = t.internalformat = ct[c]), (t.needsFree = !0), (o = f), (r = r.offset), (c = t.width), (f = t.height), (s = t.channels); for ( var p = Z.allocType( 36193 === t.type ? 5126 : t.type, c * f * s, ), d = 0, v = 0; v < f; ++v ) for (var T = 0; T < c; ++T) for (var k = 0; k < s; ++k) p[d++] = n[a * T + h * v + o * k + r]; w(t, p); } else if (b(r) === ft || b(r) === ht || b(r) === pt) b(r) === ft || b(r) === ht ? (t.element = r) : (t.element = r.canvas), (t.width = t.element.width), (t.height = t.element.height), (t.channels = 4); else if (b(r) === dt) (t.element = r), (t.width = r.width), (t.height = r.height), (t.channels = 4); else if (b(r) === mt) (t.element = r), (t.width = r.naturalWidth), (t.height = r.naturalHeight), (t.channels = 4); else if (b(r) === gt) (t.element = r), (t.width = r.videoWidth), (t.height = r.videoHeight), (t.channels = 4); else if (x(r)) { for ( n = t.width || r[0].length, a = t.height || r.length, h = t.channels, h = g(r[0][0]) ? h || r[0][0].length : h || 1, o = Q.shape(r), c = 1, f = 0; f < o.length; ++f ) c *= o[f]; (c = Z.allocType( 36193 === t.type ? 5126 : t.type, c, )), Q.flatten(r, o, "", c), w(t, c), (t.alignment = 1), (t.width = n), (t.height = a), (t.channels = h), (t.format = t.internalformat = ct[h]), (t.needsFree = !0); } } else (t.width = t.width || 1), (t.height = t.height || 1), (t.channels = t.channels || 4); } function d(e, r, i, a, o) { var s = e.element, l = e.data, c = e.internalformat, u = e.format, h = e.type, p = e.width, d = e.height; f(e), s ? t.texSubImage2D(r, o, i, a, u, h, s) : e.compressed ? t.compressedTexSubImage2D( r, o, i, a, c, p, d, l, ) : e.needsCopy ? (n(), t.copyTexSubImage2D( r, o, i, a, e.xOffset, e.yOffset, p, d, )) : t.texSubImage2D(r, o, i, a, p, d, u, h, l); } function v() { return ot.pop() || new h(); } function k(t) { t.needsFree && Z.freeType(t.data), h.call(t), ot.push(t); } function A() { s.call(this), (this.genMipmaps = !1), (this.mipmapHint = 4352), (this.mipmask = 0), (this.images = Array(16)); } function M(t, e, r) { var n = (t.images[0] = v()); (t.mipmask = 1), (n.width = t.width = e), (n.height = t.height = r), (n.channels = t.channels = 4); } function S(t, e) { var r = null; if (_(e)) c((r = t.images[0] = v()), t), p(r, e), (t.mipmask = 1); else if ((u(t, e), Array.isArray(e.mipmap))) for (var n = e.mipmap, i = 0; i < n.length; ++i) c((r = t.images[i] = v()), t), (r.width >>= i), (r.height >>= i), p(r, n[i]), (t.mipmask |= 1 << i); else c((r = t.images[0] = v()), t), p(r, e), (t.mipmask = 1); c(t, t.images[0]); } function E(e, r) { for ( var i = e.images, a = 0; a < i.length && i[a]; ++a ) { var o = i[a], s = r, l = a, c = o.element, u = o.data, h = o.internalformat, p = o.format, d = o.type, m = o.width, g = o.height; f(o), c ? t.texImage2D(s, l, p, p, d, c) : o.compressed ? t.compressedTexImage2D(s, l, h, m, g, 0, u) : o.needsCopy ? (n(), t.copyTexImage2D( s, l, p, o.xOffset, o.yOffset, m, g, 0, )) : t.texImage2D( s, l, p, m, g, 0, p, d, u || null, ); } } function L() { var t = st.pop() || new A(); s.call(t); for (var e = (t.mipmask = 0); 16 > e; ++e) t.images[e] = null; return t; } function C(t) { for (var e = t.images, r = 0; r < e.length; ++r) e[r] && k(e[r]), (e[r] = null); st.push(t); } function P() { (this.magFilter = this.minFilter = 9728), (this.wrapT = this.wrapS = 33071), (this.anisotropic = 1), (this.genMipmaps = !1), (this.mipmapHint = 4352); } function I(t, e) { "min" in e && ((t.minFilter = U[e.min]), 0 <= lt.indexOf(t.minFilter) && !("faces" in e) && (t.genMipmaps = !0)), "mag" in e && (t.magFilter = j[e.mag]); var r = t.wrapS, n = t.wrapT; if ("wrap" in e) { var i = e.wrap; "string" == typeof i ? (r = n = N[i]) : Array.isArray(i) && ((r = N[i[0]]), (n = N[i[1]])); } else "wrapS" in e && (r = N[e.wrapS]), "wrapT" in e && (n = N[e.wrapT]); if ( ((t.wrapS = r), (t.wrapT = n), "anisotropic" in e && (t.anisotropic = e.anisotropic), "mipmap" in e) ) { switch (((r = !1), typeof e.mipmap)) { case "string": (t.mipmapHint = B[e.mipmap]), (r = t.genMipmaps = !0); break; case "boolean": r = t.genMipmaps = e.mipmap; break; case "object": (t.genMipmaps = !1), (r = !0); } !r || "min" in e || (t.minFilter = 9984); } } function O(r, n) { t.texParameteri(n, 10241, r.minFilter), t.texParameteri(n, 10240, r.magFilter), t.texParameteri(n, 10242, r.wrapS), t.texParameteri(n, 10243, r.wrapT), e.ext_texture_filter_anisotropic && t.texParameteri(n, 34046, r.anisotropic), r.genMipmaps && (t.hint(33170, r.mipmapHint), t.generateMipmap(n)); } function z(e) { s.call(this), (this.mipmask = 0), (this.internalformat = 6408), (this.id = vt++), (this.refCount = 1), (this.target = e), (this.texture = t.createTexture()), (this.unit = -1), (this.bindCount = 0), (this.texInfo = new P()), o.profile && (this.stats = { size: 0 }); } function D(e) { t.activeTexture(33984), t.bindTexture(e.target, e.texture); } function R() { var e = bt[0]; e ? t.bindTexture(e.target, e.texture) : t.bindTexture(3553, null); } function F(e) { var r = e.texture, n = e.unit, i = e.target; 0 <= n && (t.activeTexture(33984 + n), t.bindTexture(i, null), (bt[n] = null)), t.deleteTexture(r), (e.texture = null), (e.params = null), (e.pixels = null), (e.refCount = 0), delete yt[e.id], a.textureCount--; } var B = { "don't care": 4352, "dont care": 4352, nice: 4354, fast: 4353, }, N = { repeat: 10497, clamp: 33071, mirror: 33648 }, j = { nearest: 9728, linear: 9729 }, U = H( { mipmap: 9987, "nearest mipmap nearest": 9984, "linear mipmap nearest": 9985, "nearest mipmap linear": 9986, "linear mipmap linear": 9987, }, j, ), V = { none: 0, browser: 37444 }, q = { uint8: 5121, rgba4: 32819, rgb565: 33635, "rgb5 a1": 32820, }, G = { alpha: 6406, luminance: 6409, "luminance alpha": 6410, rgb: 6407, rgba: 6408, rgba4: 32854, "rgb5 a1": 32855, rgb565: 36194, }, Y = {}; e.ext_srgb && ((G.srgb = 35904), (G.srgba = 35906)), e.oes_texture_float && (q.float32 = q.float = 5126), e.oes_texture_half_float && (q.float16 = q["half float"] = 36193), e.webgl_depth_texture && (H(G, { depth: 6402, "depth stencil": 34041 }), H(q, { uint16: 5123, uint32: 5125, "depth stencil": 34042, })), e.webgl_compressed_texture_s3tc && H(Y, { "rgb s3tc dxt1": 33776, "rgba s3tc dxt1": 33777, "rgba s3tc dxt3": 33778, "rgba s3tc dxt5": 33779, }), e.webgl_compressed_texture_atc && H(Y, { "rgb atc": 35986, "rgba atc explicit alpha": 35987, "rgba atc interpolated alpha": 34798, }), e.webgl_compressed_texture_pvrtc && H(Y, { "rgb pvrtc 4bppv1": 35840, "rgb pvrtc 2bppv1": 35841, "rgba pvrtc 4bppv1": 35842, "rgba pvrtc 2bppv1": 35843, }), e.webgl_compressed_texture_etc1 && (Y["rgb etc1"] = 36196); var W = Array.prototype.slice.call(t.getParameter(34467)); Object.keys(Y).forEach(function (t) { var e = Y[t]; 0 <= W.indexOf(e) && (G[t] = e); }); var X = Object.keys(G); r.textureFormats = X; var tt = []; Object.keys(G).forEach(function (t) { tt[G[t]] = t; }); var et = []; Object.keys(q).forEach(function (t) { et[q[t]] = t; }); var rt = []; Object.keys(j).forEach(function (t) { rt[j[t]] = t; }); var nt = []; Object.keys(U).forEach(function (t) { nt[U[t]] = t; }); var it = []; Object.keys(N).forEach(function (t) { it[N[t]] = t; }); var at = X.reduce(function (t, r) { var n = G[r]; return ( 6409 === n || 6406 === n || 6409 === n || 6410 === n || 6402 === n || 34041 === n || (e.ext_srgb && (35904 === n || 35906 === n)) ? (t[n] = n) : 32855 === n || 0 <= r.indexOf("rgba") ? (t[n] = 6408) : (t[n] = 6407), t ); }, {}), ot = [], st = [], vt = 0, yt = {}, xt = r.maxTextureUnits, bt = Array(xt).map(function () { return null; }); return ( H(z.prototype, { bind: function () { this.bindCount += 1; var e = this.unit; if (0 > e) { for (var r = 0; r < xt; ++r) { var n = bt[r]; if (n) { if (0 < n.bindCount) continue; n.unit = -1; } (bt[r] = this), (e = r); break; } o.profile && a.maxTextureUnits < e + 1 && (a.maxTextureUnits = e + 1), (this.unit = e), t.activeTexture(33984 + e), t.bindTexture(this.target, this.texture); } return e; }, unbind: function () { --this.bindCount; }, decRef: function () { 0 >= --this.refCount && F(this); }, }), o.profile && (a.getTotalTextureSize = function () { var t = 0; return ( Object.keys(yt).forEach(function (e) { t += yt[e].stats.size; }), t ); }), { create2D: function (e, r) { function n(t, e) { var r = i.texInfo; P.call(r); var a = L(); return ( "number" == typeof t ? M( a, 0 | t, "number" == typeof e ? 0 | e : 0 | t, ) : t ? (I(r, t), S(a, t)) : M(a, 1, 1), r.genMipmaps && (a.mipmask = (a.width << 1) - 1), (i.mipmask = a.mipmask), c(i, a), (i.internalformat = a.internalformat), (n.width = a.width), (n.height = a.height), D(i), E(a, 3553), O(r, 3553), R(), C(a), o.profile && (i.stats.size = T( i.internalformat, i.type, a.width, a.height, r.genMipmaps, !1, )), (n.format = tt[i.internalformat]), (n.type = et[i.type]), (n.mag = rt[r.magFilter]), (n.min = nt[r.minFilter]), (n.wrapS = it[r.wrapS]), (n.wrapT = it[r.wrapT]), n ); } var i = new z(3553); return ( (yt[i.id] = i), a.textureCount++, n(e, r), (n.subimage = function (t, e, r, a) { (e |= 0), (r |= 0), (a |= 0); var o = v(); return ( c(o, i), (o.width = 0), (o.height = 0), p(o, t), (o.width = o.width || (i.width >> a) - e), (o.height = o.height || (i.height >> a) - r), D(i), d(o, 3553, e, r, a), R(), k(o), n ); }), (n.resize = function (e, r) { var a = 0 | e, s = 0 | r || a; if (a === i.width && s === i.height) return n; (n.width = i.width = a), (n.height = i.height = s), D(i); for (var l = 0; i.mipmask >> l; ++l) { var c = a >> l, u = s >> l; if (!c || !u) break; t.texImage2D( 3553, l, i.format, c, u, 0, i.format, i.type, null, ); } return ( R(), o.profile && (i.stats.size = T( i.internalformat, i.type, a, s, !1, !1, )), n ); }), (n._reglType = "texture2d"), (n._texture = i), o.profile && (n.stats = i.stats), (n.destroy = function () { i.decRef(); }), n ); }, createCube: function (e, r, n, i, s, l) { function f(t, e, r, n, i, a) { var s, l = h.texInfo; for (P.call(l), s = 0; 6 > s; ++s) m[s] = L(); if ("number" != typeof t && t) { if ("object" == typeof t) if (e) S(m[0], t), S(m[1], e), S(m[2], r), S(m[3], n), S(m[4], i), S(m[5], a); else if ((I(l, t), u(h, t), "faces" in t)) for (t = t.faces, s = 0; 6 > s; ++s) c(m[s], h), S(m[s], t[s]); else for (s = 0; 6 > s; ++s) S(m[s], t); } else for (t = 0 | t || 1, s = 0; 6 > s; ++s) M(m[s], t, t); for ( c(h, m[0]), h.mipmask = l.genMipmaps ? (m[0].width << 1) - 1 : m[0].mipmask, h.internalformat = m[0].internalformat, f.width = m[0].width, f.height = m[0].height, D(h), s = 0; 6 > s; ++s ) E(m[s], 34069 + s); for ( O(l, 34067), R(), o.profile && (h.stats.size = T( h.internalformat, h.type, f.width, f.height, l.genMipmaps, !0, )), f.format = tt[h.internalformat], f.type = et[h.type], f.mag = rt[l.magFilter], f.min = nt[l.minFilter], f.wrapS = it[l.wrapS], f.wrapT = it[l.wrapT], s = 0; 6 > s; ++s ) C(m[s]); return f; } var h = new z(34067); (yt[h.id] = h), a.cubeCount++; var m = Array(6); return ( f(e, r, n, i, s, l), (f.subimage = function (t, e, r, n, i) { (r |= 0), (n |= 0), (i |= 0); var a = v(); return ( c(a, h), (a.width = 0), (a.height = 0), p(a, e), (a.width = a.width || (h.width >> i) - r), (a.height = a.height || (h.height >> i) - n), D(h), d(a, 34069 + t, r, n, i), R(), k(a), f ); }), (f.resize = function (e) { if ((e |= 0) !== h.width) { (f.width = h.width = e), (f.height = h.height = e), D(h); for (var r = 0; 6 > r; ++r) for (var n = 0; h.mipmask >> n; ++n) t.texImage2D( 34069 + r, n, h.format, e >> n, e >> n, 0, h.format, h.type, null, ); return ( R(), o.profile && (h.stats.size = T( h.internalformat, h.type, f.width, f.height, !1, !0, )), f ); } }), (f._reglType = "textureCube"), (f._texture = h), o.profile && (f.stats = h.stats), (f.destroy = function () { h.decRef(); }), f ); }, clear: function () { for (var e = 0; e < xt; ++e) t.activeTexture(33984 + e), t.bindTexture(3553, null), (bt[e] = null); K(yt).forEach(F), (a.cubeCount = 0), (a.textureCount = 0); }, getTexture: function (t) { return null; }, restore: function () { for (var e = 0; e < xt; ++e) { var r = bt[e]; r && ((r.bindCount = 0), (r.unit = -1), (bt[e] = null)); } K(yt).forEach(function (e) { (e.texture = t.createTexture()), t.bindTexture(e.target, e.texture); for (var r = 0; 32 > r; ++r) if (0 != (e.mipmask & (1 << r))) if (3553 === e.target) t.texImage2D( 3553, r, e.internalformat, e.width >> r, e.height >> r, 0, e.internalformat, e.type, null, ); else for (var n = 0; 6 > n; ++n) t.texImage2D( 34069 + n, r, e.internalformat, e.width >> r, e.height >> r, 0, e.internalformat, e.type, null, ); O(e.texInfo, e.target); }); }, refresh: function () { for (var e = 0; e < xt; ++e) { var r = bt[e]; r && ((r.bindCount = 0), (r.unit = -1), (bt[e] = null)), t.activeTexture(33984 + e), t.bindTexture(3553, null), t.bindTexture(34067, null); } }, } ); } function A(t, e, r, n, i, a) { function o(t, e, r) { (this.target = t), (this.texture = e), (this.renderbuffer = r); var n = (t = 0); e ? ((t = e.width), (n = e.height)) : r && ((t = r.width), (n = r.height)), (this.width = t), (this.height = n); } function s(t) { t && (t.texture && t.texture._texture.decRef(), t.renderbuffer && t.renderbuffer._renderbuffer.decRef()); } function l(t, e, r) { t && (t.texture ? (t.texture._texture.refCount += 1) : (t.renderbuffer._renderbuffer.refCount += 1)); } function c(e, r) { r && (r.texture ? t.framebufferTexture2D( 36160, e, r.target, r.texture._texture.texture, 0, ) : t.framebufferRenderbuffer( 36160, e, 36161, r.renderbuffer._renderbuffer.renderbuffer, )); } function u(t) { var e = 3553, r = null, n = null, i = t; return ( "object" == typeof t && ((i = t.data), "target" in t && (e = 0 | t.target)), "texture2d" === (t = i._reglType) || "textureCube" === t ? (r = i) : "renderbuffer" === t && ((n = i), (e = 36161)), new o(e, r, n) ); } function f(t, e, r, a, s) { return r ? (((t = n.create2D({ width: t, height: e, format: a, type: s, }))._texture.refCount = 0), new o(3553, t, null)) : (((t = i.create({ width: t, height: e, format: a, }))._renderbuffer.refCount = 0), new o(36161, null, t)); } function h(t) { return t && (t.texture || t.renderbuffer); } function p(t, e, r) { t && (t.texture ? t.texture.resize(e, r) : t.renderbuffer && t.renderbuffer.resize(e, r), (t.width = e), (t.height = r)); } function d() { (this.id = T++), (k[this.id] = this), (this.framebuffer = t.createFramebuffer()), (this.height = this.width = 0), (this.colorAttachments = []), (this.depthStencilAttachment = this.stencilAttachment = this.depthAttachment = null); } function m(t) { t.colorAttachments.forEach(s), s(t.depthAttachment), s(t.stencilAttachment), s(t.depthStencilAttachment); } function g(e) { t.deleteFramebuffer(e.framebuffer), (e.framebuffer = null), a.framebufferCount--, delete k[e.id]; } function v(e) { var n; t.bindFramebuffer(36160, e.framebuffer); var i = e.colorAttachments; for (n = 0; n < i.length; ++n) c(36064 + n, i[n]); for (n = i.length; n < r.maxColorAttachments; ++n) t.framebufferTexture2D( 36160, 36064 + n, 3553, null, 0, ); t.framebufferTexture2D(36160, 33306, 3553, null, 0), t.framebufferTexture2D(36160, 36096, 3553, null, 0), t.framebufferTexture2D(36160, 36128, 3553, null, 0), c(36096, e.depthAttachment), c(36128, e.stencilAttachment), c(33306, e.depthStencilAttachment), t.checkFramebufferStatus(36160), t.isContextLost(), t.bindFramebuffer( 36160, x.next ? x.next.framebuffer : null, ), (x.cur = x.next), t.getError(); } function y(t, e) { function r(t, e) { var i, a = 0, o = 0, s = !0, c = !0; i = null; var p = !0, d = "rgba", g = "uint8", y = 1, x = null, w = null, T = null, k = !1; "number" == typeof t ? ((a = 0 | t), (o = 0 | e || a)) : t ? ("shape" in t ? ((a = (o = t.shape)[0]), (o = o[1])) : ("radius" in t && (a = o = t.radius), "width" in t && (a = t.width), "height" in t && (o = t.height)), ("color" in t || "colors" in t) && ((i = t.color || t.colors), Array.isArray(i)), i || ("colorCount" in t && (y = 0 | t.colorCount), "colorTexture" in t && ((p = !!t.colorTexture), (d = "rgba4")), "colorType" in t && ((g = t.colorType), !p) && ("half float" === g || "float16" === g ? (d = "rgba16f") : ("float" !== g && "float32" !== g) || (d = "rgba32f")), "colorFormat" in t && ((d = t.colorFormat), 0 <= b.indexOf(d) ? (p = !0) : 0 <= _.indexOf(d) && (p = !1))), ("depthTexture" in t || "depthStencilTexture" in t) && (k = !( !t.depthTexture && !t.depthStencilTexture )), "depth" in t && ("boolean" == typeof t.depth ? (s = t.depth) : ((x = t.depth), (c = !1))), "stencil" in t && ("boolean" == typeof t.stencil ? (c = t.stencil) : ((w = t.stencil), (s = !1))), "depthStencil" in t && ("boolean" == typeof t.depthStencil ? (s = c = t.depthStencil) : ((T = t.depthStencil), (c = s = !1)))) : (a = o = 1); var A = null, M = null, S = null, E = null; if (Array.isArray(i)) A = i.map(u); else if (i) A = [u(i)]; else for (A = Array(y), i = 0; i < y; ++i) A[i] = f(a, o, p, d, g); for ( a = a || A[0].width, o = o || A[0].height, x ? (M = u(x)) : s && !c && (M = f(a, o, k, "depth", "uint32")), w ? (S = u(w)) : c && !s && (S = f(a, o, !1, "stencil", "uint8")), T ? (E = u(T)) : !x && !w && c && s && (E = f( a, o, k, "depth stencil", "depth stencil", )), s = null, i = 0; i < A.length; ++i ) l(A[i]), A[i] && A[i].texture && ((c = wt[A[i].texture._texture.format] * Tt[A[i].texture._texture.type]), null === s && (s = c)); return ( l(M), l(S), l(E), m(n), (n.width = a), (n.height = o), (n.colorAttachments = A), (n.depthAttachment = M), (n.stencilAttachment = S), (n.depthStencilAttachment = E), (r.color = A.map(h)), (r.depth = h(M)), (r.stencil = h(S)), (r.depthStencil = h(E)), (r.width = n.width), (r.height = n.height), v(n), r ); } var n = new d(); return ( a.framebufferCount++, r(t, e), H(r, { resize: function (t, e) { var i = Math.max(0 | t, 1), a = Math.max(0 | e || i, 1); if (i === n.width && a === n.height) return r; for ( var o = n.colorAttachments, s = 0; s < o.length; ++s ) p(o[s], i, a); return ( p(n.depthAttachment, i, a), p(n.stencilAttachment, i, a), p(n.depthStencilAttachment, i, a), (n.width = r.width = i), (n.height = r.height = a), v(n), r ); }, _reglType: "framebuffer", _framebuffer: n, destroy: function () { g(n), m(n); }, use: function (t) { x.setFBO({ framebuffer: r }, t); }, }) ); } var x = { cur: null, next: null, dirty: !1, setFBO: null, }, b = ["rgba"], _ = ["rgba4", "rgb565", "rgb5 a1"]; e.ext_srgb && _.push("srgba"), e.ext_color_buffer_half_float && _.push("rgba16f", "rgb16f"), e.webgl_color_buffer_float && _.push("rgba32f"); var w = ["uint8"]; e.oes_texture_half_float && w.push("half float", "float16"), e.oes_texture_float && w.push("float", "float32"); var T = 0, k = {}; return H(x, { getFramebuffer: function (t) { return "function" == typeof t && "framebuffer" === t._reglType && (t = t._framebuffer) instanceof d ? t : null; }, create: y, createCube: function (t) { function e(t) { var i, a = { color: null }, o = 0, s = null; i = "rgba"; var l = "uint8", c = 1; if ( ("number" == typeof t ? (o = 0 | t) : t ? ("shape" in t ? (o = t.shape[0]) : ("radius" in t && (o = 0 | t.radius), "width" in t ? (o = 0 | t.width) : "height" in t && (o = 0 | t.height)), ("color" in t || "colors" in t) && ((s = t.color || t.colors), Array.isArray(s)), s || ("colorCount" in t && (c = 0 | t.colorCount), "colorType" in t && (l = t.colorType), "colorFormat" in t && (i = t.colorFormat)), "depth" in t && (a.depth = t.depth), "stencil" in t && (a.stencil = t.stencil), "depthStencil" in t && (a.depthStencil = t.depthStencil)) : (o = 1), s) ) if (Array.isArray(s)) for (t = [], i = 0; i < s.length; ++i) t[i] = s[i]; else t = [s]; else for ( t = Array(c), s = { radius: o, format: i, type: l }, i = 0; i < c; ++i ) t[i] = n.createCube(s); for ( a.color = Array(t.length), i = 0; i < t.length; ++i ) (c = t[i]), (o = o || c.width), (a.color[i] = { target: 34069, data: t[i] }); for (i = 0; 6 > i; ++i) { for (c = 0; c < t.length; ++c) a.color[c].target = 34069 + i; 0 < i && ((a.depth = r[0].depth), (a.stencil = r[0].stencil), (a.depthStencil = r[0].depthStencil)), r[i] ? r[i](a) : (r[i] = y(a)); } return H(e, { width: o, height: o, color: t }); } var r = Array(6); return ( e(t), H(e, { faces: r, resize: function (t) { var n = 0 | t; if (n === e.width) return e; var i = e.color; for (t = 0; t < i.length; ++t) i[t].resize(n); for (t = 0; 6 > t; ++t) r[t].resize(n); return (e.width = e.height = n), e; }, _reglType: "framebufferCube", destroy: function () { r.forEach(function (t) { t.destroy(); }); }, }) ); }, clear: function () { K(k).forEach(g); }, restore: function () { (x.cur = null), (x.next = null), (x.dirty = !0), K(k).forEach(function (e) { (e.framebuffer = t.createFramebuffer()), v(e); }); }, }); } function M() { (this.w = this.z = this.y = this.x = this.state = 0), (this.buffer = null), (this.size = 0), (this.normalized = !1), (this.type = 5126), (this.divisor = this.stride = this.offset = 0); } function S(t, e, r, n, i, a, o) { function s() { (this.id = ++f), (this.attributes = []), (this.elements = null), (this.ownsElements = !1), (this.offset = this.count = 0), (this.instances = -1), (this.primitive = 4); var t = e.oes_vertex_array_object; (this.vao = t ? t.createVertexArrayOES() : null), (h[this.id] = this), (this.buffers = []); } var c = r.maxAttributes, u = Array(c); for (r = 0; r < c; ++r) u[r] = new M(); var f = 0, h = {}, p = { Record: M, scope: {}, state: u, currentVAO: null, targetVAO: null, restore: e.oes_vertex_array_object ? function () { e.oes_vertex_array_object && K(h).forEach(function (t) { t.refresh(); }); } : function () {}, createVAO: function (t) { function e(t) { var n; Array.isArray(t) ? ((n = t), r.elements && r.ownsElements && r.elements.destroy(), (r.elements = null), (r.ownsElements = !1), (r.offset = 0), (r.count = 0), (r.instances = -1), (r.primitive = 4)) : (t.elements ? ((n = t.elements), r.ownsElements ? ("function" == typeof n && "elements" === n._reglType ? r.elements.destroy() : r.elements(n), (r.ownsElements = !1)) : a.getElements(t.elements) ? ((r.elements = t.elements), (r.ownsElements = !1)) : ((r.elements = a.create( t.elements, )), (r.ownsElements = !0))) : ((r.elements = null), (r.ownsElements = !1)), (n = t.attributes), (r.offset = 0), (r.count = -1), (r.instances = -1), (r.primitive = 4), r.elements && ((r.count = r.elements._elements.vertCount), (r.primitive = r.elements._elements.primType)), "offset" in t && (r.offset = 0 | t.offset), "count" in t && (r.count = 0 | t.count), "instances" in t && (r.instances = 0 | t.instances), "primitive" in t && (r.primitive = at[t.primitive])), (t = {}); var o = r.attributes; o.length = n.length; for (var s = 0; s < n.length; ++s) { var c, u = n[s], f = (o[s] = new M()), h = u.data || u; if (Array.isArray(h) || J(h) || l(h)) r.buffers[s] && ((c = r.buffers[s]), J(h) && c._buffer.byteLength >= h.byteLength ? c.subdata(h) : (c.destroy(), (r.buffers[s] = null))), r.buffers[s] || (c = r.buffers[s] = i.create(u, 34962, !1, !0)), (f.buffer = i.getBuffer(c)), (f.size = 0 | f.buffer.dimension), (f.normalized = !1), (f.type = f.buffer.dtype), (f.offset = 0), (f.stride = 0), (f.divisor = 0), (f.state = 1), (t[s] = 1); else i.getBuffer(u) ? ((f.buffer = i.getBuffer(u)), (f.size = 0 | f.buffer.dimension), (f.normalized = !1), (f.type = f.buffer.dtype), (f.offset = 0), (f.stride = 0), (f.divisor = 0), (f.state = 1)) : i.getBuffer(u.buffer) ? ((f.buffer = i.getBuffer(u.buffer)), (f.size = 0 | (+u.size || f.buffer.dimension)), (f.normalized = !!u.normalized || !1), (f.type = "type" in u ? tt[u.type] : f.buffer.dtype), (f.offset = 0 | (u.offset || 0)), (f.stride = 0 | (u.stride || 0)), (f.divisor = 0 | (u.divisor || 0)), (f.state = 1)) : "x" in u && ((f.x = +u.x || 0), (f.y = +u.y || 0), (f.z = +u.z || 0), (f.w = +u.w || 0), (f.state = 2)); } for (c = 0; c < r.buffers.length; ++c) !t[c] && r.buffers[c] && (r.buffers[c].destroy(), (r.buffers[c] = null)); return r.refresh(), e; } var r = new s(); return ( (n.vaoCount += 1), (e.destroy = function () { for (var t = 0; t < r.buffers.length; ++t) r.buffers[t] && r.buffers[t].destroy(); (r.buffers.length = 0), r.ownsElements && (r.elements.destroy(), (r.elements = null), (r.ownsElements = !1)), r.destroy(); }), (e._vao = r), (e._reglType = "vao"), e(t) ); }, getVAO: function (t) { return "function" == typeof t && t._vao ? t._vao : null; }, destroyBuffer: function (e) { for (var r = 0; r < u.length; ++r) { var n = u[r]; n.buffer === e && (t.disableVertexAttribArray(r), (n.buffer = null)); } }, setVAO: e.oes_vertex_array_object ? function (t) { if (t !== p.currentVAO) { var r = e.oes_vertex_array_object; t ? r.bindVertexArrayOES(t.vao) : r.bindVertexArrayOES(null), (p.currentVAO = t); } } : function (r) { if (r !== p.currentVAO) { if (r) r.bindAttrs(); else { for ( var n = e.angle_instanced_arrays, i = 0; i < u.length; ++i ) { var a = u[i]; a.buffer ? (t.enableVertexAttribArray(i), a.buffer.bind(), t.vertexAttribPointer( i, a.size, a.type, a.normalized, a.stride, a.offfset, ), n && a.divisor && n.vertexAttribDivisorANGLE( i, a.divisor, )) : (t.disableVertexAttribArray(i), t.vertexAttrib4f( i, a.x, a.y, a.z, a.w, )); } o.elements ? t.bindBuffer( 34963, o.elements.buffer.buffer, ) : t.bindBuffer(34963, null); } p.currentVAO = r; } }, clear: e.oes_vertex_array_object ? function () { K(h).forEach(function (t) { t.destroy(); }); } : function () {}, }; return ( (s.prototype.bindAttrs = function () { for ( var r = e.angle_instanced_arrays, n = this.attributes, i = 0; i < n.length; ++i ) { var o = n[i]; o.buffer ? (t.enableVertexAttribArray(i), t.bindBuffer(34962, o.buffer.buffer), t.vertexAttribPointer( i, o.size, o.type, o.normalized, o.stride, o.offset, ), r && o.divisor && r.vertexAttribDivisorANGLE(i, o.divisor)) : (t.disableVertexAttribArray(i), t.vertexAttrib4f(i, o.x, o.y, o.z, o.w)); } for (r = n.length; r < c; ++r) t.disableVertexAttribArray(r); (r = a.getElements(this.elements)) ? t.bindBuffer(34963, r.buffer.buffer) : t.bindBuffer(34963, null); }), (s.prototype.refresh = function () { var t = e.oes_vertex_array_object; t && (t.bindVertexArrayOES(this.vao), this.bindAttrs(), (p.currentVAO = null), t.bindVertexArrayOES(null)); }), (s.prototype.destroy = function () { if (this.vao) { var t = e.oes_vertex_array_object; this === p.currentVAO && ((p.currentVAO = null), t.bindVertexArrayOES(null)), t.deleteVertexArrayOES(this.vao), (this.vao = null); } this.ownsElements && (this.elements.destroy(), (this.elements = null), (this.ownsElements = !1)), h[this.id] && (delete h[this.id], --n.vaoCount); }), p ); } function E(t, e, r, n) { function i(t, e, r, n) { (this.name = t), (this.id = e), (this.location = r), (this.info = n); } function a(t, e) { for (var r = 0; r < t.length; ++r) if (t[r].id === e.id) return void (t[r].location = e.location); t.push(e); } function o(r, n, i) { if (!(o = (i = 35632 === r ? c : u)[n])) { var a = e.str(n), o = t.createShader(r); t.shaderSource(o, a), t.compileShader(o), (i[n] = o); } return o; } function s(t, e) { (this.id = p++), (this.fragId = t), (this.vertId = e), (this.program = null), (this.uniforms = []), (this.attributes = []), (this.refCount = 1), n.profile && (this.stats = { uniformsCount: 0, attributesCount: 0, }); } function l(r, s, l) { var c; c = o(35632, r.fragId); var u = o(35633, r.vertId); if ( ((s = r.program = t.createProgram()), t.attachShader(s, c), t.attachShader(s, u), l) ) for (c = 0; c < l.length; ++c) (u = l[c]), t.bindAttribLocation(s, u[0], u[1]); t.linkProgram(s), (u = t.getProgramParameter(s, 35718)), n.profile && (r.stats.uniformsCount = u); var f = r.uniforms; for (c = 0; c < u; ++c) if ((l = t.getActiveUniform(s, c))) if (1 < l.size) for (var h = 0; h < l.size; ++h) { var p = l.name.replace("[0]", "[" + h + "]"); a( f, new i( p, e.id(p), t.getUniformLocation(s, p), l, ), ); } else a( f, new i( l.name, e.id(l.name), t.getUniformLocation(s, l.name), l, ), ); for ( u = t.getProgramParameter(s, 35721), n.profile && (r.stats.attributesCount = u), r = r.attributes, c = 0; c < u; ++c ) (l = t.getActiveAttrib(s, c)) && a( r, new i( l.name, e.id(l.name), t.getAttribLocation(s, l.name), l, ), ); } var c = {}, u = {}, f = {}, h = [], p = 0; return ( n.profile && ((r.getMaxUniformsCount = function () { var t = 0; return ( h.forEach(function (e) { e.stats.uniformsCount > t && (t = e.stats.uniformsCount); }), t ); }), (r.getMaxAttributesCount = function () { var t = 0; return ( h.forEach(function (e) { e.stats.attributesCount > t && (t = e.stats.attributesCount); }), t ); })), { clear: function () { var e = t.deleteShader.bind(t); K(c).forEach(e), (c = {}), K(u).forEach(e), (u = {}), h.forEach(function (e) { t.deleteProgram(e.program); }), (h.length = 0), (f = {}), (r.shaderCount = 0); }, program: function (e, n, i, a) { var o = f[n]; o || (o = f[n] = {}); var p = o[e]; if (p && (p.refCount++, !a)) return p; var d = new s(n, e); return ( r.shaderCount++, l(d, i, a), p || (o[e] = d), h.push(d), H(d, { destroy: function () { if ((d.refCount--, 0 >= d.refCount)) { t.deleteProgram(d.program); var e = h.indexOf(d); h.splice(e, 1), r.shaderCount--; } 0 >= o[d.vertId].refCount && (t.deleteShader(u[d.vertId]), delete u[d.vertId], delete f[d.fragId][d.vertId]), Object.keys(f[d.fragId]).length || (t.deleteShader(c[d.fragId]), delete c[d.fragId], delete f[d.fragId]); }, }) ); }, restore: function () { (c = {}), (u = {}); for (var t = 0; t < h.length; ++t) l( h[t], null, h[t].attributes.map(function (t) { return [t.location, t.name]; }), ); }, shader: o, frag: -1, vert: -1, } ); } function L(t, e, r, n, i, a, o) { function s(i) { var a; a = null === e.next ? 5121 : e.next.colorAttachments[0].texture._texture.type; var o = 0, s = 0, l = n.framebufferWidth, c = n.framebufferHeight, u = null; return ( J(i) ? (u = i) : i && ((o = 0 | i.x), (s = 0 | i.y), (l = 0 | (i.width || n.framebufferWidth - o)), (c = 0 | (i.height || n.framebufferHeight - s)), (u = i.data || null)), r(), (i = l * c * 4), u || (5121 === a ? (u = new Uint8Array(i)) : 5126 === a && (u = u || new Float32Array(i))), t.pixelStorei(3333, 4), t.readPixels(o, s, l, c, 6408, a, u), u ); } return function (t) { return t && "framebuffer" in t ? (function (t) { var r; return ( e.setFBO( { framebuffer: t.framebuffer }, function () { r = s(t); }, ), r ); })(t) : s(t); }; } function C(t, e) { return (t >>> e) | (t << (32 - e)); } function P(t, e) { var r = (65535 & t) + (65535 & e); return ( (((t >> 16) + (e >> 16) + (r >> 16)) << 16) | (65535 & r) ); } function I(t) { return Array.prototype.slice.call(t); } function O(t) { return I(t).join(""); } function z(t) { function e() { var t = [], e = []; return H( function () { t.push.apply(t, I(arguments)); }, { def: function () { var r = "v" + i++; return ( e.push(r), 0 < arguments.length && (t.push(r, "="), t.push.apply(t, I(arguments)), t.push(";")), r ); }, toString: function () { return O([ 0 < e.length ? "var " + e.join(",") + ";" : "", O(t), ]); }, }, ); } function r() { function t(t, e) { n(t, e, "=", r.def(t, e), ";"); } var r = e(), n = e(), i = r.toString, a = n.toString; return H( function () { r.apply(r, I(arguments)); }, { def: r.def, entry: r, exit: n, save: t, set: function (e, n, i) { t(e, n), r(e, n, "=", i, ";"); }, toString: function () { return i() + a(); }, }, ); } var n = t && t.cache, i = 0, a = [], o = [], s = [], l = e(), c = {}; return { global: l, link: function (t, e) { var r = e && e.stable; if (!r) for (var n = 0; n < o.length; ++n) if (o[n] === t && !s[n]) return a[n]; return ( (n = "g" + i++), a.push(n), o.push(t), s.push(r), n ); }, block: e, proc: function (t, e) { function n() { var t = "a" + i.length; return i.push(t), t; } var i = []; e = e || 0; for (var a = 0; a < e; ++a) n(); var o = (a = r()).toString; return (c[t] = H(a, { arg: n, toString: function () { return O(["function(", i.join(), "){", o(), "}"]); }, })); }, scope: r, cond: function () { var t = O(arguments), e = r(), n = r(), i = e.toString, a = n.toString; return H(e, { then: function () { return e.apply(e, I(arguments)), this; }, else: function () { return n.apply(n, I(arguments)), this; }, toString: function () { var e = a(); return ( e && (e = "else{" + e + "}"), O(["if(", t, "){", i(), "}", e]) ); }, }); }, compile: function () { var t = ['"use strict";', l, "return {"]; Object.keys(c).forEach(function (e) { t.push('"', e, '":', c[e].toString(), ","); }), t.push("}"); var e, r = O(t) .replace(/;/g, ";\n") .replace(/}/g, "}\n") .replace(/{/g, "{\n"); return n && ((e = (function (t) { for (var e, r = "", n = 0; n < t.length; n++) (e = t.charCodeAt(n)), (r += "0123456789abcdef".charAt((e >>> 4) & 15) + "0123456789abcdef".charAt(15 & e)); return r; })( (function (t) { for ( var e = Array(t.length >> 2), r = 0; r < e.length; r++ ) e[r] = 0; for (r = 0; r < 8 * t.length; r += 8) e[r >> 5] |= (255 & t.charCodeAt(r / 8)) << (24 - (r % 32)); var n, i, a, o, s, l, c, u, f, h, p, d = 8 * t.length; for ( t = [ 1779033703, -1150833019, 1013904242, -1521486534, 1359893119, -1694144372, 528734635, 1541459225, ], r = Array(64), e[d >> 5] |= 128 << (24 - (d % 32)), e[15 + (((d + 64) >> 9) << 4)] = d, u = 0; u < e.length; u += 16 ) { for ( d = t[0], n = t[1], i = t[2], a = t[3], o = t[4], s = t[5], l = t[6], c = t[7], f = 0; 64 > f; f++ ) { var m; if (16 > f) r[f] = e[f + u]; else (h = f), (p = P( (p = C((p = r[f - 2]), 17) ^ C(p, 19) ^ (p >>> 10)), r[f - 7], )), (m = C((m = r[f - 15]), 7) ^ C(m, 18) ^ (m >>> 3)), (r[h] = P(P(p, m), r[f - 16])); (h = P( P( P( P( c, (h = C((h = o), 6) ^ C(h, 11) ^ C(h, 25)), ), (o & s) ^ (~o & l), ), kt[f], ), r[f], )), (p = P( (c = C((c = d), 2) ^ C(c, 13) ^ C(c, 22)), (d & n) ^ (d & i) ^ (n & i), )), (c = l), (l = s), (s = o), (o = P(a, h)), (a = i), (i = n), (n = d), (d = P(h, p)); } (t[0] = P(d, t[0])), (t[1] = P(n, t[1])), (t[2] = P(i, t[2])), (t[3] = P(a, t[3])), (t[4] = P(o, t[4])), (t[5] = P(s, t[5])), (t[6] = P(l, t[6])), (t[7] = P(c, t[7])); } for (e = "", r = 0; r < 32 * t.length; r += 8) e += String.fromCharCode( (t[r >> 5] >>> (24 - (r % 32))) & 255, ); return e; })( (function (t) { for ( var e, r, n = "", i = -1; ++i < t.length; ) (e = t.charCodeAt(i)), (r = i + 1 < t.length ? t.charCodeAt(i + 1) : 0), 55296 <= e && 56319 >= e && 56320 <= r && 57343 >= r && ((e = 65536 + ((1023 & e) << 10) + (1023 & r)), i++), 127 >= e ? (n += String.fromCharCode(e)) : 2047 >= e ? (n += String.fromCharCode( 192 | ((e >>> 6) & 31), 128 | (63 & e), )) : 65535 >= e ? (n += String.fromCharCode( 224 | ((e >>> 12) & 15), 128 | ((e >>> 6) & 63), 128 | (63 & e), )) : 2097151 >= e && (n += String.fromCharCode( 240 | ((e >>> 18) & 7), 128 | ((e >>> 12) & 63), 128 | ((e >>> 6) & 63), 128 | (63 & e), )); return n; })(r), ), )), n[e]) ? n[e].apply(null, o) : ((r = Function.apply(null, a.concat(r))), n && (n[e] = r), r.apply(null, o)); }, }; } function D(t) { return Array.isArray(t) || J(t) || l(t); } function R(t) { return t.sort(function (t, e) { return "viewport" === t ? -1 : "viewport" === e ? 1 : t < e ? -1 : 1; }); } function F(t, e, r, n) { (this.thisDep = t), (this.contextDep = e), (this.propDep = r), (this.append = n); } function B(t) { return t && !(t.thisDep || t.contextDep || t.propDep); } function N(t) { return new F(!1, !1, !1, t); } function j(t, e) { var r = t.type; if (0 === r) return new F(!0, 1 <= (r = t.data.length), 2 <= r, e); if (4 === r) return new F( (r = t.data).thisDep, r.contextDep, r.propDep, e, ); if (5 === r) return new F(!1, !1, !1, e); if (6 === r) { for ( var n = (r = !1), i = !1, a = 0; a < t.data.length; ++a ) { var o = t.data[a]; 1 === o.type ? (i = !0) : 2 === o.type ? (n = !0) : 3 === o.type ? (r = !0) : 0 === o.type ? ((r = !0), 1 <= (o = o.data) && (n = !0), 2 <= o && (i = !0)) : 4 === o.type && ((r = r || o.data.thisDep), (n = n || o.data.contextDep), (i = i || o.data.propDep)); } return new F(r, n, i, e); } return new F(3 === r, 2 === r, 1 === r, e); } function U(t, e, r, n, i, o, s, l, c, u, f, h, p, d, m, v) { function y(t) { return t.replace(".", "_"); } function x(t, e, r) { var n = y(t); ot.push(t), (it[n] = nt[n] = !!r), (st[n] = e); } function b(t, e, r) { var n = y(t); ot.push(t), Array.isArray(r) ? ((nt[n] = r.slice()), (it[n] = r.slice())) : (nt[n] = it[n] = r), (lt[n] = e); } function _() { var t = z({ cache: m }), r = t.link, n = t.global; (t.id = ft++), (t.batchId = "0"); var i = r(ct), a = (t.shared = { props: "a0" }); Object.keys(ct).forEach(function (t) { a[t] = n.def(i, ".", t); }); var o = (t.next = {}), s = (t.current = {}); Object.keys(lt).forEach(function (t) { Array.isArray(nt[t]) && ((o[t] = n.def(a.next, ".", t)), (s[t] = n.def(a.current, ".", t))); }); var l = (t.constants = {}); Object.keys(ut).forEach(function (t) { l[t] = n.def(JSON.stringify(ut[t])); }), (t.invoke = function (e, n) { switch (n.type) { case 0: var i = ["this", a.context, a.props, t.batchId]; return e.def( r(n.data), ".call(", i.slice(0, Math.max(n.data.length + 1, 4)), ")", ); case 1: return e.def(a.props, n.data); case 2: return e.def(a.context, n.data); case 3: return e.def("this", n.data); case 4: return n.data.append(t, e), n.data.ref; case 5: return n.data.toString(); case 6: return n.data.map(function (r) { return t.invoke(e, r); }); } }), (t.attribCache = {}); var c = {}; return ( (t.scopeAttrib = function (t) { if ((t = e.id(t)) in c) return c[t]; var n = u.scope[t]; return ( n || (n = u.scope[t] = new K()), (c[t] = r(n)) ); }), t ); } function w(t, e) { var r = t.static, n = t.dynamic; if ("framebuffer" in r) { var i = r.framebuffer; return i ? ((i = l.getFramebuffer(i)), N(function (t, e) { var r = t.link(i), n = t.shared; return ( e.set(n.framebuffer, ".next", r), (n = n.context), e.set(n, ".framebufferWidth", r + ".width"), e.set(n, ".framebufferHeight", r + ".height"), r ); })) : N(function (t, e) { var r = t.shared; return ( e.set(r.framebuffer, ".next", "null"), (r = r.context), e.set( r, ".framebufferWidth", r + ".drawingBufferWidth", ), e.set( r, ".framebufferHeight", r + ".drawingBufferHeight", ), "null" ); }); } if ("framebuffer" in n) { var a = n.framebuffer; return j(a, function (t, e) { var r = t.invoke(e, a), n = t.shared, i = n.framebuffer; r = e.def(i, ".getFramebuffer(", r, ")"); return ( e.set(i, ".next", r), (n = n.context), e.set( n, ".framebufferWidth", r + "?" + r + ".width:" + n + ".drawingBufferWidth", ), e.set( n, ".framebufferHeight", r + "?" + r + ".height:" + n + ".drawingBufferHeight", ), r ); }); } return null; } function T(t, r, n) { function i(t) { if (t in a) { var r = e.id(a[t]); return ( ((t = N(function () { return r; })).id = r), t ); } if (t in o) { var n = o[t]; return j(n, function (t, e) { var r = t.invoke(e, n); return e.def(t.shared.strings, ".id(", r, ")"); }); } return null; } var a = t.static, o = t.dynamic, s = i("frag"), l = i("vert"), c = null; return ( B(s) && B(l) ? ((c = f.program(l.id, s.id, null, n)), (t = N(function (t, e) { return t.link(c); }))) : (t = new F( (s && s.thisDep) || (l && l.thisDep), (s && s.contextDep) || (l && l.contextDep), (s && s.propDep) || (l && l.propDep), function (t, e) { var r, n, i = t.shared.shader; return ( (r = s ? s.append(t, e) : e.def(i, ".", "frag")), (n = l ? l.append(t, e) : e.def(i, ".", "vert")), e.def(i + ".program(" + n + "," + r + ")") ); }, )), { frag: s, vert: l, progVar: t, program: c } ); } function k(t, e) { function r(t, e) { if (t in n) { var r = 0 | n[t]; return ( e ? (a.offset = r) : (a.instances = r), N(function (t, n) { return e && (t.OFFSET = r), r; }) ); } if (t in i) { var o = i[t]; return j(o, function (t, r) { var n = t.invoke(r, o); return e && (t.OFFSET = n), n; }); } if (e) { if (c) return N(function (t, e) { return (t.OFFSET = 0); }); if (s) return new F( l.thisDep, l.contextDep, l.propDep, function (t, e) { return e.def( t.shared.vao + ".currentVAO?" + t.shared.vao + ".currentVAO.offset:0", ); }, ); } else if (s) return new F( l.thisDep, l.contextDep, l.propDep, function (t, e) { return e.def( t.shared.vao + ".currentVAO?" + t.shared.vao + ".currentVAO.instances:-1", ); }, ); return null; } var n = t.static, i = t.dynamic, a = {}, s = !1, l = (function () { if ("vao" in n) { var t = n.vao; return ( null !== t && null === u.getVAO(t) && (t = u.createVAO(t)), (s = !0), (a.vao = t), N(function (e) { var r = u.getVAO(t); return r ? e.link(r) : "null"; }) ); } if ("vao" in i) { s = !0; var e = i.vao; return j(e, function (t, r) { var n = t.invoke(r, e); return r.def( t.shared.vao + ".getVAO(" + n + ")", ); }); } return null; })(), c = !1, f = (function () { if ("elements" in n) { var t = n.elements; if (((a.elements = t), D(t))) { var e = (a.elements = o.create(t, !0)); t = o.getElements(e); c = !0; } else t && ((t = o.getElements(t)), (c = !0)); return ( ((e = N(function (e, r) { if (t) { var n = e.link(t); return (e.ELEMENTS = n); } return (e.ELEMENTS = null); })).value = t), e ); } if ("elements" in i) { c = !0; var r = i.elements; return j(r, function (t, e) { var n = (i = t.shared).isBufferArgs, i = i.elements, a = t.invoke(e, r), o = e.def("null"); (n = e.def(n, "(", a, ")")), (a = t .cond(n) .then(o, "=", i, ".createStream(", a, ");") .else(o, "=", i, ".getElements(", a, ");")); return ( e.entry(a), e.exit( t .cond(n) .then(i, ".destroyStream(", o, ");"), ), (t.ELEMENTS = o) ); }); } return s ? new F( l.thisDep, l.contextDep, l.propDep, function (t, e) { return e.def( t.shared.vao + ".currentVAO?" + t.shared.elements + ".getElements(" + t.shared.vao + ".currentVAO.elements):null", ); }, ) : null; })(), h = r("offset", !0), p = (function () { if ("primitive" in n) { var t = n.primitive; return ( (a.primitive = t), N(function (e, r) { return at[t]; }) ); } if ("primitive" in i) { var e = i.primitive; return j(e, function (t, r) { var n = t.constants.primTypes, i = t.invoke(r, e); return r.def(n, "[", i, "]"); }); } return c ? B(f) ? f.value ? N(function (t, e) { return e.def(t.ELEMENTS, ".primType"); }) : N(function () { return 4; }) : new F( f.thisDep, f.contextDep, f.propDep, function (t, e) { var r = t.ELEMENTS; return e.def(r, "?", r, ".primType:", 4); }, ) : s ? new F( l.thisDep, l.contextDep, l.propDep, function (t, e) { return e.def( t.shared.vao + ".currentVAO?" + t.shared.vao + ".currentVAO.primitive:4", ); }, ) : null; })(), d = (function () { if ("count" in n) { var t = 0 | n.count; return ( (a.count = t), N(function () { return t; }) ); } if ("count" in i) { var e = i.count; return j(e, function (t, r) { return t.invoke(r, e); }); } return c ? B(f) ? f ? h ? new F( h.thisDep, h.contextDep, h.propDep, function (t, e) { return e.def( t.ELEMENTS, ".vertCount-", t.OFFSET, ); }, ) : N(function (t, e) { return e.def(t.ELEMENTS, ".vertCount"); }) : N(function () { return -1; }) : new F( f.thisDep || h.thisDep, f.contextDep || h.contextDep, f.propDep || h.propDep, function (t, e) { var r = t.ELEMENTS; return t.OFFSET ? e.def( r, "?", r, ".vertCount-", t.OFFSET, ":-1", ) : e.def(r, "?", r, ".vertCount:-1"); }, ) : s ? new F( l.thisDep, l.contextDep, l.propDep, function (t, e) { return e.def( t.shared.vao, ".currentVAO?", t.shared.vao, ".currentVAO.count:-1", ); }, ) : null; })(), m = r("instances", !1); return { elements: f, primitive: p, count: d, instances: m, offset: h, vao: l, vaoActive: s, elementsActive: c, static: a, }; } function A(t, r) { var n = t.static, a = t.dynamic, o = {}; return ( Object.keys(n).forEach(function (t) { var r = n[t], a = e.id(t), s = new K(); if (D(r)) (s.state = 1), (s.buffer = i.getBuffer( i.create(r, 34962, !1, !0), )), (s.type = 0); else if ((c = i.getBuffer(r))) (s.state = 1), (s.buffer = c), (s.type = 0); else if ("constant" in r) { var l = r.constant; (s.buffer = "null"), (s.state = 2), "number" == typeof l ? (s.x = l) : At.forEach(function (t, e) { e < l.length && (s[t] = l[e]); }); } else { var c = D(r.buffer) ? i.getBuffer( i.create(r.buffer, 34962, !1, !0), ) : i.getBuffer(r.buffer), u = 0 | r.offset, f = 0 | r.stride, h = 0 | r.size, p = !!r.normalized, d = 0; "type" in r && (d = tt[r.type]), (r = 0 | r.divisor), (s.buffer = c), (s.state = 1), (s.size = h), (s.normalized = p), (s.type = d || c.dtype), (s.offset = u), (s.stride = f), (s.divisor = r); } o[t] = N(function (t, e) { var r = t.attribCache; if (a in r) return r[a]; var n = { isStream: !1 }; return ( Object.keys(s).forEach(function (t) { n[t] = s[t]; }), s.buffer && ((n.buffer = t.link(s.buffer)), (n.type = n.type || n.buffer + ".dtype")), (r[a] = n) ); }); }), Object.keys(a).forEach(function (t) { var e = a[t]; o[t] = j(e, function (t, r) { function n(t) { r(l[t], "=", i, ".", t, "|0;"); } var i = t.invoke(r, e), a = t.shared, o = t.constants, s = a.isBufferArgs, l = ((a = a.buffer), { isStream: r.def(!1) }), c = new K(); (c.state = 1), Object.keys(c).forEach(function (t) { l[t] = r.def("" + c[t]); }); var u = l.buffer, f = l.type; return ( r( "if(", s, "(", i, ")){", l.isStream, "=true;", u, "=", a, ".createStream(", 34962, ",", i, ");", f, "=", u, ".dtype;", "}else{", u, "=", a, ".getBuffer(", i, ");", "if(", u, "){", f, "=", u, ".dtype;", '}else if("constant" in ', i, "){", l.state, "=", 2, ";", "if(typeof " + i + '.constant === "number"){', l[At[0]], "=", i, ".constant;", At.slice(1) .map(function (t) { return l[t]; }) .join("="), "=0;", "}else{", At.map(function (t, e) { return ( l[t] + "=" + i + ".constant.length>" + e + "?" + i + ".constant[" + e + "]:0;" ); }).join(""), "}}else{", "if(", s, "(", i, ".buffer)){", u, "=", a, ".createStream(", 34962, ",", i, ".buffer);", "}else{", u, "=", a, ".getBuffer(", i, ".buffer);", "}", f, '="type" in ', i, "?", o.glTypes, "[", i, ".type]:", u, ".dtype;", l.normalized, "=!!", i, ".normalized;", ), n("size"), n("offset"), n("stride"), n("divisor"), r("}}"), r.exit( "if(", l.isStream, "){", a, ".destroyStream(", u, ");", "}", ), l ); }); }), o ); } function M(t, e, n, i, o) { function s(t) { var e = c[t]; e && (h[t] = e); } var l = (function (t, e) { if ( "string" == typeof (r = t.static).frag && "string" == typeof r.vert ) { if (0 < Object.keys(e.dynamic).length) return null; var r = e.static, n = Object.keys(r); if (0 < n.length && "number" == typeof r[n[0]]) { for (var i = [], a = 0; a < n.length; ++a) i.push([0 | r[n[a]], n[a]]); return i; } } return null; })(t, e), c = (function (t, e, r) { function n(t) { if (t in i) { var r = i[t]; t = !0; var n, o, s = 0 | r.x, l = 0 | r.y; return ( "width" in r ? (n = 0 | r.width) : (t = !1), "height" in r ? (o = 0 | r.height) : (t = !1), new F( !t && e && e.thisDep, !t && e && e.contextDep, !t && e && e.propDep, function (t, e) { var i = t.shared.context, a = n; "width" in r || (a = e.def( i, ".", "framebufferWidth", "-", s, )); var c = o; return ( "height" in r || (c = e.def( i, ".", "framebufferHeight", "-", l, )), [s, l, a, c] ); }, ) ); } if (t in a) { var c = a[t]; return ( (t = j(c, function (t, e) { var r = t.invoke(e, c), n = t.shared.context, i = e.def(r, ".x|0"), a = e.def(r, ".y|0"); return [ i, a, e.def( '"width" in ', r, "?", r, ".width|0:", "(", n, ".", "framebufferWidth", "-", i, ")", ), (r = e.def( '"height" in ', r, "?", r, ".height|0:", "(", n, ".", "framebufferHeight", "-", a, ")", )), ]; })), e && ((t.thisDep = t.thisDep || e.thisDep), (t.contextDep = t.contextDep || e.contextDep), (t.propDep = t.propDep || e.propDep)), t ); } return e ? new F( e.thisDep, e.contextDep, e.propDep, function (t, e) { var r = t.shared.context; return [ 0, 0, e.def(r, ".", "framebufferWidth"), e.def(r, ".", "framebufferHeight"), ]; }, ) : null; } var i = t.static, a = t.dynamic; if ((t = n("viewport"))) { var o = t; t = new F( t.thisDep, t.contextDep, t.propDep, function (t, e) { var r = o.append(t, e), n = t.shared.context; return ( e.set(n, ".viewportWidth", r[2]), e.set(n, ".viewportHeight", r[3]), r ); }, ); } return { viewport: t, scissor_box: n("scissor.box"), }; })(t, (d = w(t))), f = k(t), h = (function (t, e) { var r = t.static, n = t.dynamic, i = {}; return ( ot.forEach(function (t) { function e(e, a) { if (t in r) { var s = e(r[t]); i[o] = N(function () { return s; }); } else if (t in n) { var l = n[t]; i[o] = j(l, function (t, e) { return a(t, e, t.invoke(e, l)); }); } } var o = y(t); switch (t) { case "cull.enable": case "blend.enable": case "dither": case "stencil.enable": case "depth.enable": case "scissor.enable": case "polygonOffset.enable": case "sample.alpha": case "sample.enable": case "depth.mask": return e( function (t) { return t; }, function (t, e, r) { return r; }, ); case "depth.func": return e( function (t) { return Et[t]; }, function (t, e, r) { return e.def( t.constants.compareFuncs, "[", r, "]", ); }, ); case "depth.range": return e( function (t) { return t; }, function (t, e, r) { return [ e.def("+", r, "[0]"), (e = e.def("+", r, "[1]")), ]; }, ); case "blend.func": return e( function (t) { return [ St["srcRGB" in t ? t.srcRGB : t.src], St["dstRGB" in t ? t.dstRGB : t.dst], St[ "srcAlpha" in t ? t.srcAlpha : t.src ], St[ "dstAlpha" in t ? t.dstAlpha : t.dst ], ]; }, function (t, e, r) { function n(t, n) { return e.def( '"', t, n, '" in ', r, "?", r, ".", t, n, ":", r, ".", t, ); } t = t.constants.blendFuncs; var i = n("src", "RGB"), a = n("dst", "RGB"), o = ((i = e.def(t, "[", i, "]")), e.def( t, "[", n("src", "Alpha"), "]", )); return [ i, (a = e.def(t, "[", a, "]")), o, (t = e.def( t, "[", n("dst", "Alpha"), "]", )), ]; }, ); case "blend.equation": return e( function (t) { return "string" == typeof t ? [Q[t], Q[t]] : "object" == typeof t ? [Q[t.rgb], Q[t.alpha]] : void 0; }, function (t, e, r) { var n = t.constants.blendEquations, i = e.def(), a = e.def(); return ( (t = t.cond( "typeof ", r, '==="string"', )).then( i, "=", a, "=", n, "[", r, "];", ), t.else( i, "=", n, "[", r, ".rgb];", a, "=", n, "[", r, ".alpha];", ), e(t), [i, a] ); }, ); case "blend.color": return e( function (t) { return a(4, function (e) { return +t[e]; }); }, function (t, e, r) { return a(4, function (t) { return e.def("+", r, "[", t, "]"); }); }, ); case "stencil.mask": return e( function (t) { return 0 | t; }, function (t, e, r) { return e.def(r, "|0"); }, ); case "stencil.func": return e( function (t) { return [ Et[t.cmp || "keep"], t.ref || 0, "mask" in t ? t.mask : -1, ]; }, function (t, e, r) { return [ (t = e.def( '"cmp" in ', r, "?", t.constants.compareFuncs, "[", r, ".cmp]", ":", 7680, )), e.def(r, ".ref|0"), (e = e.def( '"mask" in ', r, "?", r, ".mask|0:-1", )), ]; }, ); case "stencil.opFront": case "stencil.opBack": return e( function (e) { return [ "stencil.opBack" === t ? 1029 : 1028, Lt[e.fail || "keep"], Lt[e.zfail || "keep"], Lt[e.zpass || "keep"], ]; }, function (e, r, n) { function i(t) { return r.def( '"', t, '" in ', n, "?", a, "[", n, ".", t, "]:", 7680, ); } var a = e.constants.stencilOps; return [ "stencil.opBack" === t ? 1029 : 1028, i("fail"), i("zfail"), i("zpass"), ]; }, ); case "polygonOffset.offset": return e( function (t) { return [0 | t.factor, 0 | t.units]; }, function (t, e, r) { return [ e.def(r, ".factor|0"), (e = e.def(r, ".units|0")), ]; }, ); case "cull.face": return e( function (t) { var e = 0; return ( "front" === t ? (e = 1028) : "back" === t && (e = 1029), e ); }, function (t, e, r) { return e.def( r, '==="front"?', 1028, ":", 1029, ); }, ); case "lineWidth": return e( function (t) { return t; }, function (t, e, r) { return r; }, ); case "frontFace": return e( function (t) { return Ct[t]; }, function (t, e, r) { return e.def(r + '==="cw"?2304:2305'); }, ); case "colorMask": return e( function (t) { return t.map(function (t) { return !!t; }); }, function (t, e, r) { return a(4, function (t) { return "!!" + r + "[" + t + "]"; }); }, ); case "sample.coverage": return e( function (t) { return [ "value" in t ? t.value : 1, !!t.invert, ]; }, function (t, e, r) { return [ e.def( '"value" in ', r, "?+", r, ".value:1", ), (e = e.def("!!", r, ".invert")), ]; }, ); } }), i ); })(t), p = T(t, 0, l); s("viewport"), s(y("scissor.box")); var d, m = 0 < Object.keys(h).length; if ( (((d = { framebuffer: d, draw: f, shader: p, state: h, dirty: m, scopeVAO: null, drawVAO: null, useVAO: !1, attributes: {}, }).profile = (function (t) { var e, r = t.static; if (((t = t.dynamic), "profile" in r)) { var n = !!r.profile; (e = N(function (t, e) { return n; })).enable = n; } else if ("profile" in t) { var i = t.profile; e = j(i, function (t, e) { return t.invoke(e, i); }); } return e; })(t)), (d.uniforms = (function (t, e) { var r = t.static, n = t.dynamic, i = {}; return ( Object.keys(r).forEach(function (t) { var e, n = r[t]; if ( "number" == typeof n || "boolean" == typeof n ) e = N(function () { return n; }); else if ("function" == typeof n) { var o = n._reglType; "texture2d" === o || "textureCube" === o ? (e = N(function (t) { return t.link(n); })) : ("framebuffer" !== o && "framebufferCube" !== o) || (e = N(function (t) { return t.link(n.color[0]); })); } else g(n) && (e = N(function (t) { return t.global.def( "[", a(n.length, function (t) { return n[t]; }), "]", ); })); (e.value = n), (i[t] = e); }), Object.keys(n).forEach(function (t) { var e = n[t]; i[t] = j(e, function (t, r) { return t.invoke(r, e); }); }), i ); })(n)), (d.drawVAO = d.scopeVAO = f.vao), !d.drawVAO && p.program && !l && r.angle_instanced_arrays && f.static.elements) ) { var v = !0; if ( ((t = p.program.attributes.map(function (t) { return (t = e.static[t]), (v = v && !!t), t; })), v && 0 < t.length) ) { var x = u.getVAO( u.createVAO({ attributes: t, elements: f.static.elements, }), ); (d.drawVAO = new F(null, null, null, function ( t, e, ) { return t.link(x); })), (d.useVAO = !0); } } return ( l ? (d.useVAO = !0) : (d.attributes = A(e)), (d.context = (function (t) { var e = t.static, r = t.dynamic, n = {}; return ( Object.keys(e).forEach(function (t) { var r = e[t]; n[t] = N(function (t, e) { return "number" == typeof r || "boolean" == typeof r ? "" + r : t.link(r); }); }), Object.keys(r).forEach(function (t) { var e = r[t]; n[t] = j(e, function (t, r) { return t.invoke(r, e); }); }), n ); })(i)), d ); } function S(t, e, r) { var n = t.shared.context, i = t.scope(); Object.keys(r).forEach(function (a) { e.save(n, "." + a); var o = r[a].append(t, e); Array.isArray(o) ? i(n, ".", a, "=[", o.join(), "];") : i(n, ".", a, "=", o, ";"); }), e(i); } function E(t, e, r, n) { var i, a = (s = t.shared).gl, o = s.framebuffer; et && (i = e.def(s.extensions, ".webgl_draw_buffers")); var s = (l = t.constants).drawBuffer, l = l.backBuffer; (t = r ? r.append(t, e) : e.def(o, ".next")), n || e("if(", t, "!==", o, ".cur){"), e( "if(", t, "){", a, ".bindFramebuffer(", 36160, ",", t, ".framebuffer);", ), et && e( i, ".drawBuffersWEBGL(", s, "[", t, ".colorAttachments.length]);", ), e("}else{", a, ".bindFramebuffer(", 36160, ",null);"), et && e(i, ".drawBuffersWEBGL(", l, ");"), e("}", o, ".cur=", t, ";"), n || e("}"); } function L(t, e, r) { var n = t.shared, i = n.gl, o = t.current, s = t.next, l = n.current, c = n.next, u = t.cond(l, ".dirty"); ot.forEach(function (e) { var n, f; if (!((e = y(e)) in r.state)) if (e in s) { (n = s[e]), (f = o[e]); var h = a(nt[e].length, function (t) { return u.def(n, "[", t, "]"); }); u( t .cond( h .map(function (t, e) { return t + "!==" + f + "[" + e + "]"; }) .join("||"), ) .then( i, ".", lt[e], "(", h, ");", h .map(function (t, e) { return f + "[" + e + "]=" + t; }) .join(";"), ";", ), ); } else (n = u.def(c, ".", e)), (h = t.cond(n, "!==", l, ".", e)), u(h), e in st ? h( t .cond(n) .then(i, ".enable(", st[e], ");") .else(i, ".disable(", st[e], ");"), l, ".", e, "=", n, ";", ) : h( i, ".", lt[e], "(", n, ");", l, ".", e, "=", n, ";", ); }), 0 === Object.keys(r.state).length && u(l, ".dirty=false;"), e(u); } function C(t, e, r, n) { var i, a = t.shared, o = t.current, s = a.current, l = a.gl; R(Object.keys(r)).forEach(function (a) { var c = r[a]; if (!n || n(c)) { var u = c.append(t, e); if (st[a]) { var f = st[a]; B(c) ? ((i = t.link(u, { stable: !0 })), e( t .cond(i) .then(l, ".enable(", f, ");") .else(l, ".disable(", f, ");"), ), e(s, ".", a, "=", i, ";")) : (e( t .cond(u) .then(l, ".enable(", f, ");") .else(l, ".disable(", f, ");"), ), e(s, ".", a, "=", u, ";")); } else if (g(u)) { var h = o[a]; e( l, ".", lt[a], "(", u, ");", u .map(function (t, e) { return h + "[" + e + "]=" + t; }) .join(";"), ";", ); } else B(c) ? ((i = t.link(u, { stable: !0 })), e( l, ".", lt[a], "(", i, ");", s, ".", a, "=", i, ";", )) : e( l, ".", lt[a], "(", u, ");", s, ".", a, "=", u, ";", ); } }); } function P(t, e) { $ && (t.instancing = e.def( t.shared.extensions, ".angle_instanced_arrays", )); } function I(t, e, r, n, i) { function a() { return "undefined" == typeof performance ? "Date.now()" : "performance.now()"; } function o(t) { t((c = e.def()), "=", a(), ";"), "string" == typeof i ? t(h, ".count+=", i, ";") : t(h, ".count++;"), d && (n ? t( (u = e.def()), "=", m, ".getNumPendingQueries();", ) : t(m, ".beginQuery(", h, ");")); } function s(t) { t(h, ".cpuTime+=", a(), "-", c, ";"), d && (n ? t( m, ".pushScopeStats(", u, ",", m, ".getNumPendingQueries(),", h, ");", ) : t(m, ".endQuery();")); } function l(t) { var r = e.def(p, ".profile"); e(p, ".profile=", t, ";"), e.exit(p, ".profile=", r, ";"); } var c, u, f = t.shared, h = t.stats, p = f.current, m = f.timer; if ((r = r.profile)) { if (B(r)) return void (r.enable ? (o(e), s(e.exit), l("true")) : l("false")); l((r = r.append(t, e))); } else r = e.def(p, ".profile"); o((f = t.block())), e("if(", r, "){", f, "}"), s((t = t.block())), e.exit("if(", r, "){", t, "}"); } function O(t, e, r, n, i) { function a(r, n, i) { function a() { e( "if(!", u, ".buffer){", l, ".enableVertexAttribArray(", c, ");}", ); var r, a = i.type; (r = i.size ? e.def(i.size, "||", n) : n), e( "if(", u, ".type!==", a, "||", u, ".size!==", r, "||", p .map(function (t) { return u + "." + t + "!==" + i[t]; }) .join("||"), "){", l, ".bindBuffer(", 34962, ",", f, ".buffer);", l, ".vertexAttribPointer(", [c, r, a, i.normalized, i.stride, i.offset], ");", u, ".type=", a, ";", u, ".size=", r, ";", p .map(function (t) { return u + "." + t + "=" + i[t] + ";"; }) .join(""), "}", ), $ && ((a = i.divisor), e( "if(", u, ".divisor!==", a, "){", t.instancing, ".vertexAttribDivisorANGLE(", [c, a], ");", u, ".divisor=", a, ";}", )); } function s() { e( "if(", u, ".buffer){", l, ".disableVertexAttribArray(", c, ");", u, ".buffer=null;", "}if(", At.map(function (t, e) { return u + "." + t + "!==" + h[e]; }).join("||"), "){", l, ".vertexAttrib4f(", c, ",", h, ");", At.map(function (t, e) { return u + "." + t + "=" + h[e] + ";"; }).join(""), "}", ); } var l = o.gl, c = e.def(r, ".location"), u = e.def(o.attributes, "[", c, "]"); r = i.state; var f = i.buffer, h = [i.x, i.y, i.z, i.w], p = ["buffer", "normalized", "offset", "stride"]; 1 === r ? a() : 2 === r ? s() : (e("if(", r, "===", 1, "){"), a(), e("}else{"), s(), e("}")); } var o = t.shared; n.forEach(function (n) { var o, s = n.name, l = r.attributes[s]; if (l) { if (!i(l)) return; o = l.append(t, e); } else { if (!i(Pt)) return; var c = t.scopeAttrib(s); (o = {}), Object.keys(new K()).forEach(function (t) { o[t] = e.def(c, ".", t); }); } a( t.link(n), (function (t) { switch (t) { case 35664: case 35667: case 35671: return 2; case 35665: case 35668: case 35672: return 3; case 35666: case 35669: case 35673: return 4; default: return 1; } })(n.info.type), o, ); }); } function U(t, r, n, i, o, s) { for ( var l, c = t.shared, u = c.gl, f = 0; f < i.length; ++f ) { var h, p = (v = i[f]).name, d = v.info.type, m = n.uniforms[p], v = t.link(v) + ".location"; if (m) { if (!o(m)) continue; if (B(m)) { if (((p = m.value), 35678 === d || 35680 === d)) r( u, ".uniform1i(", v, ",", (d = t.link( p._texture || p.color[0]._texture, )) + ".bind());", ), r.exit(d, ".unbind();"); else if ( 35674 === d || 35675 === d || 35676 === d ) (m = 2), 35675 === d ? (m = 3) : 35676 === d && (m = 4), r( u, ".uniformMatrix", m, "fv(", v, ",false,", (p = t.global.def( "new Float32Array([" + Array.prototype.slice.call(p) + "])", )), ");", ); else { switch (d) { case 5126: l = "1f"; break; case 35664: l = "2f"; break; case 35665: l = "3f"; break; case 35666: l = "4f"; break; case 35670: case 5124: l = "1i"; break; case 35671: case 35667: l = "2i"; break; case 35672: case 35668: l = "3i"; break; case 35673: l = "4i"; break; case 35669: l = "4i"; } r( u, ".uniform", l, "(", v, ",", g(p) ? Array.prototype.slice.call(p) : p, ");", ); } continue; } h = m.append(t, r); } else { if (!o(Pt)) continue; h = r.def(c.uniforms, "[", e.id(p), "]"); } switch ( (35678 === d ? r( "if(", h, "&&", h, '._reglType==="framebuffer"){', h, "=", h, ".color[0];", "}", ) : 35680 === d && r( "if(", h, "&&", h, '._reglType==="framebufferCube"){', h, "=", h, ".color[0];", "}", ), (p = 1), d) ) { case 35678: case 35680: (d = r.def(h, "._texture")), r(u, ".uniform1i(", v, ",", d, ".bind());"), r.exit(d, ".unbind();"); continue; case 5124: case 35670: l = "1i"; break; case 35667: case 35671: (l = "2i"), (p = 2); break; case 35668: case 35672: (l = "3i"), (p = 3); break; case 35669: case 35673: (l = "4i"), (p = 4); break; case 5126: l = "1f"; break; case 35664: (l = "2f"), (p = 2); break; case 35665: (l = "3f"), (p = 3); break; case 35666: (l = "4f"), (p = 4); break; case 35674: l = "Matrix2fv"; break; case 35675: l = "Matrix3fv"; break; case 35676: l = "Matrix4fv"; } if ("M" === l.charAt(0)) { r(u, ".uniform", l, "(", v, ","); v = Math.pow(d - 35674 + 2, 2); var y = t.global.def("new Float32Array(", v, ")"); Array.isArray(h) ? r( "false,(", a(v, function (t) { return y + "[" + t + "]=" + h[t]; }), ",", y, ")", ) : r( "false,(Array.isArray(", h, ")||", h, " instanceof Float32Array)?", h, ":(", a(v, function (t) { return ( y + "[" + t + "]=" + h + "[" + t + "]" ); }), ",", y, ")", ), r(");"); } else { if (1 < p) { d = []; var x = []; for (m = 0; m < p; ++m) Array.isArray(h) ? x.push(h[m]) : x.push(r.def(h + "[" + m + "]")), s && d.push(r.def()); s && r( "if(!", t.batchId, "||", d .map(function (t, e) { return t + "!==" + x[e]; }) .join("||"), "){", d .map(function (t, e) { return t + "=" + x[e] + ";"; }) .join(""), ), r( u, ".uniform", l, "(", v, ",", x.join(","), ");", ); } else s && ((d = r.def()), r( "if(!", t.batchId, "||", d, "!==", h, "){", d, "=", h, ";", )), r(u, ".uniform", l, "(", v, ",", h, ");"); s && r("}"); } } } function V(t, e, r, n) { function i(i) { var a = h[i]; return a ? (a.contextDep && n.contextDynamic) || a.propDep ? a.append(t, r) : a.append(t, e) : e.def(f, ".", i); } function a() { function t() { r( l, ".drawElementsInstancedANGLE(", [d, g, v, m + "<<((" + v + "-5121)>>1)", s], ");", ); } function e() { r( l, ".drawArraysInstancedANGLE(", [d, m, g, s], ");", ); } p && "null" !== p ? y ? t() : (r("if(", p, "){"), t(), r("}else{"), e(), r("}")) : e(); } function o() { function t() { r( u + ".drawElements(" + [d, g, v, m + "<<((" + v + "-5121)>>1)"] + ");", ); } function e() { r(u + ".drawArrays(" + [d, m, g] + ");"); } p && "null" !== p ? y ? t() : (r("if(", p, "){"), t(), r("}else{"), e(), r("}")) : e(); } var s, l, c = t.shared, u = c.gl, f = c.draw, h = n.draw, p = (function () { var i = h.elements, a = e; return ( i ? (((i.contextDep && n.contextDynamic) || i.propDep) && (a = r), (i = i.append(t, a)), h.elementsActive && a( "if(" + i + ")" + u + ".bindBuffer(34963," + i + ".buffer.buffer);", )) : ((i = a.def()), a( i, "=", f, ".", "elements", ";", "if(", i, "){", u, ".bindBuffer(", 34963, ",", i, ".buffer.buffer);}", "else if(", c.vao, ".currentVAO){", i, "=", t.shared.elements + ".getElements(" + c.vao, ".currentVAO.elements);", rt ? "" : "if(" + i + ")" + u + ".bindBuffer(34963," + i + ".buffer.buffer);", "}", )), i ); })(), d = i("primitive"), m = i("offset"), g = (function () { var i = h.count, a = e; return ( i ? (((i.contextDep && n.contextDynamic) || i.propDep) && (a = r), (i = i.append(t, a))) : (i = a.def(f, ".", "count")), i ); })(); if ("number" == typeof g) { if (0 === g) return; } else r("if(", g, "){"), r.exit("}"); $ && ((s = i("instances")), (l = t.instancing)); var v = p + ".type", y = h.elements && B(h.elements) && !h.vaoActive; $ && ("number" != typeof s || 0 <= s) ? "string" == typeof s ? (r("if(", s, ">0){"), a(), r("}else if(", s, "<0){"), o(), r("}")) : a() : o(); } function q(t, e, r, n, i) { return ( (i = (e = _()).proc("body", i)), $ && (e.instancing = i.def( e.shared.extensions, ".angle_instanced_arrays", )), t(e, i, r, n), e.compile().body ); } function Y(t, e, r, n) { P(t, e), r.useVAO ? r.drawVAO ? e( t.shared.vao, ".setVAO(", r.drawVAO.append(t, e), ");", ) : e( t.shared.vao, ".setVAO(", t.shared.vao, ".targetVAO);", ) : (e(t.shared.vao, ".setVAO(null);"), O(t, e, r, n.attributes, function () { return !0; })), U( t, e, r, n.uniforms, function () { return !0; }, !1, ), V(t, e, e, r); } function W(t, e, r, n) { function i() { return !0; } (t.batchId = "a1"), P(t, e), O(t, e, r, n.attributes, i), U(t, e, r, n.uniforms, i, !1), V(t, e, e, r); } function Z(t, e, r, n) { function i(t) { return (t.contextDep && o) || t.propDep; } function a(t) { return !i(t); } P(t, e); var o = r.contextDep, s = e.def(), l = e.def(); (t.shared.props = l), (t.batchId = s); var c = t.scope(), u = t.scope(); e( c.entry, "for(", s, "=0;", s, "<", "a1", ";++", s, "){", l, "=", "a0", "[", s, "];", u, "}", c.exit, ), r.needsContext && S(t, u, r.context), r.needsFramebuffer && E(t, u, r.framebuffer), C(t, u, r.state, i), r.profile && i(r.profile) && I(t, u, r, !1, !0), n ? (r.useVAO ? r.drawVAO ? i(r.drawVAO) ? u( t.shared.vao, ".setVAO(", r.drawVAO.append(t, u), ");", ) : c( t.shared.vao, ".setVAO(", r.drawVAO.append(t, c), ");", ) : c( t.shared.vao, ".setVAO(", t.shared.vao, ".targetVAO);", ) : (c(t.shared.vao, ".setVAO(null);"), O(t, c, r, n.attributes, a), O(t, u, r, n.attributes, i)), U(t, c, r, n.uniforms, a, !1), U(t, u, r, n.uniforms, i, !0), V(t, c, u, r)) : ((e = t.global.def("{}")), (n = r.shader.progVar.append(t, u)), (l = u.def(n, ".id")), (c = u.def(e, "[", l, "]")), u( t.shared.gl, ".useProgram(", n, ".program);", "if(!", c, "){", c, "=", e, "[", l, "]=", t.link(function (e) { return q(W, t, r, e, 2); }), "(", n, ");}", c, ".call(this,a0[", s, "],", s, ");", )); } function X(t, r) { function n(e) { var n = r.shader[e]; n && ((n = n.append(t, i)), isNaN(n) ? i.set(a.shader, "." + e, n) : i.set( a.shader, "." + e, t.link(n, { stable: !0 }), )); } var i = t.proc("scope", 3); t.batchId = "a2"; var a = t.shared, o = a.current; if ( (S(t, i, r.context), r.framebuffer && r.framebuffer.append(t, i), R(Object.keys(r.state)).forEach(function (e) { var n = r.state[e], o = n.append(t, i); g(o) ? o.forEach(function (r, n) { isNaN(r) ? i.set(t.next[e], "[" + n + "]", r) : i.set( t.next[e], "[" + n + "]", t.link(r, { stable: !0 }), ); }) : B(n) ? i.set( a.next, "." + e, t.link(o, { stable: !0 }), ) : i.set(a.next, "." + e, o); }), I(t, i, r, !0, !0), [ "elements", "offset", "count", "instances", "primitive", ].forEach(function (e) { var n = r.draw[e]; n && ((n = n.append(t, i)), isNaN(n) ? i.set(a.draw, "." + e, n) : i.set(a.draw, "." + e, t.link(n), { stable: !0, })); }), Object.keys(r.uniforms).forEach(function (n) { var o = r.uniforms[n].append(t, i); Array.isArray(o) && (o = "[" + o.map(function (e) { return isNaN(e) ? e : t.link(e, { stable: !0 }); }) + "]"), i.set( a.uniforms, "[" + t.link(e.id(n), { stable: !0 }) + "]", o, ); }), Object.keys(r.attributes).forEach(function (e) { var n = r.attributes[e].append(t, i), a = t.scopeAttrib(e); Object.keys(new K()).forEach(function (t) { i.set(a, "." + t, n[t]); }); }), r.scopeVAO) ) { var s = r.scopeVAO.append(t, i); isNaN(s) ? i.set(a.vao, ".targetVAO", s) : i.set( a.vao, ".targetVAO", t.link(s, { stable: !0 }), ); } n("vert"), n("frag"), 0 < Object.keys(r.state).length && (i(o, ".dirty=true;"), i.exit(o, ".dirty=true;")), i("a1(", t.shared.context, ",a0,", t.batchId, ");"); } function J(t, e, r) { var n = e.static[r]; if ( n && (function (t) { if ("object" == typeof t && !g(t)) { for ( var e = Object.keys(t), r = 0; r < e.length; ++r ) if (G.isDynamic(t[e[r]])) return !0; return !1; } })(n) ) { var i = t.global, a = Object.keys(n), o = !1, s = !1, l = !1, c = t.global.def("{}"); a.forEach(function (e) { var r = n[e]; if (G.isDynamic(r)) "function" == typeof r && (r = n[e] = G.unbox(r)), (e = j(r, null)), (o = o || e.thisDep), (l = l || e.propDep), (s = s || e.contextDep); else { switch ((i(c, ".", e, "="), typeof r)) { case "number": i(r); break; case "string": i('"', r, '"'); break; case "object": Array.isArray(r) && i("[", r.join(), "]"); break; default: i(t.link(r)); } i(";"); } }), (e.dynamic[r] = new G.DynamicVariable(4, { thisDep: o, contextDep: s, propDep: l, ref: c, append: function (t, e) { a.forEach(function (r) { var i = n[r]; G.isDynamic(i) && ((i = t.invoke(e, i)), e(c, ".", r, "=", i, ";")); }); }, })), delete e.static[r]; } } var K = u.Record, Q = { add: 32774, subtract: 32778, "reverse subtract": 32779, }; r.ext_blend_minmax && ((Q.min = 32775), (Q.max = 32776)); var $ = r.angle_instanced_arrays, et = r.webgl_draw_buffers, rt = r.oes_vertex_array_object, nt = { dirty: !0, profile: v.profile }, it = {}, ot = [], st = {}, lt = {}; x("dither", 3024), x("blend.enable", 3042), b("blend.color", "blendColor", [0, 0, 0, 0]), b( "blend.equation", "blendEquationSeparate", [32774, 32774], ), b("blend.func", "blendFuncSeparate", [1, 0, 1, 0]), x("depth.enable", 2929, !0), b("depth.func", "depthFunc", 513), b("depth.range", "depthRange", [0, 1]), b("depth.mask", "depthMask", !0), b("colorMask", "colorMask", [!0, !0, !0, !0]), x("cull.enable", 2884), b("cull.face", "cullFace", 1029), b("frontFace", "frontFace", 2305), b("lineWidth", "lineWidth", 1), x("polygonOffset.enable", 32823), b("polygonOffset.offset", "polygonOffset", [0, 0]), x("sample.alpha", 32926), x("sample.enable", 32928), b("sample.coverage", "sampleCoverage", [1, !1]), x("stencil.enable", 2960), b("stencil.mask", "stencilMask", -1), b("stencil.func", "stencilFunc", [519, 0, -1]), b( "stencil.opFront", "stencilOpSeparate", [1028, 7680, 7680, 7680], ), b( "stencil.opBack", "stencilOpSeparate", [1029, 7680, 7680, 7680], ), x("scissor.enable", 3089), b("scissor.box", "scissor", [ 0, 0, t.drawingBufferWidth, t.drawingBufferHeight, ]), b("viewport", "viewport", [ 0, 0, t.drawingBufferWidth, t.drawingBufferHeight, ]); var ct = { gl: t, context: p, strings: e, next: it, current: nt, draw: h, elements: o, buffer: i, shader: f, attributes: u.state, vao: u, uniforms: c, framebuffer: l, extensions: r, timer: d, isBufferArgs: D, }, ut = { primTypes: at, compareFuncs: Et, blendFuncs: St, blendEquations: Q, stencilOps: Lt, glTypes: tt, orientationType: Ct, }; et && ((ut.backBuffer = [1029]), (ut.drawBuffer = a(n.maxDrawbuffers, function (t) { return 0 === t ? [0] : a(t, function (t) { return 36064 + t; }); }))); var ft = 0; return { next: it, current: nt, procs: (function () { var t = _(), e = t.proc("poll"), i = t.proc("refresh"), o = t.block(); e(o), i(o); var s, l = (f = t.shared).gl, c = f.next, u = f.current; o(u, ".dirty=false;"), E(t, e), E(t, i, null, !0), $ && (s = t.link($)), r.oes_vertex_array_object && i( t.link(r.oes_vertex_array_object), ".bindVertexArrayOES(null);", ); var f = i.def(f.attributes), h = i.def(0), p = t.cond(h, ".buffer"); p.then( l, ".enableVertexAttribArray(i);", l, ".bindBuffer(", 34962, ",", h, ".buffer.buffer);", l, ".vertexAttribPointer(i,", h, ".size,", h, ".type,", h, ".normalized,", h, ".stride,", h, ".offset);", ).else( l, ".disableVertexAttribArray(i);", l, ".vertexAttrib4f(i,", h, ".x,", h, ".y,", h, ".z,", h, ".w);", h, ".buffer=null;", ); var d = t.link(n.maxAttributes, { stable: !0 }); return ( i( "for(var i=0;i<", d, ";++i){", h, "=", f, "[i];", p, "}", ), $ && i( "for(var i=0;i<", d, ";++i){", s, ".vertexAttribDivisorANGLE(i,", f, "[i].divisor);", "}", ), i( t.shared.vao, ".currentVAO=null;", t.shared.vao, ".setVAO(", t.shared.vao, ".targetVAO);", ), Object.keys(st).forEach(function (r) { var n = st[r], a = o.def(c, ".", r), s = t.block(); s( "if(", a, "){", l, ".enable(", n, ")}else{", l, ".disable(", n, ")}", u, ".", r, "=", a, ";", ), i(s), e("if(", a, "!==", u, ".", r, "){", s, "}"); }), Object.keys(lt).forEach(function (r) { var n, s, f = lt[r], h = nt[r], p = t.block(); p(l, ".", f, "("), g(h) ? ((f = h.length), (n = t.global.def(c, ".", r)), (s = t.global.def(u, ".", r)), p( a(f, function (t) { return n + "[" + t + "]"; }), ");", a(f, function (t) { return ( s + "[" + t + "]=" + n + "[" + t + "];" ); }).join(""), ), e( "if(", a(f, function (t) { return ( n + "[" + t + "]!==" + s + "[" + t + "]" ); }).join("||"), "){", p, "}", )) : ((n = o.def(c, ".", r)), (s = o.def(u, ".", r)), p(n, ");", u, ".", r, "=", n, ";"), e("if(", n, "!==", s, "){", p, "}")), i(p); }), t.compile() ); })(), compile: function (t, e, r, n, i) { var a = _(); (a.stats = a.link(i)), Object.keys(e.static).forEach(function (t) { J(a, e, t); }), Mt.forEach(function (e) { J(a, t, e); }); var o = M(t, e, r, n); return ( o.shader.program && (o.shader.program.attributes.sort( function (t, e) { return t.name < e.name ? -1 : 1; }, ), o.shader.program.uniforms.sort(function (t, e) { return t.name < e.name ? -1 : 1; })), (function (t, e) { var r = t.proc("draw", 1); P(t, r), S(t, r, e.context), E(t, r, e.framebuffer), L(t, r, e), C(t, r, e.state), I(t, r, e, !1, !0); var n = e.shader.progVar.append(t, r); if ( (r( t.shared.gl, ".useProgram(", n, ".program);", ), e.shader.program) ) Y(t, r, e, e.shader.program); else { r(t.shared.vao, ".setVAO(null);"); var i = t.global.def("{}"), a = r.def(n, ".id"), o = r.def(i, "[", a, "]"); r( t .cond(o) .then(o, ".call(this,a0);") .else( o, "=", i, "[", a, "]=", t.link(function (r) { return q(Y, t, e, r, 1); }), "(", n, ");", o, ".call(this,a0);", ), ); } 0 < Object.keys(e.state).length && r(t.shared.current, ".dirty=true;"), t.shared.vao && r(t.shared.vao, ".setVAO(null);"); })(a, o), X(a, o), (function (t, e) { function r(t) { return (t.contextDep && i) || t.propDep; } var n = t.proc("batch", 2); (t.batchId = "0"), P(t, n); var i = !1, a = !0; Object.keys(e.context).forEach(function (t) { i = i || e.context[t].propDep; }), i || (S(t, n, e.context), (a = !1)); var o = !1; if ( ((s = e.framebuffer) ? (s.propDep ? (i = o = !0) : s.contextDep && i && (o = !0), o || E(t, n, s)) : E(t, n, null), e.state.viewport && e.state.viewport.propDep && (i = !0), L(t, n, e), C(t, n, e.state, function (t) { return !r(t); }), (e.profile && r(e.profile)) || I(t, n, e, !1, "a1"), (e.contextDep = i), (e.needsContext = a), (e.needsFramebuffer = o), ((a = e.shader.progVar).contextDep && i) || a.propDep) ) Z(t, n, e, null); else if ( ((a = a.append(t, n)), n(t.shared.gl, ".useProgram(", a, ".program);"), e.shader.program) ) Z(t, n, e, e.shader.program); else { n(t.shared.vao, ".setVAO(null);"); var s = t.global.def("{}"), l = ((o = n.def(a, ".id")), n.def(s, "[", o, "]")); n( t .cond(l) .then(l, ".call(this,a0,a1);") .else( l, "=", s, "[", o, "]=", t.link(function (r) { return q(Z, t, e, r, 2); }), "(", a, ");", l, ".call(this,a0,a1);", ), ); } 0 < Object.keys(e.state).length && n(t.shared.current, ".dirty=true;"), t.shared.vao && n(t.shared.vao, ".setVAO(null);"); })(a, o), H(a.compile(), { destroy: function () { o.shader.program.destroy(); }, }) ); }, }; } function V(t, e) { for (var r = 0; r < t.length; ++r) if (t[r] === e) return r; return -1; } var H = function (t, e) { for (var r = Object.keys(e), n = 0; n < r.length; ++n) t[r[n]] = e[r[n]]; return t; }, q = 0, G = { DynamicVariable: t, define: function (r, n) { return new t(r, e(n + "")); }, isDynamic: function (e) { return ( ("function" == typeof e && !e._reglType) || e instanceof t ); }, unbox: function e(r, n) { return "function" == typeof r ? new t(0, r) : "number" == typeof r || "boolean" == typeof r ? new t(5, r) : Array.isArray(r) ? new t( 6, r.map(function (t, r) { return e(t, n + "[" + r + "]"); }), ) : r instanceof t ? r : void 0; }, accessor: e, }, Y = { next: "function" == typeof requestAnimationFrame ? function (t) { return requestAnimationFrame(t); } : function (t) { return setTimeout(t, 16); }, cancel: "function" == typeof cancelAnimationFrame ? function (t) { return cancelAnimationFrame(t); } : clearTimeout, }, W = "undefined" != typeof performance && performance.now ? function () { return performance.now(); } : function () { return +new Date(); }, Z = s(); Z.zero = s(); var X = function (t, e) { var r = 1; e.ext_texture_filter_anisotropic && (r = t.getParameter(34047)); var n = 1, i = 1; e.webgl_draw_buffers && ((n = t.getParameter(34852)), (i = t.getParameter(36063))); var a = !!e.oes_texture_float; if (a) { (a = t.createTexture()), t.bindTexture(3553, a), t.texImage2D( 3553, 0, 6408, 1, 1, 0, 6408, 5126, null, ); var o = t.createFramebuffer(); if ( (t.bindFramebuffer(36160, o), t.framebufferTexture2D(36160, 36064, 3553, a, 0), t.bindTexture(3553, null), 36053 !== t.checkFramebufferStatus(36160)) ) a = !1; else { t.viewport(0, 0, 1, 1), t.clearColor(1, 0, 0, 1), t.clear(16384); var s = Z.allocType(5126, 4); t.readPixels(0, 0, 1, 1, 6408, 5126, s), t.getError() ? (a = !1) : (t.deleteFramebuffer(o), t.deleteTexture(a), (a = 1 === s[0])), Z.freeType(s); } } return ( (s = !0), ("undefined" != typeof navigator && (/MSIE/.test(navigator.userAgent) || /Trident\//.test(navigator.appVersion) || /Edge/.test(navigator.userAgent))) || ((s = t.createTexture()), (o = Z.allocType(5121, 36)), t.activeTexture(33984), t.bindTexture(34067, s), t.texImage2D( 34069, 0, 6408, 3, 3, 0, 6408, 5121, o, ), Z.freeType(o), t.bindTexture(34067, null), t.deleteTexture(s), (s = !t.getError())), { colorBits: [ t.getParameter(3410), t.getParameter(3411), t.getParameter(3412), t.getParameter(3413), ], depthBits: t.getParameter(3414), stencilBits: t.getParameter(3415), subpixelBits: t.getParameter(3408), extensions: Object.keys(e).filter(function (t) { return !!e[t]; }), maxAnisotropic: r, maxDrawbuffers: n, maxColorAttachments: i, pointSizeDims: t.getParameter(33901), lineWidthDims: t.getParameter(33902), maxViewportDims: t.getParameter(3386), maxCombinedTextureUnits: t.getParameter(35661), maxCubeMapSize: t.getParameter(34076), maxRenderbufferSize: t.getParameter(34024), maxTextureUnits: t.getParameter(34930), maxTextureSize: t.getParameter(3379), maxAttributes: t.getParameter(34921), maxVertexUniforms: t.getParameter(36347), maxVertexTextureUnits: t.getParameter(35660), maxVaryingVectors: t.getParameter(36348), maxFragmentUniforms: t.getParameter(36349), glsl: t.getParameter(35724), renderer: t.getParameter(7937), vendor: t.getParameter(7936), version: t.getParameter(7938), readFloat: a, npotTextureCube: s, } ); }, J = function (t) { return ( t instanceof Uint8Array || t instanceof Uint16Array || t instanceof Uint32Array || t instanceof Int8Array || t instanceof Int16Array || t instanceof Int32Array || t instanceof Float32Array || t instanceof Float64Array || t instanceof Uint8ClampedArray ); }, K = function (t) { return Object.keys(t).map(function (e) { return t[e]; }); }, Q = { shape: function (t) { for (var e = []; t.length; t = t[0]) e.push(t.length); return e; }, flatten: function (t, e, r, n) { var i = 1; if (e.length) for (var a = 0; a < e.length; ++a) i *= e[a]; else i = 0; switch (((r = n || Z.allocType(r, i)), e.length)) { case 0: break; case 1: for (n = e[0], e = 0; e < n; ++e) r[e] = t[e]; break; case 2: for (n = e[0], e = e[1], a = i = 0; a < n; ++a) for (var o = t[a], s = 0; s < e; ++s) r[i++] = o[s]; break; case 3: c(t, e[0], e[1], e[2], r, 0); break; default: !(function t(e, r, n, i, a) { for (var o = 1, s = n + 1; s < r.length; ++s) o *= r[s]; var l = r[n]; if (4 == r.length - n) { var u = r[n + 1], f = r[n + 2]; for (r = r[n + 3], s = 0; s < l; ++s) c(e[s], u, f, r, i, a), (a += o); } else for (s = 0; s < l; ++s) t(e[s], r, n + 1, i, a), (a += o); })(t, e, 0, r, 0); } return r; }, }, $ = { "[object Int8Array]": 5120, "[object Int16Array]": 5122, "[object Int32Array]": 5124, "[object Uint8Array]": 5121, "[object Uint8ClampedArray]": 5121, "[object Uint16Array]": 5123, "[object Uint32Array]": 5125, "[object Float32Array]": 5126, "[object Float64Array]": 5121, "[object ArrayBuffer]": 5121, }, tt = { int8: 5120, int16: 5122, int32: 5124, uint8: 5121, uint16: 5123, uint32: 5125, float: 5126, float32: 5126, }, et = { dynamic: 35048, stream: 35040, static: 35044 }, rt = Q.flatten, nt = Q.shape, it = []; (it[5120] = 1), (it[5122] = 2), (it[5124] = 4), (it[5121] = 1), (it[5123] = 2), (it[5125] = 4), (it[5126] = 4); var at = { points: 0, point: 0, lines: 1, line: 1, triangles: 4, triangle: 4, "line loop": 2, "line strip": 3, "triangle strip": 5, "triangle fan": 6, }, ot = new Float32Array(1), st = new Uint32Array(ot.buffer), lt = [9984, 9986, 9985, 9987], ct = [0, 6409, 6410, 6407, 6408], ut = {}; (ut[6409] = ut[6406] = ut[6402] = 1), (ut[34041] = ut[6410] = 2), (ut[6407] = ut[35904] = 3), (ut[6408] = ut[35906] = 4); var ft = v("HTMLCanvasElement"), ht = v("OffscreenCanvas"), pt = v("CanvasRenderingContext2D"), dt = v("ImageBitmap"), mt = v("HTMLImageElement"), gt = v("HTMLVideoElement"), vt = Object.keys($).concat([ft, ht, pt, dt, mt, gt]), yt = []; (yt[5121] = 1), (yt[5126] = 4), (yt[36193] = 2), (yt[5123] = 2), (yt[5125] = 4); var xt = []; (xt[32854] = 2), (xt[32855] = 2), (xt[36194] = 2), (xt[34041] = 4), (xt[33776] = 0.5), (xt[33777] = 0.5), (xt[33778] = 1), (xt[33779] = 1), (xt[35986] = 0.5), (xt[35987] = 1), (xt[34798] = 1), (xt[35840] = 0.5), (xt[35841] = 0.25), (xt[35842] = 0.5), (xt[35843] = 0.25), (xt[36196] = 0.5); var bt = []; (bt[32854] = 2), (bt[32855] = 2), (bt[36194] = 2), (bt[33189] = 2), (bt[36168] = 1), (bt[34041] = 4), (bt[35907] = 4), (bt[34836] = 16), (bt[34842] = 8), (bt[34843] = 6); var _t = function (t, e, r, n, i) { function a(t) { (this.id = c++), (this.refCount = 1), (this.renderbuffer = t), (this.format = 32854), (this.height = this.width = 0), i.profile && (this.stats = { size: 0 }); } function o(e) { var r = e.renderbuffer; t.bindRenderbuffer(36161, null), t.deleteRenderbuffer(r), (e.renderbuffer = null), (e.refCount = 0), delete u[e.id], n.renderbufferCount--; } var s = { rgba4: 32854, rgb565: 36194, "rgb5 a1": 32855, depth: 33189, stencil: 36168, "depth stencil": 34041, }; e.ext_srgb && (s.srgba = 35907), e.ext_color_buffer_half_float && ((s.rgba16f = 34842), (s.rgb16f = 34843)), e.webgl_color_buffer_float && (s.rgba32f = 34836); var l = []; Object.keys(s).forEach(function (t) { l[s[t]] = t; }); var c = 0, u = {}; return ( (a.prototype.decRef = function () { 0 >= --this.refCount && o(this); }), i.profile && (n.getTotalRenderbufferSize = function () { var t = 0; return ( Object.keys(u).forEach(function (e) { t += u[e].stats.size; }), t ); }), { create: function (e, r) { function o(e, r) { var n = 0, a = 0, u = 32854; if ( ("object" == typeof e && e ? ("shape" in e ? ((n = 0 | (a = e.shape)[0]), (a = 0 | a[1])) : ("radius" in e && (n = a = 0 | e.radius), "width" in e && (n = 0 | e.width), "height" in e && (a = 0 | e.height)), "format" in e && (u = s[e.format])) : "number" == typeof e ? ((n = 0 | e), (a = "number" == typeof r ? 0 | r : n)) : e || (n = a = 1), n !== c.width || a !== c.height || u !== c.format) ) return ( (o.width = c.width = n), (o.height = c.height = a), (c.format = u), t.bindRenderbuffer(36161, c.renderbuffer), t.renderbufferStorage(36161, u, n, a), i.profile && (c.stats.size = bt[c.format] * c.width * c.height), (o.format = l[c.format]), o ); } var c = new a(t.createRenderbuffer()); return ( (u[c.id] = c), n.renderbufferCount++, o(e, r), (o.resize = function (e, r) { var n = 0 | e, a = 0 | r || n; return ( (n === c.width && a === c.height) || ((o.width = c.width = n), (o.height = c.height = a), t.bindRenderbuffer(36161, c.renderbuffer), t.renderbufferStorage( 36161, c.format, n, a, ), i.profile && (c.stats.size = bt[c.format] * c.width * c.height)), o ); }), (o._reglType = "renderbuffer"), (o._renderbuffer = c), i.profile && (o.stats = c.stats), (o.destroy = function () { c.decRef(); }), o ); }, clear: function () { K(u).forEach(o); }, restore: function () { K(u).forEach(function (e) { (e.renderbuffer = t.createRenderbuffer()), t.bindRenderbuffer(36161, e.renderbuffer), t.renderbufferStorage( 36161, e.format, e.width, e.height, ); }), t.bindRenderbuffer(36161, null); }, } ); }, wt = []; (wt[6408] = 4), (wt[6407] = 3); var Tt = []; (Tt[5121] = 1), (Tt[5126] = 4), (Tt[36193] = 2); var kt = [ 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993, -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987, 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885, -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872, -1866530822, -1538233109, -1090935817, -965641998, ], At = ["x", "y", "z", "w"], Mt = "blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset".split( " ", ), St = { 0: 0, 1: 1, zero: 0, one: 1, "src color": 768, "one minus src color": 769, "src alpha": 770, "one minus src alpha": 771, "dst color": 774, "one minus dst color": 775, "dst alpha": 772, "one minus dst alpha": 773, "constant color": 32769, "one minus constant color": 32770, "constant alpha": 32771, "one minus constant alpha": 32772, "src alpha saturate": 776, }, Et = { never: 512, less: 513, "<": 513, equal: 514, "=": 514, "==": 514, "===": 514, lequal: 515, "<=": 515, greater: 516, ">": 516, notequal: 517, "!=": 517, "!==": 517, gequal: 518, ">=": 518, always: 519, }, Lt = { 0: 0, zero: 0, keep: 7680, replace: 7681, increment: 7682, decrement: 7683, "increment wrap": 34055, "decrement wrap": 34056, invert: 5386, }, Ct = { cw: 2304, ccw: 2305 }, Pt = new F(!1, !1, !1, function () {}); return function (t) { function e() { if (0 === K.length) T && T.update(), (et = null); else { (et = Y.next(e)), f(); for (var t = K.length - 1; 0 <= t; --t) { var r = K[t]; r && r(I, null, 0); } g.flush(), T && T.update(); } } function r() { !et && 0 < K.length && (et = Y.next(e)); } function n() { et && (Y.cancel(e), (et = null)); } function a(t) { t.preventDefault(), n(), Q.forEach(function (t) { t(); }); } function o(t) { g.getError(), y.restore(), F.restore(), z.restore(), B.restore(), N.restore(), j.restore(), R.restore(), T && T.restore(), q.procs.refresh(), r(), $.forEach(function (t) { t(); }); } function s(t) { function e(t, e) { var r = {}, n = {}; return ( Object.keys(t).forEach(function (i) { var a = t[i]; if (G.isDynamic(a)) n[i] = G.unbox(a, i); else { if (e && Array.isArray(a)) for (var o = 0; o < a.length; ++o) if (G.isDynamic(a[o])) return void (n[i] = G.unbox(a, i)); r[i] = a; } }), { dynamic: n, static: r } ); } var r = e(t.context || {}, !0), n = e(t.uniforms || {}, !0), i = e(t.attributes || {}, !1); t = e( (function (t) { function e(t) { if (t in r) { var e = r[t]; delete r[t], Object.keys(e).forEach(function (n) { r[t + "." + n] = e[n]; }); } } var r = H({}, t); return ( delete r.uniforms, delete r.attributes, delete r.context, delete r.vao, "stencil" in r && r.stencil.op && ((r.stencil.opBack = r.stencil.opFront = r.stencil.op), delete r.stencil.op), e("blend"), e("depth"), e("cull"), e("stencil"), e("polygonOffset"), e("scissor"), e("sample"), "vao" in t && (r.vao = t.vao), r ); })(t), !1, ); var a = { gpuTime: 0, cpuTime: 0, count: 0 }, o = q.compile(t, i, n, r, a), s = o.draw, l = o.batch, c = o.scope, u = []; return H( function (t, e) { var r; if ("function" == typeof t) return c.call(this, null, t, 0); if ("function" == typeof e) if ("number" == typeof t) for (r = 0; r < t; ++r) c.call(this, null, e, r); else { if (!Array.isArray(t)) return c.call(this, t, e, 0); for (r = 0; r < t.length; ++r) c.call(this, t[r], e, r); } else if ("number" == typeof t) { if (0 < t) return l.call( this, (function (t) { for (; u.length < t; ) u.push(null); return u; })(0 | t), 0 | t, ); } else { if (!Array.isArray(t)) return s.call(this, t); if (t.length) return l.call(this, t, t.length); } }, { stats: a, destroy: function () { o.destroy(); }, }, ); } function l(t, e) { var r = 0; q.procs.poll(); var n = e.color; n && (g.clearColor( +n[0] || 0, +n[1] || 0, +n[2] || 0, +n[3] || 0, ), (r |= 16384)), "depth" in e && (g.clearDepth(+e.depth), (r |= 256)), "stencil" in e && (g.clearStencil(0 | e.stencil), (r |= 1024)), g.clear(r); } function c(t) { return ( K.push(t), r(), { cancel: function () { var e = V(K, t); K[e] = function t() { var e = V(K, t); (K[e] = K[K.length - 1]), --K.length, 0 >= K.length && n(); }; }, } ); } function u() { var t = Z.viewport, e = Z.scissor_box; (t[0] = t[1] = e[0] = e[1] = 0), (I.viewportWidth = I.framebufferWidth = I.drawingBufferWidth = t[2] = e[2] = g.drawingBufferWidth), (I.viewportHeight = I.framebufferHeight = I.drawingBufferHeight = t[3] = e[3] = g.drawingBufferHeight); } function f() { (I.tick += 1), (I.time = m()), u(), q.procs.poll(); } function h() { B.refresh(), u(), q.procs.refresh(), T && T.update(); } function m() { return (W() - M) / 1e3; } if (!(t = i(t))) return null; var g = t.gl, v = g.getContextAttributes(); g.isContextLost(); var y = (function (t, e) { function r(e) { var r; e = e.toLowerCase(); try { r = n[e] = t.getExtension(e); } catch (t) {} return !!r; } for (var n = {}, i = 0; i < e.extensions.length; ++i) { var a = e.extensions[i]; if (!r(a)) return ( e.onDestroy(), e.onDone( '"' + a + '" extension is not supported by the current WebGL context, try upgrading your system or a different browser', ), null ); } return ( e.optionalExtensions.forEach(r), { extensions: n, restore: function () { Object.keys(n).forEach(function (t) { if (n[t] && !r(t)) throw Error( "(regl): error restoring extension " + t, ); }); }, } ); })(g, t); if (!y) return null; var x = (function () { var t = { "": 0 }, e = [""]; return { id: function (r) { var n = t[r]; return n || ((n = t[r] = e.length), e.push(r), n); }, str: function (t) { return e[t]; }, }; })(), b = { vaoCount: 0, bufferCount: 0, elementsCount: 0, framebufferCount: 0, shaderCount: 0, textureCount: 0, cubeCount: 0, renderbufferCount: 0, maxTextureUnits: 0, }, _ = t.cachedCode || {}, w = y.extensions, T = (function (t, e) { function r() { (this.endQueryIndex = this.startQueryIndex = -1), (this.sum = 0), (this.stats = null); } function n(t, e, n) { var i = o.pop() || new r(); (i.startQueryIndex = t), (i.endQueryIndex = e), (i.sum = 0), (i.stats = n), s.push(i); } if (!e.ext_disjoint_timer_query) return null; var i = [], a = [], o = [], s = [], l = [], c = []; return { beginQuery: function (t) { var r = i.pop() || e.ext_disjoint_timer_query.createQueryEXT(); e.ext_disjoint_timer_query.beginQueryEXT( 35007, r, ), a.push(r), n(a.length - 1, a.length, t); }, endQuery: function () { e.ext_disjoint_timer_query.endQueryEXT(35007); }, pushScopeStats: n, update: function () { var t, r; if (0 !== (t = a.length)) { (c.length = Math.max(c.length, t + 1)), (l.length = Math.max(l.length, t + 1)), (l[0] = 0); var n = (c[0] = 0); for (r = t = 0; r < a.length; ++r) { var u = a[r]; e.ext_disjoint_timer_query.getQueryObjectEXT( u, 34919, ) ? ((n += e.ext_disjoint_timer_query.getQueryObjectEXT( u, 34918, )), i.push(u)) : (a[t++] = u), (l[r + 1] = n), (c[r + 1] = t); } for ( a.length = t, r = t = 0; r < s.length; ++r ) { var f = (n = s[r]).startQueryIndex; u = n.endQueryIndex; (n.sum += l[u] - l[f]), (f = c[f]), (u = c[u]) === f ? ((n.stats.gpuTime += n.sum / 1e6), o.push(n)) : ((n.startQueryIndex = f), (n.endQueryIndex = u), (s[t++] = n)); } s.length = t; } }, getNumPendingQueries: function () { return a.length; }, clear: function () { i.push.apply(i, a); for (var t = 0; t < i.length; t++) e.ext_disjoint_timer_query.deleteQueryEXT(i[t]); (a.length = 0), (i.length = 0); }, restore: function () { (a.length = 0), (i.length = 0); }, }; })(0, w), M = W(), C = g.drawingBufferWidth, P = g.drawingBufferHeight, I = { tick: 0, time: 0, viewportWidth: C, viewportHeight: P, framebufferWidth: C, framebufferHeight: P, drawingBufferWidth: C, drawingBufferHeight: P, pixelRatio: t.pixelRatio, }, O = ((C = { elements: null, primitive: 4, count: -1, offset: 0, instances: -1, }), X(g, w)), z = p(g, b, t, function (t) { return R.destroyBuffer(t); }), D = d(g, w, z, b), R = S(g, w, O, b, z, D, C), F = E(g, x, b, t), B = k( g, w, O, function () { q.procs.poll(); }, I, b, t, ), N = _t(g, w, 0, b, t), j = A(g, w, O, B, N, b), q = U(g, x, w, O, z, D, 0, j, {}, R, F, C, I, T, _, t), Z = ((x = L(g, j, q.procs.poll, I)), q.next), J = g.canvas, K = [], Q = [], $ = [], tt = [t.onDestroy], et = null; J && (J.addEventListener("webglcontextlost", a, !1), J.addEventListener("webglcontextrestored", o, !1)); var rt = (j.setFBO = s({ framebuffer: G.define.call(null, 1, "framebuffer"), })); return ( h(), (v = H(s, { clear: function (t) { if ("framebuffer" in t) if ( t.framebuffer && "framebufferCube" === t.framebuffer_reglType ) for (var e = 0; 6 > e; ++e) rt( H( { framebuffer: t.framebuffer.faces[e] }, t, ), l, ); else rt(t, l); else l(0, t); }, prop: G.define.bind(null, 1), context: G.define.bind(null, 2), this: G.define.bind(null, 3), draw: s({}), buffer: function (t) { return z.create(t, 34962, !1, !1); }, elements: function (t) { return D.create(t, !1); }, texture: B.create2D, cube: B.createCube, renderbuffer: N.create, framebuffer: j.create, framebufferCube: j.createCube, vao: R.createVAO, attributes: v, frame: c, on: function (t, e) { var r; switch (t) { case "frame": return c(e); case "lost": r = Q; break; case "restore": r = $; break; case "destroy": r = tt; } return ( r.push(e), { cancel: function () { for (var t = 0; t < r.length; ++t) if (r[t] === e) { (r[t] = r[r.length - 1]), r.pop(); break; } }, } ); }, limits: O, hasExtension: function (t) { return 0 <= O.extensions.indexOf(t.toLowerCase()); }, read: x, destroy: function () { (K.length = 0), n(), J && (J.removeEventListener("webglcontextlost", a), J.removeEventListener( "webglcontextrestored", o, )), F.clear(), j.clear(), N.clear(), R.clear(), B.clear(), D.clear(), z.clear(), T && T.clear(), tt.forEach(function (t) { t(); }); }, _gl: g, _refresh: h, poll: function () { f(), T && T.update(); }, now: m, stats: b, getCachedCode: function () { return _; }, preloadCachedCode: function (t) { Object.entries(t).forEach(function (t) { _[t[0]] = t[1]; }); }, })), t.onDone(null, v), v ); }; }); }, {}, ], 285: [ function (t, e, r) { var n = t("buffer"), i = n.Buffer; function a(t, e) { for (var r in t) e[r] = t[r]; } function o(t, e, r) { return i(t, e, r); } i.from && i.alloc && i.allocUnsafe && i.allocUnsafeSlow ? (e.exports = n) : (a(n, r), (r.Buffer = o)), (o.prototype = Object.create(i.prototype)), a(i, o), (o.from = function (t, e, r) { if ("number" == typeof t) throw new TypeError("Argument must not be a number"); return i(t, e, r); }), (o.alloc = function (t, e, r) { if ("number" != typeof t) throw new TypeError("Argument must be a number"); var n = i(t); return ( void 0 !== e ? "string" == typeof r ? n.fill(e, r) : n.fill(e) : n.fill(0), n ); }), (o.allocUnsafe = function (t) { if ("number" != typeof t) throw new TypeError("Argument must be a number"); return i(t); }), (o.allocUnsafeSlow = function (t) { if ("number" != typeof t) throw new TypeError("Argument must be a number"); return n.SlowBuffer(t); }); }, { buffer: 85 }, ], 286: [ function (t, e, r) { e.exports = i; var n = t("events").EventEmitter; function i() { n.call(this); } t("inherits")(i, n), (i.Readable = t("readable-stream/lib/_stream_readable.js")), (i.Writable = t("readable-stream/lib/_stream_writable.js")), (i.Duplex = t("readable-stream/lib/_stream_duplex.js")), (i.Transform = t( "readable-stream/lib/_stream_transform.js", )), (i.PassThrough = t( "readable-stream/lib/_stream_passthrough.js", )), (i.finished = t( "readable-stream/lib/internal/streams/end-of-stream.js", )), (i.pipeline = t( "readable-stream/lib/internal/streams/pipeline.js", )), (i.Stream = i), (i.prototype.pipe = function (t, e) { var r = this; function i(e) { t.writable && !1 === t.write(e) && r.pause && r.pause(); } function a() { r.readable && r.resume && r.resume(); } r.on("data", i), t.on("drain", a), t._isStdio || (e && !1 === e.end) || (r.on("end", s), r.on("close", l)); var o = !1; function s() { o || ((o = !0), t.end()); } function l() { o || ((o = !0), "function" == typeof t.destroy && t.destroy()); } function c(t) { if ((u(), 0 === n.listenerCount(this, "error"))) throw t; } function u() { r.removeListener("data", i), t.removeListener("drain", a), r.removeListener("end", s), r.removeListener("close", l), r.removeListener("error", c), t.removeListener("error", c), r.removeListener("end", u), r.removeListener("close", u), t.removeListener("close", u); } return ( r.on("error", c), t.on("error", c), r.on("end", u), r.on("close", u), t.on("close", u), t.emit("pipe", r), t ); }); }, { events: 84, inherits: 231, "readable-stream/lib/_stream_duplex.js": 288, "readable-stream/lib/_stream_passthrough.js": 289, "readable-stream/lib/_stream_readable.js": 290, "readable-stream/lib/_stream_transform.js": 291, "readable-stream/lib/_stream_writable.js": 292, "readable-stream/lib/internal/streams/end-of-stream.js": 296, "readable-stream/lib/internal/streams/pipeline.js": 298, }, ], 287: [ function (t, e, r) { "use strict"; var n = {}; function i(t, e, r) { r || (r = Error); var i = (function (t) { var r, n; function i(r, n, i) { return ( t.call( this, (function (t, r, n) { return "string" == typeof e ? e : e(t, r, n); })(r, n, i), ) || this ); } return ( (n = t), ((r = i).prototype = Object.create(n.prototype)), (r.prototype.constructor = r), (r.__proto__ = n), i ); })(r); (i.prototype.name = r.name), (i.prototype.code = t), (n[t] = i); } function a(t, e) { if (Array.isArray(t)) { var r = t.length; return ( (t = t.map(function (t) { return String(t); })), r > 2 ? "one of " .concat(e, " ") .concat(t.slice(0, r - 1).join(", "), ", or ") + t[r - 1] : 2 === r ? "one of " .concat(e, " ") .concat(t[0], " or ") .concat(t[1]) : "of ".concat(e, " ").concat(t[0]) ); } return "of ".concat(e, " ").concat(String(t)); } i( "ERR_INVALID_OPT_VALUE", function (t, e) { return ( 'The value "' + e + '" is invalid for option "' + t + '"' ); }, TypeError, ), i( "ERR_INVALID_ARG_TYPE", function (t, e, r) { var n, i, o, s; if ( ("string" == typeof e && ((i = "not "), e.substr(!o || o < 0 ? 0 : +o, i.length) === i) ? ((n = "must not be"), (e = e.replace(/^not /, ""))) : (n = "must be"), (function (t, e, r) { return ( (void 0 === r || r > t.length) && (r = t.length), t.substring(r - e.length, r) === e ); })(t, " argument")) ) s = "The " .concat(t, " ") .concat(n, " ") .concat(a(e, "type")); else { var l = (function (t, e, r) { return ( "number" != typeof r && (r = 0), !(r + e.length > t.length) && -1 !== t.indexOf(e, r) ); })(t, ".") ? "property" : "argument"; s = 'The "' .concat(t, '" ') .concat(l, " ") .concat(n, " ") .concat(a(e, "type")); } return (s += ". Received type ".concat(typeof r)); }, TypeError, ), i("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF"), i("ERR_METHOD_NOT_IMPLEMENTED", function (t) { return "The " + t + " method is not implemented"; }), i("ERR_STREAM_PREMATURE_CLOSE", "Premature close"), i("ERR_STREAM_DESTROYED", function (t) { return ( "Cannot call " + t + " after a stream was destroyed" ); }), i( "ERR_MULTIPLE_CALLBACK", "Callback called multiple times", ), i("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable"), i("ERR_STREAM_WRITE_AFTER_END", "write after end"), i( "ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError, ), i( "ERR_UNKNOWN_ENCODING", function (t) { return "Unknown encoding: " + t; }, TypeError, ), i( "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event", ), (e.exports.codes = n); }, {}, ], 288: [ function (t, e, r) { (function (r) { (function () { "use strict"; var n = Object.keys || function (t) { var e = []; for (var r in t) e.push(r); return e; }; e.exports = c; var i = t("./_stream_readable"), a = t("./_stream_writable"); t("inherits")(c, i); for (var o = n(a.prototype), s = 0; s < o.length; s++) { var l = o[s]; c.prototype[l] || (c.prototype[l] = a.prototype[l]); } function c(t) { if (!(this instanceof c)) return new c(t); i.call(this, t), a.call(this, t), (this.allowHalfOpen = !0), t && (!1 === t.readable && (this.readable = !1), !1 === t.writable && (this.writable = !1), !1 === t.allowHalfOpen && ((this.allowHalfOpen = !1), this.once("end", u))); } function u() { this._writableState.ended || r.nextTick(f, this); } function f(t) { t.end(); } Object.defineProperty( c.prototype, "writableHighWaterMark", { enumerable: !1, get: function () { return this._writableState.highWaterMark; }, }, ), Object.defineProperty(c.prototype, "writableBuffer", { enumerable: !1, get: function () { return ( this._writableState && this._writableState.getBuffer() ); }, }), Object.defineProperty(c.prototype, "writableLength", { enumerable: !1, get: function () { return this._writableState.length; }, }), Object.defineProperty(c.prototype, "destroyed", { enumerable: !1, get: function () { return ( void 0 !== this._readableState && void 0 !== this._writableState && this._readableState.destroyed && this._writableState.destroyed ); }, set: function (t) { void 0 !== this._readableState && void 0 !== this._writableState && ((this._readableState.destroyed = t), (this._writableState.destroyed = t)); }, }); }).call(this); }).call(this, t("_process")); }, { "./_stream_readable": 290, "./_stream_writable": 292, _process: 278, inherits: 231, }, ], 289: [ function (t, e, r) { "use strict"; e.exports = i; var n = t("./_stream_transform"); function i(t) { if (!(this instanceof i)) return new i(t); n.call(this, t); } t("inherits")(i, n), (i.prototype._transform = function (t, e, r) { r(null, t); }); }, { "./_stream_transform": 291, inherits: 231 }, ], 290: [ function (t, e, r) { (function (r, n) { (function () { "use strict"; var i; (e.exports = A), (A.ReadableState = k); t("events").EventEmitter; var a = function (t, e) { return t.listeners(e).length; }, o = t("./internal/streams/stream"), s = t("buffer").Buffer, l = n.Uint8Array || function () {}; var c, u = t("util"); c = u && u.debuglog ? u.debuglog("stream") : function () {}; var f, h, p, d = t("./internal/streams/buffer_list"), m = t("./internal/streams/destroy"), g = t("./internal/streams/state").getHighWaterMark, v = t("../errors").codes, y = v.ERR_INVALID_ARG_TYPE, x = v.ERR_STREAM_PUSH_AFTER_EOF, b = v.ERR_METHOD_NOT_IMPLEMENTED, _ = v.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; t("inherits")(A, o); var w = m.errorOrDestroy, T = ["error", "close", "destroy", "pause", "resume"]; function k(e, r, n) { (i = i || t("./_stream_duplex")), (e = e || {}), "boolean" != typeof n && (n = r instanceof i), (this.objectMode = !!e.objectMode), n && (this.objectMode = this.objectMode || !!e.readableObjectMode), (this.highWaterMark = g( this, e, "readableHighWaterMark", n, )), (this.buffer = new d()), (this.length = 0), (this.pipes = null), (this.pipesCount = 0), (this.flowing = null), (this.ended = !1), (this.endEmitted = !1), (this.reading = !1), (this.sync = !0), (this.needReadable = !1), (this.emittedReadable = !1), (this.readableListening = !1), (this.resumeScheduled = !1), (this.paused = !0), (this.emitClose = !1 !== e.emitClose), (this.autoDestroy = !!e.autoDestroy), (this.destroyed = !1), (this.defaultEncoding = e.defaultEncoding || "utf8"), (this.awaitDrain = 0), (this.readingMore = !1), (this.decoder = null), (this.encoding = null), e.encoding && (f || (f = t("string_decoder/").StringDecoder), (this.decoder = new f(e.encoding)), (this.encoding = e.encoding)); } function A(e) { if ( ((i = i || t("./_stream_duplex")), !(this instanceof A)) ) return new A(e); var r = this instanceof i; (this._readableState = new k(e, this, r)), (this.readable = !0), e && ("function" == typeof e.read && (this._read = e.read), "function" == typeof e.destroy && (this._destroy = e.destroy)), o.call(this); } function M(t, e, r, n, i) { c("readableAddChunk", e); var a, o = t._readableState; if (null === e) (o.reading = !1), (function (t, e) { if ((c("onEofChunk"), e.ended)) return; if (e.decoder) { var r = e.decoder.end(); r && r.length && (e.buffer.push(r), (e.length += e.objectMode ? 1 : r.length)); } (e.ended = !0), e.sync ? L(t) : ((e.needReadable = !1), e.emittedReadable || ((e.emittedReadable = !0), C(t))); })(t, o); else if ( (i || (a = (function (t, e) { var r; (n = e), s.isBuffer(n) || n instanceof l || "string" == typeof e || void 0 === e || t.objectMode || (r = new y( "chunk", ["string", "Buffer", "Uint8Array"], e, )); var n; return r; })(o, e)), a) ) w(t, a); else if (o.objectMode || (e && e.length > 0)) if ( ("string" == typeof e || o.objectMode || Object.getPrototypeOf(e) === s.prototype || (e = (function (t) { return s.from(t); })(e)), n) ) o.endEmitted ? w(t, new _()) : S(t, o, e, !0); else if (o.ended) w(t, new x()); else { if (o.destroyed) return !1; (o.reading = !1), o.decoder && !r ? ((e = o.decoder.write(e)), o.objectMode || 0 !== e.length ? S(t, o, e, !1) : P(t, o)) : S(t, o, e, !1); } else n || ((o.reading = !1), P(t, o)); return ( !o.ended && (o.length < o.highWaterMark || 0 === o.length) ); } function S(t, e, r, n) { e.flowing && 0 === e.length && !e.sync ? ((e.awaitDrain = 0), t.emit("data", r)) : ((e.length += e.objectMode ? 1 : r.length), n ? e.buffer.unshift(r) : e.buffer.push(r), e.needReadable && L(t)), P(t, e); } Object.defineProperty(A.prototype, "destroyed", { enumerable: !1, get: function () { return ( void 0 !== this._readableState && this._readableState.destroyed ); }, set: function (t) { this._readableState && (this._readableState.destroyed = t); }, }), (A.prototype.destroy = m.destroy), (A.prototype._undestroy = m.undestroy), (A.prototype._destroy = function (t, e) { e(t); }), (A.prototype.push = function (t, e) { var r, n = this._readableState; return ( n.objectMode ? (r = !0) : "string" == typeof t && ((e = e || n.defaultEncoding) !== n.encoding && ((t = s.from(t, e)), (e = "")), (r = !0)), M(this, t, e, !1, r) ); }), (A.prototype.unshift = function (t) { return M(this, t, null, !0, !1); }), (A.prototype.isPaused = function () { return !1 === this._readableState.flowing; }), (A.prototype.setEncoding = function (e) { f || (f = t("string_decoder/").StringDecoder); var r = new f(e); (this._readableState.decoder = r), (this._readableState.encoding = this._readableState.decoder.encoding); for ( var n = this._readableState.buffer.head, i = ""; null !== n; ) (i += r.write(n.data)), (n = n.next); return ( this._readableState.buffer.clear(), "" !== i && this._readableState.buffer.push(i), (this._readableState.length = i.length), this ); }); function E(t, e) { return t <= 0 || (0 === e.length && e.ended) ? 0 : e.objectMode ? 1 : t != t ? e.flowing && e.length ? e.buffer.head.data.length : e.length : (t > e.highWaterMark && (e.highWaterMark = (function (t) { return ( t >= 1073741824 ? (t = 1073741824) : (t--, (t |= t >>> 1), (t |= t >>> 2), (t |= t >>> 4), (t |= t >>> 8), (t |= t >>> 16), t++), t ); })(t)), t <= e.length ? t : e.ended ? e.length : ((e.needReadable = !0), 0)); } function L(t) { var e = t._readableState; c("emitReadable", e.needReadable, e.emittedReadable), (e.needReadable = !1), e.emittedReadable || (c("emitReadable", e.flowing), (e.emittedReadable = !0), r.nextTick(C, t)); } function C(t) { var e = t._readableState; c("emitReadable_", e.destroyed, e.length, e.ended), e.destroyed || (!e.length && !e.ended) || (t.emit("readable"), (e.emittedReadable = !1)), (e.needReadable = !e.flowing && !e.ended && e.length <= e.highWaterMark), R(t); } function P(t, e) { e.readingMore || ((e.readingMore = !0), r.nextTick(I, t, e)); } function I(t, e) { for ( ; !e.reading && !e.ended && (e.length < e.highWaterMark || (e.flowing && 0 === e.length)); ) { var r = e.length; if ( (c("maybeReadMore read 0"), t.read(0), r === e.length) ) break; } e.readingMore = !1; } function O(t) { var e = t._readableState; (e.readableListening = t.listenerCount("readable") > 0), e.resumeScheduled && !e.paused ? (e.flowing = !0) : t.listenerCount("data") > 0 && t.resume(); } function z(t) { c("readable nexttick read 0"), t.read(0); } function D(t, e) { c("resume", e.reading), e.reading || t.read(0), (e.resumeScheduled = !1), t.emit("resume"), R(t), e.flowing && !e.reading && t.read(0); } function R(t) { var e = t._readableState; for ( c("flow", e.flowing); e.flowing && null !== t.read(); ); } function F(t, e) { return 0 === e.length ? null : (e.objectMode ? (r = e.buffer.shift()) : !t || t >= e.length ? ((r = e.decoder ? e.buffer.join("") : 1 === e.buffer.length ? e.buffer.first() : e.buffer.concat(e.length)), e.buffer.clear()) : (r = e.buffer.consume(t, e.decoder)), r); var r; } function B(t) { var e = t._readableState; c("endReadable", e.endEmitted), e.endEmitted || ((e.ended = !0), r.nextTick(N, e, t)); } function N(t, e) { if ( (c("endReadableNT", t.endEmitted, t.length), !t.endEmitted && 0 === t.length && ((t.endEmitted = !0), (e.readable = !1), e.emit("end"), t.autoDestroy)) ) { var r = e._writableState; (!r || (r.autoDestroy && r.finished)) && e.destroy(); } } function j(t, e) { for (var r = 0, n = t.length; r < n; r++) if (t[r] === e) return r; return -1; } (A.prototype.read = function (t) { c("read", t), (t = parseInt(t, 10)); var e = this._readableState, r = t; if ( (0 !== t && (e.emittedReadable = !1), 0 === t && e.needReadable && ((0 !== e.highWaterMark ? e.length >= e.highWaterMark : e.length > 0) || e.ended)) ) return ( c("read: emitReadable", e.length, e.ended), 0 === e.length && e.ended ? B(this) : L(this), null ); if (0 === (t = E(t, e)) && e.ended) return 0 === e.length && B(this), null; var n, i = e.needReadable; return ( c("need readable", i), (0 === e.length || e.length - t < e.highWaterMark) && c("length less than watermark", (i = !0)), e.ended || e.reading ? c("reading or ended", (i = !1)) : i && (c("do read"), (e.reading = !0), (e.sync = !0), 0 === e.length && (e.needReadable = !0), this._read(e.highWaterMark), (e.sync = !1), e.reading || (t = E(r, e))), null === (n = t > 0 ? F(t, e) : null) ? ((e.needReadable = e.length <= e.highWaterMark), (t = 0)) : ((e.length -= t), (e.awaitDrain = 0)), 0 === e.length && (e.ended || (e.needReadable = !0), r !== t && e.ended && B(this)), null !== n && this.emit("data", n), n ); }), (A.prototype._read = function (t) { w(this, new b("_read()")); }), (A.prototype.pipe = function (t, e) { var n = this, i = this._readableState; switch (i.pipesCount) { case 0: i.pipes = t; break; case 1: i.pipes = [i.pipes, t]; break; default: i.pipes.push(t); } (i.pipesCount += 1), c("pipe count=%d opts=%j", i.pipesCount, e); var o = (!e || !1 !== e.end) && t !== r.stdout && t !== r.stderr ? l : g; function s(e, r) { c("onunpipe"), e === n && r && !1 === r.hasUnpiped && ((r.hasUnpiped = !0), c("cleanup"), t.removeListener("close", d), t.removeListener("finish", m), t.removeListener("drain", u), t.removeListener("error", p), t.removeListener("unpipe", s), n.removeListener("end", l), n.removeListener("end", g), n.removeListener("data", h), (f = !0), !i.awaitDrain || (t._writableState && !t._writableState.needDrain) || u()); } function l() { c("onend"), t.end(); } i.endEmitted ? r.nextTick(o) : n.once("end", o), t.on("unpipe", s); var u = (function (t) { return function () { var e = t._readableState; c("pipeOnDrain", e.awaitDrain), e.awaitDrain && e.awaitDrain--, 0 === e.awaitDrain && a(t, "data") && ((e.flowing = !0), R(t)); }; })(n); t.on("drain", u); var f = !1; function h(e) { c("ondata"); var r = t.write(e); c("dest.write", r), !1 === r && (((1 === i.pipesCount && i.pipes === t) || (i.pipesCount > 1 && -1 !== j(i.pipes, t))) && !f && (c( "false write response, pause", i.awaitDrain, ), i.awaitDrain++), n.pause()); } function p(e) { c("onerror", e), g(), t.removeListener("error", p), 0 === a(t, "error") && w(t, e); } function d() { t.removeListener("finish", m), g(); } function m() { c("onfinish"), t.removeListener("close", d), g(); } function g() { c("unpipe"), n.unpipe(t); } return ( n.on("data", h), (function (t, e, r) { if ("function" == typeof t.prependListener) return t.prependListener(e, r); t._events && t._events[e] ? Array.isArray(t._events[e]) ? t._events[e].unshift(r) : (t._events[e] = [r, t._events[e]]) : t.on(e, r); })(t, "error", p), t.once("close", d), t.once("finish", m), t.emit("pipe", n), i.flowing || (c("pipe resume"), n.resume()), t ); }), (A.prototype.unpipe = function (t) { var e = this._readableState, r = { hasUnpiped: !1 }; if (0 === e.pipesCount) return this; if (1 === e.pipesCount) return ( (t && t !== e.pipes) || (t || (t = e.pipes), (e.pipes = null), (e.pipesCount = 0), (e.flowing = !1), t && t.emit("unpipe", this, r)), this ); if (!t) { var n = e.pipes, i = e.pipesCount; (e.pipes = null), (e.pipesCount = 0), (e.flowing = !1); for (var a = 0; a < i; a++) n[a].emit("unpipe", this, { hasUnpiped: !1 }); return this; } var o = j(e.pipes, t); return ( -1 === o || (e.pipes.splice(o, 1), (e.pipesCount -= 1), 1 === e.pipesCount && (e.pipes = e.pipes[0]), t.emit("unpipe", this, r)), this ); }), (A.prototype.on = function (t, e) { var n = o.prototype.on.call(this, t, e), i = this._readableState; return ( "data" === t ? ((i.readableListening = this.listenerCount("readable") > 0), !1 !== i.flowing && this.resume()) : "readable" === t && (i.endEmitted || i.readableListening || ((i.readableListening = i.needReadable = !0), (i.flowing = !1), (i.emittedReadable = !1), c("on readable", i.length, i.reading), i.length ? L(this) : i.reading || r.nextTick(z, this))), n ); }), (A.prototype.addListener = A.prototype.on), (A.prototype.removeListener = function (t, e) { var n = o.prototype.removeListener.call(this, t, e); return "readable" === t && r.nextTick(O, this), n; }), (A.prototype.removeAllListeners = function (t) { var e = o.prototype.removeAllListeners.apply( this, arguments, ); return ( ("readable" !== t && void 0 !== t) || r.nextTick(O, this), e ); }), (A.prototype.resume = function () { var t = this._readableState; return ( t.flowing || (c("resume"), (t.flowing = !t.readableListening), (function (t, e) { e.resumeScheduled || ((e.resumeScheduled = !0), r.nextTick(D, t, e)); })(this, t)), (t.paused = !1), this ); }), (A.prototype.pause = function () { return ( c( "call pause flowing=%j", this._readableState.flowing, ), !1 !== this._readableState.flowing && (c("pause"), (this._readableState.flowing = !1), this.emit("pause")), (this._readableState.paused = !0), this ); }), (A.prototype.wrap = function (t) { var e = this, r = this._readableState, n = !1; for (var i in (t.on("end", function () { if ((c("wrapped end"), r.decoder && !r.ended)) { var t = r.decoder.end(); t && t.length && e.push(t); } e.push(null); }), t.on("data", function (i) { (c("wrapped data"), r.decoder && (i = r.decoder.write(i)), r.objectMode && null == i) || ((r.objectMode || (i && i.length)) && (e.push(i) || ((n = !0), t.pause()))); }), t)) void 0 === this[i] && "function" == typeof t[i] && (this[i] = (function (e) { return function () { return t[e].apply(t, arguments); }; })(i)); for (var a = 0; a < T.length; a++) t.on(T[a], this.emit.bind(this, T[a])); return ( (this._read = function (e) { c("wrapped _read", e), n && ((n = !1), t.resume()); }), this ); }), "function" == typeof Symbol && (A.prototype[Symbol.asyncIterator] = function () { return ( void 0 === h && (h = t("./internal/streams/async_iterator")), h(this) ); }), Object.defineProperty( A.prototype, "readableHighWaterMark", { enumerable: !1, get: function () { return this._readableState.highWaterMark; }, }, ), Object.defineProperty(A.prototype, "readableBuffer", { enumerable: !1, get: function () { return ( this._readableState && this._readableState.buffer ); }, }), Object.defineProperty(A.prototype, "readableFlowing", { enumerable: !1, get: function () { return this._readableState.flowing; }, set: function (t) { this._readableState && (this._readableState.flowing = t); }, }), (A._fromList = F), Object.defineProperty(A.prototype, "readableLength", { enumerable: !1, get: function () { return this._readableState.length; }, }), "function" == typeof Symbol && (A.from = function (e, r) { return ( void 0 === p && (p = t("./internal/streams/from")), p(A, e, r) ); }); }).call(this); }).call( this, t("_process"), "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, ); }, { "../errors": 287, "./_stream_duplex": 288, "./internal/streams/async_iterator": 293, "./internal/streams/buffer_list": 294, "./internal/streams/destroy": 295, "./internal/streams/from": 297, "./internal/streams/state": 299, "./internal/streams/stream": 300, _process: 278, buffer: 85, events: 84, inherits: 231, "string_decoder/": 301, util: 83, }, ], 291: [ function (t, e, r) { "use strict"; e.exports = u; var n = t("../errors").codes, i = n.ERR_METHOD_NOT_IMPLEMENTED, a = n.ERR_MULTIPLE_CALLBACK, o = n.ERR_TRANSFORM_ALREADY_TRANSFORMING, s = n.ERR_TRANSFORM_WITH_LENGTH_0, l = t("./_stream_duplex"); function c(t, e) { var r = this._transformState; r.transforming = !1; var n = r.writecb; if (null === n) return this.emit("error", new a()); (r.writechunk = null), (r.writecb = null), null != e && this.push(e), n(t); var i = this._readableState; (i.reading = !1), (i.needReadable || i.length < i.highWaterMark) && this._read(i.highWaterMark); } function u(t) { if (!(this instanceof u)) return new u(t); l.call(this, t), (this._transformState = { afterTransform: c.bind(this), needTransform: !1, transforming: !1, writecb: null, writechunk: null, writeencoding: null, }), (this._readableState.needReadable = !0), (this._readableState.sync = !1), t && ("function" == typeof t.transform && (this._transform = t.transform), "function" == typeof t.flush && (this._flush = t.flush)), this.on("prefinish", f); } function f() { var t = this; "function" != typeof this._flush || this._readableState.destroyed ? h(this, null, null) : this._flush(function (e, r) { h(t, e, r); }); } function h(t, e, r) { if (e) return t.emit("error", e); if ((null != r && t.push(r), t._writableState.length)) throw new s(); if (t._transformState.transforming) throw new o(); return t.push(null); } t("inherits")(u, l), (u.prototype.push = function (t, e) { return ( (this._transformState.needTransform = !1), l.prototype.push.call(this, t, e) ); }), (u.prototype._transform = function (t, e, r) { r(new i("_transform()")); }), (u.prototype._write = function (t, e, r) { var n = this._transformState; if ( ((n.writecb = r), (n.writechunk = t), (n.writeencoding = e), !n.transforming) ) { var i = this._readableState; (n.needTransform || i.needReadable || i.length < i.highWaterMark) && this._read(i.highWaterMark); } }), (u.prototype._read = function (t) { var e = this._transformState; null === e.writechunk || e.transforming ? (e.needTransform = !0) : ((e.transforming = !0), this._transform( e.writechunk, e.writeencoding, e.afterTransform, )); }), (u.prototype._destroy = function (t, e) { l.prototype._destroy.call(this, t, function (t) { e(t); }); }); }, { "../errors": 287, "./_stream_duplex": 288, inherits: 231 }, ], 292: [ function (t, e, r) { (function (r, n) { (function () { "use strict"; function i(t) { var e = this; (this.next = null), (this.entry = null), (this.finish = function () { !(function (t, e, r) { var n = t.entry; t.entry = null; for (; n; ) { var i = n.callback; e.pendingcb--, i(r), (n = n.next); } e.corkedRequestsFree.next = t; })(e, t); }); } var a; (e.exports = A), (A.WritableState = k); var o = { deprecate: t("util-deprecate") }, s = t("./internal/streams/stream"), l = t("buffer").Buffer, c = n.Uint8Array || function () {}; var u, f = t("./internal/streams/destroy"), h = t("./internal/streams/state").getHighWaterMark, p = t("../errors").codes, d = p.ERR_INVALID_ARG_TYPE, m = p.ERR_METHOD_NOT_IMPLEMENTED, g = p.ERR_MULTIPLE_CALLBACK, v = p.ERR_STREAM_CANNOT_PIPE, y = p.ERR_STREAM_DESTROYED, x = p.ERR_STREAM_NULL_VALUES, b = p.ERR_STREAM_WRITE_AFTER_END, _ = p.ERR_UNKNOWN_ENCODING, w = f.errorOrDestroy; function T() {} function k(e, n, o) { (a = a || t("./_stream_duplex")), (e = e || {}), "boolean" != typeof o && (o = n instanceof a), (this.objectMode = !!e.objectMode), o && (this.objectMode = this.objectMode || !!e.writableObjectMode), (this.highWaterMark = h( this, e, "writableHighWaterMark", o, )), (this.finalCalled = !1), (this.needDrain = !1), (this.ending = !1), (this.ended = !1), (this.finished = !1), (this.destroyed = !1); var s = !1 === e.decodeStrings; (this.decodeStrings = !s), (this.defaultEncoding = e.defaultEncoding || "utf8"), (this.length = 0), (this.writing = !1), (this.corked = 0), (this.sync = !0), (this.bufferProcessing = !1), (this.onwrite = function (t) { !(function (t, e) { var n = t._writableState, i = n.sync, a = n.writecb; if ("function" != typeof a) throw new g(); if ( ((function (t) { (t.writing = !1), (t.writecb = null), (t.length -= t.writelen), (t.writelen = 0); })(n), e) ) !(function (t, e, n, i, a) { --e.pendingcb, n ? (r.nextTick(a, i), r.nextTick(P, t, e), (t._writableState.errorEmitted = !0), w(t, i)) : (a(i), (t._writableState.errorEmitted = !0), w(t, i), P(t, e)); })(t, n, i, e, a); else { var o = L(n) || t.destroyed; o || n.corked || n.bufferProcessing || !n.bufferedRequest || E(t, n), i ? r.nextTick(S, t, n, o, a) : S(t, n, o, a); } })(n, t); }), (this.writecb = null), (this.writelen = 0), (this.bufferedRequest = null), (this.lastBufferedRequest = null), (this.pendingcb = 0), (this.prefinished = !1), (this.errorEmitted = !1), (this.emitClose = !1 !== e.emitClose), (this.autoDestroy = !!e.autoDestroy), (this.bufferedRequestCount = 0), (this.corkedRequestsFree = new i(this)); } function A(e) { var r = this instanceof (a = a || t("./_stream_duplex")); if (!r && !u.call(A, this)) return new A(e); (this._writableState = new k(e, this, r)), (this.writable = !0), e && ("function" == typeof e.write && (this._write = e.write), "function" == typeof e.writev && (this._writev = e.writev), "function" == typeof e.destroy && (this._destroy = e.destroy), "function" == typeof e.final && (this._final = e.final)), s.call(this); } function M(t, e, r, n, i, a, o) { (e.writelen = n), (e.writecb = o), (e.writing = !0), (e.sync = !0), e.destroyed ? e.onwrite(new y("write")) : r ? t._writev(i, e.onwrite) : t._write(i, a, e.onwrite), (e.sync = !1); } function S(t, e, r, n) { r || (function (t, e) { 0 === e.length && e.needDrain && ((e.needDrain = !1), t.emit("drain")); })(t, e), e.pendingcb--, n(), P(t, e); } function E(t, e) { e.bufferProcessing = !0; var r = e.bufferedRequest; if (t._writev && r && r.next) { var n = e.bufferedRequestCount, a = new Array(n), o = e.corkedRequestsFree; o.entry = r; for (var s = 0, l = !0; r; ) (a[s] = r), r.isBuf || (l = !1), (r = r.next), (s += 1); (a.allBuffers = l), M(t, e, !0, e.length, a, "", o.finish), e.pendingcb++, (e.lastBufferedRequest = null), o.next ? ((e.corkedRequestsFree = o.next), (o.next = null)) : (e.corkedRequestsFree = new i(e)), (e.bufferedRequestCount = 0); } else { for (; r; ) { var c = r.chunk, u = r.encoding, f = r.callback; if ( (M( t, e, !1, e.objectMode ? 1 : c.length, c, u, f, ), (r = r.next), e.bufferedRequestCount--, e.writing) ) break; } null === r && (e.lastBufferedRequest = null); } (e.bufferedRequest = r), (e.bufferProcessing = !1); } function L(t) { return ( t.ending && 0 === t.length && null === t.bufferedRequest && !t.finished && !t.writing ); } function C(t, e) { t._final(function (r) { e.pendingcb--, r && w(t, r), (e.prefinished = !0), t.emit("prefinish"), P(t, e); }); } function P(t, e) { var n = L(e); if ( n && ((function (t, e) { e.prefinished || e.finalCalled || ("function" != typeof t._final || e.destroyed ? ((e.prefinished = !0), t.emit("prefinish")) : (e.pendingcb++, (e.finalCalled = !0), r.nextTick(C, t, e))); })(t, e), 0 === e.pendingcb && ((e.finished = !0), t.emit("finish"), e.autoDestroy)) ) { var i = t._readableState; (!i || (i.autoDestroy && i.endEmitted)) && t.destroy(); } return n; } t("inherits")(A, s), (k.prototype.getBuffer = function () { for (var t = this.bufferedRequest, e = []; t; ) e.push(t), (t = t.next); return e; }), (function () { try { Object.defineProperty(k.prototype, "buffer", { get: o.deprecate( function () { return this.getBuffer(); }, "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003", ), }); } catch (t) {} })(), "function" == typeof Symbol && Symbol.hasInstance && "function" == typeof Function.prototype[Symbol.hasInstance] ? ((u = Function.prototype[Symbol.hasInstance]), Object.defineProperty(A, Symbol.hasInstance, { value: function (t) { return ( !!u.call(this, t) || (this === A && t && t._writableState instanceof k) ); }, })) : (u = function (t) { return t instanceof this; }), (A.prototype.pipe = function () { w(this, new v()); }), (A.prototype.write = function (t, e, n) { var i, a = this._writableState, o = !1, s = !a.objectMode && ((i = t), l.isBuffer(i) || i instanceof c); return ( s && !l.isBuffer(t) && (t = (function (t) { return l.from(t); })(t)), "function" == typeof e && ((n = e), (e = null)), s ? (e = "buffer") : e || (e = a.defaultEncoding), "function" != typeof n && (n = T), a.ending ? (function (t, e) { var n = new b(); w(t, n), r.nextTick(e, n); })(this, n) : (s || (function (t, e, n, i) { var a; return ( null === n ? (a = new x()) : "string" == typeof n || e.objectMode || (a = new d( "chunk", ["string", "Buffer"], n, )), !a || (w(t, a), r.nextTick(i, a), !1) ); })(this, a, t, n)) && (a.pendingcb++, (o = (function (t, e, r, n, i, a) { if (!r) { var o = (function (t, e, r) { t.objectMode || !1 === t.decodeStrings || "string" != typeof e || (e = l.from(e, r)); return e; })(e, n, i); n !== o && ((r = !0), (i = "buffer"), (n = o)); } var s = e.objectMode ? 1 : n.length; e.length += s; var c = e.length < e.highWaterMark; c || (e.needDrain = !0); if (e.writing || e.corked) { var u = e.lastBufferedRequest; (e.lastBufferedRequest = { chunk: n, encoding: i, isBuf: r, callback: a, next: null, }), u ? (u.next = e.lastBufferedRequest) : (e.bufferedRequest = e.lastBufferedRequest), (e.bufferedRequestCount += 1); } else M(t, e, !1, s, n, i, a); return c; })(this, a, s, t, e, n))), o ); }), (A.prototype.cork = function () { this._writableState.corked++; }), (A.prototype.uncork = function () { var t = this._writableState; t.corked && (t.corked--, t.writing || t.corked || t.bufferProcessing || !t.bufferedRequest || E(this, t)); }), (A.prototype.setDefaultEncoding = function (t) { if ( ("string" == typeof t && (t = t.toLowerCase()), !( [ "hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw", ].indexOf((t + "").toLowerCase()) > -1 )) ) throw new _(t); return ( (this._writableState.defaultEncoding = t), this ); }), Object.defineProperty(A.prototype, "writableBuffer", { enumerable: !1, get: function () { return ( this._writableState && this._writableState.getBuffer() ); }, }), Object.defineProperty( A.prototype, "writableHighWaterMark", { enumerable: !1, get: function () { return this._writableState.highWaterMark; }, }, ), (A.prototype._write = function (t, e, r) { r(new m("_write()")); }), (A.prototype._writev = null), (A.prototype.end = function (t, e, n) { var i = this._writableState; return ( "function" == typeof t ? ((n = t), (t = null), (e = null)) : "function" == typeof e && ((n = e), (e = null)), null != t && this.write(t, e), i.corked && ((i.corked = 1), this.uncork()), i.ending || (function (t, e, n) { (e.ending = !0), P(t, e), n && (e.finished ? r.nextTick(n) : t.once("finish", n)); (e.ended = !0), (t.writable = !1); })(this, i, n), this ); }), Object.defineProperty(A.prototype, "writableLength", { enumerable: !1, get: function () { return this._writableState.length; }, }), Object.defineProperty(A.prototype, "destroyed", { enumerable: !1, get: function () { return ( void 0 !== this._writableState && this._writableState.destroyed ); }, set: function (t) { this._writableState && (this._writableState.destroyed = t); }, }), (A.prototype.destroy = f.destroy), (A.prototype._undestroy = f.undestroy), (A.prototype._destroy = function (t, e) { e(t); }); }).call(this); }).call( this, t("_process"), "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, ); }, { "../errors": 287, "./_stream_duplex": 288, "./internal/streams/destroy": 295, "./internal/streams/state": 299, "./internal/streams/stream": 300, _process: 278, buffer: 85, inherits: 231, "util-deprecate": 331, }, ], 293: [ function (t, e, r) { (function (r) { (function () { "use strict"; var n; function i(t, e, r) { return ( e in t ? Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0, }) : (t[e] = r), t ); } var a = t("./end-of-stream"), o = Symbol("lastResolve"), s = Symbol("lastReject"), l = Symbol("error"), c = Symbol("ended"), u = Symbol("lastPromise"), f = Symbol("handlePromise"), h = Symbol("stream"); function p(t, e) { return { value: t, done: e }; } function d(t) { var e = t[o]; if (null !== e) { var r = t[h].read(); null !== r && ((t[u] = null), (t[o] = null), (t[s] = null), e(p(r, !1))); } } function m(t) { r.nextTick(d, t); } var g = Object.getPrototypeOf(function () {}), v = Object.setPrototypeOf( (i( (n = { get stream() { return this[h]; }, next: function () { var t = this, e = this[l]; if (null !== e) return Promise.reject(e); if (this[c]) return Promise.resolve(p(void 0, !0)); if (this[h].destroyed) return new Promise(function (e, n) { r.nextTick(function () { t[l] ? n(t[l]) : e(p(void 0, !0)); }); }); var n, i = this[u]; if (i) n = new Promise( (function (t, e) { return function (r, n) { t.then(function () { e[c] ? r(p(void 0, !0)) : e[f](r, n); }, n); }; })(i, this), ); else { var a = this[h].read(); if (null !== a) return Promise.resolve(p(a, !1)); n = new Promise(this[f]); } return (this[u] = n), n; }, }), Symbol.asyncIterator, function () { return this; }, ), i(n, "return", function () { var t = this; return new Promise(function (e, r) { t[h].destroy(null, function (t) { t ? r(t) : e(p(void 0, !0)); }); }); }), n), g, ); e.exports = function (t) { var e, r = Object.create( v, (i((e = {}), h, { value: t, writable: !0 }), i(e, o, { value: null, writable: !0 }), i(e, s, { value: null, writable: !0 }), i(e, l, { value: null, writable: !0 }), i(e, c, { value: t._readableState.endEmitted, writable: !0, }), i(e, f, { value: function (t, e) { var n = r[h].read(); n ? ((r[u] = null), (r[o] = null), (r[s] = null), t(p(n, !1))) : ((r[o] = t), (r[s] = e)); }, writable: !0, }), e), ); return ( (r[u] = null), a(t, function (t) { if (t && "ERR_STREAM_PREMATURE_CLOSE" !== t.code) { var e = r[s]; return ( null !== e && ((r[u] = null), (r[o] = null), (r[s] = null), e(t)), void (r[l] = t) ); } var n = r[o]; null !== n && ((r[u] = null), (r[o] = null), (r[s] = null), n(p(void 0, !0))), (r[c] = !0); }), t.on("readable", m.bind(null, r)), r ); }; }).call(this); }).call(this, t("_process")); }, { "./end-of-stream": 296, _process: 278 }, ], 294: [ function (t, e, r) { "use strict"; function n(t, e) { var r = Object.keys(t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(t); e && (n = n.filter(function (e) { return Object.getOwnPropertyDescriptor(t, e) .enumerable; })), r.push.apply(r, n); } return r; } function i(t, e, r) { return ( e in t ? Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0, }) : (t[e] = r), t ); } function a(t, e) { for (var r = 0; r < e.length; r++) { var n = e[r]; (n.enumerable = n.enumerable || !1), (n.configurable = !0), "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n); } } var o = t("buffer").Buffer, s = t("util").inspect, l = (s && s.custom) || "inspect"; e.exports = (function () { function t() { !(function (t, e) { if (!(t instanceof e)) throw new TypeError( "Cannot call a class as a function", ); })(this, t), (this.head = null), (this.tail = null), (this.length = 0); } var e, r, c; return ( (e = t), (r = [ { key: "push", value: function (t) { var e = { data: t, next: null }; this.length > 0 ? (this.tail.next = e) : (this.head = e), (this.tail = e), ++this.length; }, }, { key: "unshift", value: function (t) { var e = { data: t, next: this.head }; 0 === this.length && (this.tail = e), (this.head = e), ++this.length; }, }, { key: "shift", value: function () { if (0 !== this.length) { var t = this.head.data; return ( 1 === this.length ? (this.head = this.tail = null) : (this.head = this.head.next), --this.length, t ); } }, }, { key: "clear", value: function () { (this.head = this.tail = null), (this.length = 0); }, }, { key: "join", value: function (t) { if (0 === this.length) return ""; for ( var e = this.head, r = "" + e.data; (e = e.next); ) r += t + e.data; return r; }, }, { key: "concat", value: function (t) { if (0 === this.length) return o.alloc(0); for ( var e, r, n, i = o.allocUnsafe(t >>> 0), a = this.head, s = 0; a; ) (e = a.data), (r = i), (n = s), o.prototype.copy.call(e, r, n), (s += a.data.length), (a = a.next); return i; }, }, { key: "consume", value: function (t, e) { var r; return ( t < this.head.data.length ? ((r = this.head.data.slice(0, t)), (this.head.data = this.head.data.slice(t))) : (r = t === this.head.data.length ? this.shift() : e ? this._getString(t) : this._getBuffer(t)), r ); }, }, { key: "first", value: function () { return this.head.data; }, }, { key: "_getString", value: function (t) { var e = this.head, r = 1, n = e.data; for (t -= n.length; (e = e.next); ) { var i = e.data, a = t > i.length ? i.length : t; if ( (a === i.length ? (n += i) : (n += i.slice(0, t)), 0 == (t -= a)) ) { a === i.length ? (++r, e.next ? (this.head = e.next) : (this.head = this.tail = null)) : ((this.head = e), (e.data = i.slice(a))); break; } ++r; } return (this.length -= r), n; }, }, { key: "_getBuffer", value: function (t) { var e = o.allocUnsafe(t), r = this.head, n = 1; for ( r.data.copy(e), t -= r.data.length; (r = r.next); ) { var i = r.data, a = t > i.length ? i.length : t; if ( (i.copy(e, e.length - t, 0, a), 0 == (t -= a)) ) { a === i.length ? (++n, r.next ? (this.head = r.next) : (this.head = this.tail = null)) : ((this.head = r), (r.data = i.slice(a))); break; } ++n; } return (this.length -= n), e; }, }, { key: l, value: function (t, e) { return s( this, (function (t) { for (var e = 1; e < arguments.length; e++) { var r = null != arguments[e] ? arguments[e] : {}; e % 2 ? n(Object(r), !0).forEach(function (e) { i(t, e, r[e]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties( t, Object.getOwnPropertyDescriptors(r), ) : n(Object(r)).forEach(function (e) { Object.defineProperty( t, e, Object.getOwnPropertyDescriptor( r, e, ), ); }); } return t; })({}, e, { depth: 0, customInspect: !1 }), ); }, }, ]) && a(e.prototype, r), c && a(e, c), t ); })(); }, { buffer: 85, util: 83 }, ], 295: [ function (t, e, r) { (function (t) { (function () { "use strict"; function r(t, e) { i(t, e), n(t); } function n(t) { (t._writableState && !t._writableState.emitClose) || (t._readableState && !t._readableState.emitClose) || t.emit("close"); } function i(t, e) { t.emit("error", e); } e.exports = { destroy: function (e, a) { var o = this, s = this._readableState && this._readableState.destroyed, l = this._writableState && this._writableState.destroyed; return s || l ? (a ? a(e) : e && (this._writableState ? this._writableState.errorEmitted || ((this._writableState.errorEmitted = !0), t.nextTick(i, this, e)) : t.nextTick(i, this, e)), this) : (this._readableState && (this._readableState.destroyed = !0), this._writableState && (this._writableState.destroyed = !0), this._destroy(e || null, function (e) { !a && e ? o._writableState ? o._writableState.errorEmitted ? t.nextTick(n, o) : ((o._writableState.errorEmitted = !0), t.nextTick(r, o, e)) : t.nextTick(r, o, e) : a ? (t.nextTick(n, o), a(e)) : t.nextTick(n, o); }), this); }, undestroy: function () { this._readableState && ((this._readableState.destroyed = !1), (this._readableState.reading = !1), (this._readableState.ended = !1), (this._readableState.endEmitted = !1)), this._writableState && ((this._writableState.destroyed = !1), (this._writableState.ended = !1), (this._writableState.ending = !1), (this._writableState.finalCalled = !1), (this._writableState.prefinished = !1), (this._writableState.finished = !1), (this._writableState.errorEmitted = !1)); }, errorOrDestroy: function (t, e) { var r = t._readableState, n = t._writableState; (r && r.autoDestroy) || (n && n.autoDestroy) ? t.destroy(e) : t.emit("error", e); }, }; }).call(this); }).call(this, t("_process")); }, { _process: 278 }, ], 296: [ function (t, e, r) { "use strict"; var n = t("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE; function i() {} e.exports = function t(e, r, a) { if ("function" == typeof r) return t(e, null, r); r || (r = {}), (a = (function (t) { var e = !1; return function () { if (!e) { e = !0; for ( var r = arguments.length, n = new Array(r), i = 0; i < r; i++ ) n[i] = arguments[i]; t.apply(this, n); } }; })(a || i)); var o = r.readable || (!1 !== r.readable && e.readable), s = r.writable || (!1 !== r.writable && e.writable), l = function () { e.writable || u(); }, c = e._writableState && e._writableState.finished, u = function () { (s = !1), (c = !0), o || a.call(e); }, f = e._readableState && e._readableState.endEmitted, h = function () { (o = !1), (f = !0), s || a.call(e); }, p = function (t) { a.call(e, t); }, d = function () { var t; return o && !f ? ((e._readableState && e._readableState.ended) || (t = new n()), a.call(e, t)) : s && !c ? ((e._writableState && e._writableState.ended) || (t = new n()), a.call(e, t)) : void 0; }, m = function () { e.req.on("finish", u); }; return ( !(function (t) { return t.setHeader && "function" == typeof t.abort; })(e) ? s && !e._writableState && (e.on("end", l), e.on("close", l)) : (e.on("complete", u), e.on("abort", d), e.req ? m() : e.on("request", m)), e.on("end", h), e.on("finish", u), !1 !== r.error && e.on("error", p), e.on("close", d), function () { e.removeListener("complete", u), e.removeListener("abort", d), e.removeListener("request", m), e.req && e.req.removeListener("finish", u), e.removeListener("end", l), e.removeListener("close", l), e.removeListener("finish", u), e.removeListener("end", h), e.removeListener("error", p), e.removeListener("close", d); } ); }; }, { "../../../errors": 287 }, ], 297: [ function (t, e, r) { e.exports = function () { throw new Error( "Readable.from is not available in the browser", ); }; }, {}, ], 298: [ function (t, e, r) { "use strict"; var n; var i = t("../../../errors").codes, a = i.ERR_MISSING_ARGS, o = i.ERR_STREAM_DESTROYED; function s(t) { if (t) throw t; } function l(e, r, i, a) { a = (function (t) { var e = !1; return function () { e || ((e = !0), t.apply(void 0, arguments)); }; })(a); var s = !1; e.on("close", function () { s = !0; }), void 0 === n && (n = t("./end-of-stream")), n(e, { readable: r, writable: i }, function (t) { if (t) return a(t); (s = !0), a(); }); var l = !1; return function (t) { if (!s && !l) return ( (l = !0), (function (t) { return t.setHeader && "function" == typeof t.abort; })(e) ? e.abort() : "function" == typeof e.destroy ? e.destroy() : void a(t || new o("pipe")) ); }; } function c(t) { t(); } function u(t, e) { return t.pipe(e); } function f(t) { return t.length ? "function" != typeof t[t.length - 1] ? s : t.pop() : s; } e.exports = function () { for ( var t = arguments.length, e = new Array(t), r = 0; r < t; r++ ) e[r] = arguments[r]; var n, i = f(e); if ((Array.isArray(e[0]) && (e = e[0]), e.length < 2)) throw new a("streams"); var o = e.map(function (t, r) { var a = r < e.length - 1; return l(t, a, r > 0, function (t) { n || (n = t), t && o.forEach(c), a || (o.forEach(c), i(n)); }); }); return e.reduce(u); }; }, { "../../../errors": 287, "./end-of-stream": 296 }, ], 299: [ function (t, e, r) { "use strict"; var n = t("../../../errors").codes.ERR_INVALID_OPT_VALUE; e.exports = { getHighWaterMark: function (t, e, r, i) { var a = (function (t, e, r) { return null != t.highWaterMark ? t.highWaterMark : e ? t[r] : null; })(e, i, r); if (null != a) { if (!isFinite(a) || Math.floor(a) !== a || a < 0) throw new n(i ? r : "highWaterMark", a); return Math.floor(a); } return t.objectMode ? 16 : 16384; }, }; }, { "../../../errors": 287 }, ], 300: [ function (t, e, r) { e.exports = t("events").EventEmitter; }, { events: 84 }, ], 301: [ function (t, e, r) { "use strict"; var n = t("safe-buffer").Buffer, i = n.isEncoding || function (t) { switch ((t = "" + t) && t.toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": case "raw": return !0; default: return !1; } }; function a(t) { var e; switch ( ((this.encoding = (function (t) { var e = (function (t) { if (!t) return "utf8"; for (var e; ; ) switch (t) { case "utf8": case "utf-8": return "utf8"; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return "utf16le"; case "latin1": case "binary": return "latin1"; case "base64": case "ascii": case "hex": return t; default: if (e) return; (t = ("" + t).toLowerCase()), (e = !0); } })(t); if ( "string" != typeof e && (n.isEncoding === i || !i(t)) ) throw new Error("Unknown encoding: " + t); return e || t; })(t)), this.encoding) ) { case "utf16le": (this.text = l), (this.end = c), (e = 4); break; case "utf8": (this.fillLast = s), (e = 4); break; case "base64": (this.text = u), (this.end = f), (e = 3); break; default: return (this.write = h), void (this.end = p); } (this.lastNeed = 0), (this.lastTotal = 0), (this.lastChar = n.allocUnsafe(e)); } function o(t) { return t <= 127 ? 0 : t >> 5 == 6 ? 2 : t >> 4 == 14 ? 3 : t >> 3 == 30 ? 4 : t >> 6 == 2 ? -1 : -2; } function s(t) { var e = this.lastTotal - this.lastNeed, r = (function (t, e, r) { if (128 != (192 & e[0])) return (t.lastNeed = 0), "\ufffd"; if (t.lastNeed > 1 && e.length > 1) { if (128 != (192 & e[1])) return (t.lastNeed = 1), "\ufffd"; if ( t.lastNeed > 2 && e.length > 2 && 128 != (192 & e[2]) ) return (t.lastNeed = 2), "\ufffd"; } })(this, t); return void 0 !== r ? r : this.lastNeed <= t.length ? (t.copy(this.lastChar, e, 0, this.lastNeed), this.lastChar.toString( this.encoding, 0, this.lastTotal, )) : (t.copy(this.lastChar, e, 0, t.length), void (this.lastNeed -= t.length)); } function l(t, e) { if ((t.length - e) % 2 == 0) { var r = t.toString("utf16le", e); if (r) { var n = r.charCodeAt(r.length - 1); if (n >= 55296 && n <= 56319) return ( (this.lastNeed = 2), (this.lastTotal = 4), (this.lastChar[0] = t[t.length - 2]), (this.lastChar[1] = t[t.length - 1]), r.slice(0, -1) ); } return r; } return ( (this.lastNeed = 1), (this.lastTotal = 2), (this.lastChar[0] = t[t.length - 1]), t.toString("utf16le", e, t.length - 1) ); } function c(t) { var e = t && t.length ? this.write(t) : ""; if (this.lastNeed) { var r = this.lastTotal - this.lastNeed; return e + this.lastChar.toString("utf16le", 0, r); } return e; } function u(t, e) { var r = (t.length - e) % 3; return 0 === r ? t.toString("base64", e) : ((this.lastNeed = 3 - r), (this.lastTotal = 3), 1 === r ? (this.lastChar[0] = t[t.length - 1]) : ((this.lastChar[0] = t[t.length - 2]), (this.lastChar[1] = t[t.length - 1])), t.toString("base64", e, t.length - r)); } function f(t) { var e = t && t.length ? this.write(t) : ""; return this.lastNeed ? e + this.lastChar.toString("base64", 0, 3 - this.lastNeed) : e; } function h(t) { return t.toString(this.encoding); } function p(t) { return t && t.length ? this.write(t) : ""; } (r.StringDecoder = a), (a.prototype.write = function (t) { if (0 === t.length) return ""; var e, r; if (this.lastNeed) { if (void 0 === (e = this.fillLast(t))) return ""; (r = this.lastNeed), (this.lastNeed = 0); } else r = 0; return r < t.length ? e ? e + this.text(t, r) : this.text(t, r) : e || ""; }), (a.prototype.end = function (t) { var e = t && t.length ? this.write(t) : ""; return this.lastNeed ? e + "\ufffd" : e; }), (a.prototype.text = function (t, e) { var r = (function (t, e, r) { var n = e.length - 1; if (n < r) return 0; var i = o(e[n]); if (i >= 0) return i > 0 && (t.lastNeed = i - 1), i; if (--n < r || -2 === i) return 0; if ((i = o(e[n])) >= 0) return i > 0 && (t.lastNeed = i - 2), i; if (--n < r || -2 === i) return 0; if ((i = o(e[n])) >= 0) return ( i > 0 && (2 === i ? (i = 0) : (t.lastNeed = i - 3)), i ); return 0; })(this, t, e); if (!this.lastNeed) return t.toString("utf8", e); this.lastTotal = r; var n = t.length - (r - this.lastNeed); return ( t.copy(this.lastChar, 0, n), t.toString("utf8", e, n) ); }), (a.prototype.fillLast = function (t) { if (this.lastNeed <= t.length) return ( t.copy( this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed, ), this.lastChar.toString( this.encoding, 0, this.lastTotal, ) ); t.copy( this.lastChar, this.lastTotal - this.lastNeed, 0, t.length, ), (this.lastNeed -= t.length); }); }, { "safe-buffer": 285 }, ], 302: [ function (t, e, r) { (function (r, n) { (function () { var r = t("assert"), i = t("debug")("stream-parser"); e.exports = function (t) { var e = t && "function" == typeof t._transform, r = t && "function" == typeof t._write; if (!e && !r) throw new Error( "must pass a Writable or Transform stream in", ); i("extending Parser into stream"), (t._bytes = o), (t._skipBytes = s), e && (t._passthrough = l); e ? (t._transform = u) : (t._write = c); }; function a(t) { i("initializing parser stream"), (t._parserBytesLeft = 0), (t._parserBuffers = []), (t._parserBuffered = 0), (t._parserState = -1), (t._parserCallback = null), "function" == typeof t.push && (t._parserOutput = t.push.bind(t)), (t._parserInit = !0); } function o(t, e) { r( !this._parserCallback, 'there is already a "callback" set!', ), r( isFinite(t) && t > 0, 'can only buffer a finite number of bytes > 0, got "' + t + '"', ), this._parserInit || a(this), i("buffering %o bytes", t), (this._parserBytesLeft = t), (this._parserCallback = e), (this._parserState = 0); } function s(t, e) { r( !this._parserCallback, 'there is already a "callback" set!', ), r(t > 0, 'can only skip > 0 bytes, got "' + t + '"'), this._parserInit || a(this), i("skipping %o bytes", t), (this._parserBytesLeft = t), (this._parserCallback = e), (this._parserState = 1); } function l(t, e) { r( !this._parserCallback, 'There is already a "callback" set!', ), r( t > 0, 'can only pass through > 0 bytes, got "' + t + '"', ), this._parserInit || a(this), i("passing through %o bytes", t), (this._parserBytesLeft = t), (this._parserCallback = e), (this._parserState = 2); } function c(t, e, r) { this._parserInit || a(this), i("write(%o bytes)", t.length), "function" == typeof e && (r = e), h(this, t, null, r); } function u(t, e, r) { this._parserInit || a(this), i("transform(%o bytes)", t.length), "function" != typeof e && (e = this._parserOutput), h(this, t, e, r); } function f(t, e, r, a) { if ( ((t._parserBytesLeft -= e.length), i( "%o bytes left for stream piece", t._parserBytesLeft, ), 0 === t._parserState ? (t._parserBuffers.push(e), (t._parserBuffered += e.length)) : 2 === t._parserState && r(e), 0 !== t._parserBytesLeft) ) return a; var o = t._parserCallback; if ( (o && 0 === t._parserState && t._parserBuffers.length > 1 && (e = n.concat(t._parserBuffers, t._parserBuffered)), 0 !== t._parserState && (e = null), (t._parserCallback = null), (t._parserBuffered = 0), (t._parserState = -1), t._parserBuffers.splice(0), o) ) { var s = []; e && s.push(e), r && s.push(r); var l = o.length > s.length; l && s.push(p(a)); var c = o.apply(t, s); if (!l || a === c) return a; } } var h = p(function t(e, r, n, i) { return e._parserBytesLeft <= 0 ? i( new Error( "got data but not currently parsing anything", ), ) : r.length <= e._parserBytesLeft ? function () { return f(e, r, n, i); } : function () { var a = r.slice(0, e._parserBytesLeft); return f(e, a, n, function (o) { return o ? i(o) : r.length > a.length ? function () { return t(e, r.slice(a.length), n, i); } : void 0; }); }; }); function p(t) { return function () { for ( var e = t.apply(this, arguments); "function" == typeof e; ) e = e(); return e; }; } }).call(this); }).call(this, t("_process"), t("buffer").Buffer); }, { _process: 278, assert: 75, buffer: 85, debug: 303 }, ], 303: [ function (t, e, r) { (function (n) { (function () { function i() { var t; try { t = r.storage.debug; } catch (t) {} return ( !t && void 0 !== n && "env" in n && (t = n.env.DEBUG), t ); } ((r = e.exports = t("./debug")).log = function () { return ( "object" == typeof console && console.log && Function.prototype.apply.call( console.log, console, arguments, ) ); }), (r.formatArgs = function (t) { var e = this.useColors; if ( ((t[0] = (e ? "%c" : "") + this.namespace + (e ? " %c" : " ") + t[0] + (e ? "%c " : " ") + "+" + r.humanize(this.diff)), !e) ) return; var n = "color: " + this.color; t.splice(1, 0, n, "color: inherit"); var i = 0, a = 0; t[0].replace(/%[a-zA-Z%]/g, function (t) { "%%" !== t && (i++, "%c" === t && (a = i)); }), t.splice(a, 0, n); }), (r.save = function (t) { try { null == t ? r.storage.removeItem("debug") : (r.storage.debug = t); } catch (t) {} }), (r.load = i), (r.useColors = function () { if ( "undefined" != typeof window && window.process && "renderer" === window.process.type ) return !0; return ( ("undefined" != typeof document && document.documentElement && document.documentElement.style && document.documentElement.style .WebkitAppearance) || ("undefined" != typeof window && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || ("undefined" != typeof navigator && navigator.userAgent && navigator.userAgent .toLowerCase() .match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || ("undefined" != typeof navigator && navigator.userAgent && navigator.userAgent .toLowerCase() .match(/applewebkit\/(\d+)/)) ); }), (r.storage = "undefined" != typeof chrome && void 0 !== chrome.storage ? chrome.storage.local : (function () { try { return window.localStorage; } catch (t) {} })()), (r.colors = [ "lightseagreen", "forestgreen", "goldenrod", "dodgerblue", "darkorchid", "crimson", ]), (r.formatters.j = function (t) { try { return JSON.stringify(t); } catch (t) { return "[UnexpectedJSONParseError]: " + t.message; } }), r.enable(i()); }).call(this); }).call(this, t("_process")); }, { "./debug": 304, _process: 278 }, ], 304: [ function (t, e, r) { var n; function i(t) { function e() { if (e.enabled) { var t = e, i = +new Date(), a = i - (n || i); (t.diff = a), (t.prev = n), (t.curr = i), (n = i); for ( var o = new Array(arguments.length), s = 0; s < o.length; s++ ) o[s] = arguments[s]; (o[0] = r.coerce(o[0])), "string" != typeof o[0] && o.unshift("%O"); var l = 0; (o[0] = o[0].replace(/%([a-zA-Z%])/g, function (e, n) { if ("%%" === e) return e; l++; var i = r.formatters[n]; if ("function" == typeof i) { var a = o[l]; (e = i.call(t, a)), o.splice(l, 1), l--; } return e; })), r.formatArgs.call(t, o); var c = e.log || r.log || console.log.bind(console); c.apply(t, o); } } return ( (e.namespace = t), (e.enabled = r.enabled(t)), (e.useColors = r.useColors()), (e.color = (function (t) { var e, n = 0; for (e in t) (n = (n << 5) - n + t.charCodeAt(e)), (n |= 0); return r.colors[Math.abs(n) % r.colors.length]; })(t)), "function" == typeof r.init && r.init(e), e ); } ((r = e.exports = i.debug = i.default = i).coerce = function ( t, ) { return t instanceof Error ? t.stack || t.message : t; }), (r.disable = function () { r.enable(""); }), (r.enable = function (t) { r.save(t), (r.names = []), (r.skips = []); for ( var e = ("string" == typeof t ? t : "").split(/[\s,]+/), n = e.length, i = 0; i < n; i++ ) e[i] && ("-" === (t = e[i].replace(/\*/g, ".*?"))[0] ? r.skips.push(new RegExp("^" + t.substr(1) + "$")) : r.names.push(new RegExp("^" + t + "$"))); }), (r.enabled = function (t) { var e, n; for (e = 0, n = r.skips.length; e < n; e++) if (r.skips[e].test(t)) return !1; for (e = 0, n = r.names.length; e < n; e++) if (r.names[e].test(t)) return !0; return !1; }), (r.humanize = t("ms")), (r.names = []), (r.skips = []), (r.formatters = {}); }, { ms: 305 }, ], 305: [ function (t, e, r) { var n = 1e3, i = 6e4, a = 60 * i, o = 24 * a; function s(t, e, r) { if (!(t < e)) return t < 1.5 * e ? Math.floor(t / e) + " " + r : Math.ceil(t / e) + " " + r + "s"; } e.exports = function (t, e) { e = e || {}; var r, l = typeof t; if ("string" === l && t.length > 0) return (function (t) { if ((t = String(t)).length > 100) return; var e = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( t, ); if (!e) return; var r = parseFloat(e[1]); switch ((e[2] || "ms").toLowerCase()) { case "years": case "year": case "yrs": case "yr": case "y": return 315576e5 * r; case "days": case "day": case "d": return r * o; case "hours": case "hour": case "hrs": case "hr": case "h": return r * a; case "minutes": case "minute": case "mins": case "min": case "m": return r * i; case "seconds": case "second": case "secs": case "sec": case "s": return r * n; case "milliseconds": case "millisecond": case "msecs": case "msec": case "ms": return r; default: return; } })(t); if ("number" === l && !1 === isNaN(t)) return e.long ? s((r = t), o, "day") || s(r, a, "hour") || s(r, i, "minute") || s(r, n, "second") || r + " ms" : (function (t) { if (t >= o) return Math.round(t / o) + "d"; if (t >= a) return Math.round(t / a) + "h"; if (t >= i) return Math.round(t / i) + "m"; if (t >= n) return Math.round(t / n) + "s"; return t + "ms"; })(t); throw new Error( "val is not a non-empty string or a valid number. val=" + JSON.stringify(t), ); }; }, {}, ], 306: [ function (t, e, r) { "use strict"; var n = t("parenthesis"); e.exports = function (t, e, r) { if (null == t) throw Error("First argument should be a string"); if (null == e) throw Error("Separator should be a string or a RegExp"); r ? ("string" == typeof r || Array.isArray(r)) && (r = { ignore: r }) : (r = {}), null == r.escape && (r.escape = !0), null == r.ignore ? (r.ignore = [ "[]", "()", "{}", "<>", '""', "''", "``", "\u201c\u201d", "\xab\xbb", ]) : ("string" == typeof r.ignore && (r.ignore = [r.ignore]), (r.ignore = r.ignore.map(function (t) { return 1 === t.length && (t += t), t; }))); var i = n.parse(t, { flat: !0, brackets: r.ignore }), a = i[0].split(e); if (r.escape) { for (var o = [], s = 0; s < a.length; s++) { var l = a[s], c = a[s + 1]; "\\" === l[l.length - 1] && "\\" !== l[l.length - 2] ? (o.push(l + e + c), s++) : o.push(l); } a = o; } for (s = 0; s < a.length; s++) (i[0] = a[s]), (a[s] = n.stringify(i, { flat: !0 })); return a; }; }, { parenthesis: 248 }, ], 307: [ function (t, e, r) { "use strict"; e.exports = function (t) { for ( var e = t.length, r = new Array(e), n = new Array(e), i = new Array(e), a = new Array(e), o = new Array(e), s = new Array(e), l = 0; l < e; ++l ) (r[l] = -1), (n[l] = 0), (i[l] = !1), (a[l] = 0), (o[l] = -1), (s[l] = []); var c, u = 0, f = [], h = []; function p(e) { var l = [e], c = [e]; for (r[e] = n[e] = u, i[e] = !0, u += 1; c.length > 0; ) { e = c[c.length - 1]; var p = t[e]; if (a[e] < p.length) { for (var d = a[e]; d < p.length; ++d) { var m = p[d]; if (r[m] < 0) { (r[m] = n[m] = u), (i[m] = !0), (u += 1), l.push(m), c.push(m); break; } i[m] && (n[e] = 0 | Math.min(n[e], n[m])), o[m] >= 0 && s[e].push(o[m]); } a[e] = d; } else { if (n[e] === r[e]) { var g = [], v = [], y = 0; for (d = l.length - 1; d >= 0; --d) { var x = l[d]; if ( ((i[x] = !1), g.push(x), v.push(s[x]), (y += s[x].length), (o[x] = f.length), x === e) ) { l.length = d; break; } } f.push(g); var b = new Array(y); for (d = 0; d < v.length; d++) for (var _ = 0; _ < v[d].length; _++) b[--y] = v[d][_]; h.push(b); } c.pop(); } } } for (l = 0; l < e; ++l) r[l] < 0 && p(l); for (l = 0; l < h.length; l++) { var d = h[l]; if (0 !== d.length) { d.sort(function (t, e) { return t - e; }), (c = [d[0]]); for (var m = 1; m < d.length; m++) d[m] !== d[m - 1] && c.push(d[m]); h[l] = c; } } return { components: f, adjacencyList: h }; }; }, {}, ], 308: [ function (t, e, r) { "use strict"; Object.defineProperty(r, "__esModule", { value: !0 }); var n = function (t, e) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return (function (t, e) { var r = [], n = !0, i = !1, a = void 0; try { for ( var o, s = t[Symbol.iterator](); !(n = (o = s.next()).done) && (r.push(o.value), !e || r.length !== e); n = !0 ); } catch (t) { (i = !0), (a = t); } finally { try { !n && s.return && s.return(); } finally { if (i) throw a; } } return r; })(t, e); throw new TypeError( "Invalid attempt to destructure non-iterable instance", ); }, i = 2 * Math.PI, a = function (t, e, r, n, i, a, o) { var s = t.x, l = t.y; return { x: n * (s *= e) - i * (l *= r) + a, y: i * s + n * l + o, }; }, o = function (t, e) { var r = 1.5707963267948966 === e ? 0.551915024494 : -1.5707963267948966 === e ? -0.551915024494 : (4 / 3) * Math.tan(e / 4), n = Math.cos(t), i = Math.sin(t), a = Math.cos(t + e), o = Math.sin(t + e); return [ { x: n - i * r, y: i + n * r }, { x: a + o * r, y: o - a * r }, { x: a, y: o }, ]; }, s = function (t, e, r, n) { var i = t * r + e * n; return ( i > 1 && (i = 1), i < -1 && (i = -1), (t * n - e * r < 0 ? -1 : 1) * Math.acos(i) ); }; (r.default = function (t) { var e = t.px, r = t.py, l = t.cx, c = t.cy, u = t.rx, f = t.ry, h = t.xAxisRotation, p = void 0 === h ? 0 : h, d = t.largeArcFlag, m = void 0 === d ? 0 : d, g = t.sweepFlag, v = void 0 === g ? 0 : g, y = []; if (0 === u || 0 === f) return []; var x = Math.sin((p * i) / 360), b = Math.cos((p * i) / 360), _ = (b * (e - l)) / 2 + (x * (r - c)) / 2, w = (-x * (e - l)) / 2 + (b * (r - c)) / 2; if (0 === _ && 0 === w) return []; (u = Math.abs(u)), (f = Math.abs(f)); var T = Math.pow(_, 2) / Math.pow(u, 2) + Math.pow(w, 2) / Math.pow(f, 2); T > 1 && ((u *= Math.sqrt(T)), (f *= Math.sqrt(T))); var k = (function (t, e, r, n, a, o, l, c, u, f, h, p) { var d = Math.pow(a, 2), m = Math.pow(o, 2), g = Math.pow(h, 2), v = Math.pow(p, 2), y = d * m - d * v - m * g; y < 0 && (y = 0), (y /= d * v + m * g); var x = (((y = Math.sqrt(y) * (l === c ? -1 : 1)) * a) / o) * p, b = ((y * -o) / a) * h, _ = f * x - u * b + (t + r) / 2, w = u * x + f * b + (e + n) / 2, T = (h - x) / a, k = (p - b) / o, A = (-h - x) / a, M = (-p - b) / o, S = s(1, 0, T, k), E = s(T, k, A, M); return ( 0 === c && E > 0 && (E -= i), 1 === c && E < 0 && (E += i), [_, w, S, E] ); })(e, r, l, c, u, f, m, v, x, b, _, w), A = n(k, 4), M = A[0], S = A[1], E = A[2], L = A[3], C = Math.abs(L) / (i / 4); Math.abs(1 - C) < 1e-7 && (C = 1); var P = Math.max(Math.ceil(C), 1); L /= P; for (var I = 0; I < P; I++) y.push(o(E, L)), (E += L); return y.map(function (t) { var e = a(t[0], u, f, b, x, M, S), r = e.x, n = e.y, i = a(t[1], u, f, b, x, M, S), o = i.x, s = i.y, l = a(t[2], u, f, b, x, M, S); return { x1: r, y1: n, x2: o, y2: s, x: l.x, y: l.y }; }); }), (e.exports = r.default); }, {}, ], 309: [ function (t, e, r) { "use strict"; var n = t("parse-svg-path"), i = t("abs-svg-path"), a = t("normalize-svg-path"), o = t("is-svg-path"), s = t("assert"); e.exports = function (t) { Array.isArray(t) && 1 === t.length && "string" == typeof t[0] && (t = t[0]); "string" == typeof t && (s(o(t), "String is not an SVG path."), (t = n(t))); if ( (s( Array.isArray(t), "Argument should be a string or an array of path segments.", ), (t = i(t)), !(t = a(t)).length) ) return [0, 0, 0, 0]; for ( var e = [1 / 0, 1 / 0, -1 / 0, -1 / 0], r = 0, l = t.length; r < l; r++ ) for (var c = t[r].slice(1), u = 0; u < c.length; u += 2) c[u + 0] < e[0] && (e[0] = c[u + 0]), c[u + 1] < e[1] && (e[1] = c[u + 1]), c[u + 0] > e[2] && (e[2] = c[u + 0]), c[u + 1] > e[3] && (e[3] = c[u + 1]); return e; }; }, { "abs-svg-path": 70, assert: 75, "is-svg-path": 238, "normalize-svg-path": 310, "parse-svg-path": 250, }, ], 310: [ function (t, e, r) { "use strict"; e.exports = function (t) { for ( var e, r = [], o = 0, s = 0, l = 0, c = 0, u = null, f = null, h = 0, p = 0, d = 0, m = t.length; d < m; d++ ) { var g = t[d], v = g[0]; switch (v) { case "M": (l = g[1]), (c = g[2]); break; case "A": var y = n({ px: h, py: p, cx: g[6], cy: g[7], rx: g[1], ry: g[2], xAxisRotation: g[3], largeArcFlag: g[4], sweepFlag: g[5], }); if (!y.length) continue; for (var x, b = 0; b < y.length; b++) (x = y[b]), (g = ["C", x.x1, x.y1, x.x2, x.y2, x.x, x.y]), b < y.length - 1 && r.push(g); break; case "S": var _ = h, w = p; ("C" != e && "S" != e) || ((_ += _ - o), (w += w - s)), (g = ["C", _, w, g[1], g[2], g[3], g[4]]); break; case "T": "Q" == e || "T" == e ? ((u = 2 * h - u), (f = 2 * p - f)) : ((u = h), (f = p)), (g = a(h, p, u, f, g[1], g[2])); break; case "Q": (u = g[1]), (f = g[2]), (g = a(h, p, g[1], g[2], g[3], g[4])); break; case "L": g = i(h, p, g[1], g[2]); break; case "H": g = i(h, p, g[1], p); break; case "V": g = i(h, p, h, g[1]); break; case "Z": g = i(h, p, l, c); } (e = v), (h = g[g.length - 2]), (p = g[g.length - 1]), g.length > 4 ? ((o = g[g.length - 4]), (s = g[g.length - 3])) : ((o = h), (s = p)), r.push(g); } return r; }; var n = t("svg-arc-to-cubic-bezier"); function i(t, e, r, n) { return ["C", t, e, r, n, r, n]; } function a(t, e, r, n, i, a) { return [ "C", t / 3 + (2 / 3) * r, e / 3 + (2 / 3) * n, i / 3 + (2 / 3) * r, a / 3 + (2 / 3) * n, i, a, ]; } }, { "svg-arc-to-cubic-bezier": 308 }, ], 311: [ function (t, e, r) { "use strict"; var n, i = t("svg-path-bounds"), a = t("parse-svg-path"), o = t("draw-svg-path"), s = t("is-svg-path"), l = t("bitmap-sdf"), c = document.createElement("canvas"), u = c.getContext("2d"); e.exports = function (t, e) { if (!s(t)) throw Error("Argument should be valid svg path string"); e || (e = {}); var r, f; e.shape ? ((r = e.shape[0]), (f = e.shape[1])) : ((r = c.width = e.w || e.width || 200), (f = c.height = e.h || e.height || 200)); var h = Math.min(r, f), p = e.stroke || 0, d = e.viewbox || e.viewBox || i(t), m = [r / (d[2] - d[0]), f / (d[3] - d[1])], g = Math.min(m[0] || 0, m[1] || 0) / 2; (u.fillStyle = "black"), u.fillRect(0, 0, r, f), (u.fillStyle = "white"), p && ("number" != typeof p && (p = 1), (u.strokeStyle = p > 0 ? "white" : "black"), (u.lineWidth = Math.abs(p))); if ( (u.translate(0.5 * r, 0.5 * f), u.scale(g, g), (function () { if (null != n) return n; var t = document .createElement("canvas") .getContext("2d"); if ( ((t.canvas.width = t.canvas.height = 1), !window.Path2D) ) return (n = !1); var e = new Path2D("M0,0h1v1h-1v-1Z"); (t.fillStyle = "black"), t.fill(e); var r = t.getImageData(0, 0, 1, 1); return (n = r && r.data && 255 === r.data[3]); })()) ) { var v = new Path2D(t); u.fill(v), p && u.stroke(v); } else { var y = a(t); o(u, y), u.fill(), p && u.stroke(); } return ( u.setTransform(1, 0, 0, 1, 0, 0), l(u, { cutoff: null != e.cutoff ? e.cutoff : 0.5, radius: null != e.radius ? e.radius : 0.5 * h, }) ); }; }, { "bitmap-sdf": 82, "draw-svg-path": 126, "is-svg-path": 238, "parse-svg-path": 250, "svg-path-bounds": 309, }, ], 312: [ function (t, e, r) { (function (e, n) { (function () { var i = t("process/browser.js").nextTick, a = Function.prototype.apply, o = Array.prototype.slice, s = {}, l = 0; function c(t, e) { (this._id = t), (this._clearFn = e); } (r.setTimeout = function () { return new c( a.call(setTimeout, window, arguments), clearTimeout, ); }), (r.setInterval = function () { return new c( a.call(setInterval, window, arguments), clearInterval, ); }), (r.clearTimeout = r.clearInterval = function (t) { t.close(); }), (c.prototype.unref = c.prototype.ref = function () {}), (c.prototype.close = function () { this._clearFn.call(window, this._id); }), (r.enroll = function (t, e) { clearTimeout(t._idleTimeoutId), (t._idleTimeout = e); }), (r.unenroll = function (t) { clearTimeout(t._idleTimeoutId), (t._idleTimeout = -1); }), (r._unrefActive = r.active = function (t) { clearTimeout(t._idleTimeoutId); var e = t._idleTimeout; e >= 0 && (t._idleTimeoutId = setTimeout(function () { t._onTimeout && t._onTimeout(); }, e)); }), (r.setImmediate = "function" == typeof e ? e : function (t) { var e = l++, n = !(arguments.length < 2) && o.call(arguments, 1); return ( (s[e] = !0), i(function () { s[e] && (n ? t.apply(null, n) : t.call(null), r.clearImmediate(e)); }), e ); }), (r.clearImmediate = "function" == typeof n ? n : function (t) { delete s[t]; }); }).call(this); }).call( this, t("timers").setImmediate, t("timers").clearImmediate, ); }, { "process/browser.js": 278, timers: 312 }, ], 313: [ function (t, e, r) { !(function (t) { var r = /^\s+/, n = /\s+$/, i = 0, a = t.round, o = t.min, s = t.max, l = t.random; function c(e, l) { if (((l = l || {}), (e = e || "") instanceof c)) return e; if (!(this instanceof c)) return new c(e, l); var u = (function (e) { var i = { r: 0, g: 0, b: 0 }, a = 1, l = null, c = null, u = null, f = !1, h = !1; "string" == typeof e && (e = (function (t) { t = t.replace(r, "").replace(n, "").toLowerCase(); var e, i = !1; if (S[t]) (t = S[t]), (i = !0); else if ("transparent" == t) return { r: 0, g: 0, b: 0, a: 0, format: "name" }; if ((e = j.rgb.exec(t))) return { r: e[1], g: e[2], b: e[3] }; if ((e = j.rgba.exec(t))) return { r: e[1], g: e[2], b: e[3], a: e[4] }; if ((e = j.hsl.exec(t))) return { h: e[1], s: e[2], l: e[3] }; if ((e = j.hsla.exec(t))) return { h: e[1], s: e[2], l: e[3], a: e[4] }; if ((e = j.hsv.exec(t))) return { h: e[1], s: e[2], v: e[3] }; if ((e = j.hsva.exec(t))) return { h: e[1], s: e[2], v: e[3], a: e[4] }; if ((e = j.hex8.exec(t))) return { r: I(e[1]), g: I(e[2]), b: I(e[3]), a: R(e[4]), format: i ? "name" : "hex8", }; if ((e = j.hex6.exec(t))) return { r: I(e[1]), g: I(e[2]), b: I(e[3]), format: i ? "name" : "hex", }; if ((e = j.hex4.exec(t))) return { r: I(e[1] + "" + e[1]), g: I(e[2] + "" + e[2]), b: I(e[3] + "" + e[3]), a: R(e[4] + "" + e[4]), format: i ? "name" : "hex8", }; if ((e = j.hex3.exec(t))) return { r: I(e[1] + "" + e[1]), g: I(e[2] + "" + e[2]), b: I(e[3] + "" + e[3]), format: i ? "name" : "hex", }; return !1; })(e)); "object" == typeof e && (U(e.r) && U(e.g) && U(e.b) ? ((p = e.r), (d = e.g), (m = e.b), (i = { r: 255 * C(p, 255), g: 255 * C(d, 255), b: 255 * C(m, 255), }), (f = !0), (h = "%" === String(e.r).substr(-1) ? "prgb" : "rgb")) : U(e.h) && U(e.s) && U(e.v) ? ((l = z(e.s)), (c = z(e.v)), (i = (function (e, r, n) { (e = 6 * C(e, 360)), (r = C(r, 100)), (n = C(n, 100)); var i = t.floor(e), a = e - i, o = n * (1 - r), s = n * (1 - a * r), l = n * (1 - (1 - a) * r), c = i % 6; return { r: 255 * [n, s, o, o, l, n][c], g: 255 * [l, n, n, s, o, o][c], b: 255 * [o, o, l, n, n, s][c], }; })(e.h, l, c)), (f = !0), (h = "hsv")) : U(e.h) && U(e.s) && U(e.l) && ((l = z(e.s)), (u = z(e.l)), (i = (function (t, e, r) { var n, i, a; function o(t, e, r) { return ( r < 0 && (r += 1), r > 1 && (r -= 1), r < 1 / 6 ? t + 6 * (e - t) * r : r < 0.5 ? e : r < 2 / 3 ? t + (e - t) * (2 / 3 - r) * 6 : t ); } if ( ((t = C(t, 360)), (e = C(e, 100)), (r = C(r, 100)), 0 === e) ) n = i = a = r; else { var s = r < 0.5 ? r * (1 + e) : r + e - r * e, l = 2 * r - s; (n = o(l, s, t + 1 / 3)), (i = o(l, s, t)), (a = o(l, s, t - 1 / 3)); } return { r: 255 * n, g: 255 * i, b: 255 * a }; })(e.h, l, u)), (f = !0), (h = "hsl")), e.hasOwnProperty("a") && (a = e.a)); var p, d, m; return ( (a = L(a)), { ok: f, format: e.format || h, r: o(255, s(i.r, 0)), g: o(255, s(i.g, 0)), b: o(255, s(i.b, 0)), a: a, } ); })(e); (this._originalInput = e), (this._r = u.r), (this._g = u.g), (this._b = u.b), (this._a = u.a), (this._roundA = a(100 * this._a) / 100), (this._format = l.format || u.format), (this._gradientType = l.gradientType), this._r < 1 && (this._r = a(this._r)), this._g < 1 && (this._g = a(this._g)), this._b < 1 && (this._b = a(this._b)), (this._ok = u.ok), (this._tc_id = i++); } function u(t, e, r) { (t = C(t, 255)), (e = C(e, 255)), (r = C(r, 255)); var n, i, a = s(t, e, r), l = o(t, e, r), c = (a + l) / 2; if (a == l) n = i = 0; else { var u = a - l; switch ( ((i = c > 0.5 ? u / (2 - a - l) : u / (a + l)), a) ) { case t: n = (e - r) / u + (e < r ? 6 : 0); break; case e: n = (r - t) / u + 2; break; case r: n = (t - e) / u + 4; } n /= 6; } return { h: n, s: i, l: c }; } function f(t, e, r) { (t = C(t, 255)), (e = C(e, 255)), (r = C(r, 255)); var n, i, a = s(t, e, r), l = o(t, e, r), c = a, u = a - l; if (((i = 0 === a ? 0 : u / a), a == l)) n = 0; else { switch (a) { case t: n = (e - r) / u + (e < r ? 6 : 0); break; case e: n = (r - t) / u + 2; break; case r: n = (t - e) / u + 4; } n /= 6; } return { h: n, s: i, v: c }; } function h(t, e, r, n) { var i = [ O(a(t).toString(16)), O(a(e).toString(16)), O(a(r).toString(16)), ]; return n && i[0].charAt(0) == i[0].charAt(1) && i[1].charAt(0) == i[1].charAt(1) && i[2].charAt(0) == i[2].charAt(1) ? i[0].charAt(0) + i[1].charAt(0) + i[2].charAt(0) : i.join(""); } function p(t, e, r, n) { return [ O(D(n)), O(a(t).toString(16)), O(a(e).toString(16)), O(a(r).toString(16)), ].join(""); } function d(t, e) { e = 0 === e ? 0 : e || 10; var r = c(t).toHsl(); return (r.s -= e / 100), (r.s = P(r.s)), c(r); } function m(t, e) { e = 0 === e ? 0 : e || 10; var r = c(t).toHsl(); return (r.s += e / 100), (r.s = P(r.s)), c(r); } function g(t) { return c(t).desaturate(100); } function v(t, e) { e = 0 === e ? 0 : e || 10; var r = c(t).toHsl(); return (r.l += e / 100), (r.l = P(r.l)), c(r); } function y(t, e) { e = 0 === e ? 0 : e || 10; var r = c(t).toRgb(); return ( (r.r = s(0, o(255, r.r - a((-e / 100) * 255)))), (r.g = s(0, o(255, r.g - a((-e / 100) * 255)))), (r.b = s(0, o(255, r.b - a((-e / 100) * 255)))), c(r) ); } function x(t, e) { e = 0 === e ? 0 : e || 10; var r = c(t).toHsl(); return (r.l -= e / 100), (r.l = P(r.l)), c(r); } function b(t, e) { var r = c(t).toHsl(), n = (r.h + e) % 360; return (r.h = n < 0 ? 360 + n : n), c(r); } function _(t) { var e = c(t).toHsl(); return (e.h = (e.h + 180) % 360), c(e); } function w(t) { var e = c(t).toHsl(), r = e.h; return [ c(t), c({ h: (r + 120) % 360, s: e.s, l: e.l }), c({ h: (r + 240) % 360, s: e.s, l: e.l }), ]; } function T(t) { var e = c(t).toHsl(), r = e.h; return [ c(t), c({ h: (r + 90) % 360, s: e.s, l: e.l }), c({ h: (r + 180) % 360, s: e.s, l: e.l }), c({ h: (r + 270) % 360, s: e.s, l: e.l }), ]; } function k(t) { var e = c(t).toHsl(), r = e.h; return [ c(t), c({ h: (r + 72) % 360, s: e.s, l: e.l }), c({ h: (r + 216) % 360, s: e.s, l: e.l }), ]; } function A(t, e, r) { (e = e || 6), (r = r || 30); var n = c(t).toHsl(), i = 360 / r, a = [c(t)]; for (n.h = (n.h - ((i * e) >> 1) + 720) % 360; --e; ) (n.h = (n.h + i) % 360), a.push(c(n)); return a; } function M(t, e) { e = e || 6; for ( var r = c(t).toHsv(), n = r.h, i = r.s, a = r.v, o = [], s = 1 / e; e--; ) o.push(c({ h: n, s: i, v: a })), (a = (a + s) % 1); return o; } (c.prototype = { isDark: function () { return this.getBrightness() < 128; }, isLight: function () { return !this.isDark(); }, isValid: function () { return this._ok; }, getOriginalInput: function () { return this._originalInput; }, getFormat: function () { return this._format; }, getAlpha: function () { return this._a; }, getBrightness: function () { var t = this.toRgb(); return (299 * t.r + 587 * t.g + 114 * t.b) / 1e3; }, getLuminance: function () { var e, r, n, i = this.toRgb(); return ( (e = i.r / 255), (r = i.g / 255), (n = i.b / 255), 0.2126 * (e <= 0.03928 ? e / 12.92 : t.pow((e + 0.055) / 1.055, 2.4)) + 0.7152 * (r <= 0.03928 ? r / 12.92 : t.pow((r + 0.055) / 1.055, 2.4)) + 0.0722 * (n <= 0.03928 ? n / 12.92 : t.pow((n + 0.055) / 1.055, 2.4)) ); }, setAlpha: function (t) { return ( (this._a = L(t)), (this._roundA = a(100 * this._a) / 100), this ); }, toHsv: function () { var t = f(this._r, this._g, this._b); return { h: 360 * t.h, s: t.s, v: t.v, a: this._a }; }, toHsvString: function () { var t = f(this._r, this._g, this._b), e = a(360 * t.h), r = a(100 * t.s), n = a(100 * t.v); return 1 == this._a ? "hsv(" + e + ", " + r + "%, " + n + "%)" : "hsva(" + e + ", " + r + "%, " + n + "%, " + this._roundA + ")"; }, toHsl: function () { var t = u(this._r, this._g, this._b); return { h: 360 * t.h, s: t.s, l: t.l, a: this._a }; }, toHslString: function () { var t = u(this._r, this._g, this._b), e = a(360 * t.h), r = a(100 * t.s), n = a(100 * t.l); return 1 == this._a ? "hsl(" + e + ", " + r + "%, " + n + "%)" : "hsla(" + e + ", " + r + "%, " + n + "%, " + this._roundA + ")"; }, toHex: function (t) { return h(this._r, this._g, this._b, t); }, toHexString: function (t) { return "#" + this.toHex(t); }, toHex8: function (t) { return (function (t, e, r, n, i) { var o = [ O(a(t).toString(16)), O(a(e).toString(16)), O(a(r).toString(16)), O(D(n)), ]; if ( i && o[0].charAt(0) == o[0].charAt(1) && o[1].charAt(0) == o[1].charAt(1) && o[2].charAt(0) == o[2].charAt(1) && o[3].charAt(0) == o[3].charAt(1) ) return ( o[0].charAt(0) + o[1].charAt(0) + o[2].charAt(0) + o[3].charAt(0) ); return o.join(""); })(this._r, this._g, this._b, this._a, t); }, toHex8String: function (t) { return "#" + this.toHex8(t); }, toRgb: function () { return { r: a(this._r), g: a(this._g), b: a(this._b), a: this._a, }; }, toRgbString: function () { return 1 == this._a ? "rgb(" + a(this._r) + ", " + a(this._g) + ", " + a(this._b) + ")" : "rgba(" + a(this._r) + ", " + a(this._g) + ", " + a(this._b) + ", " + this._roundA + ")"; }, toPercentageRgb: function () { return { r: a(100 * C(this._r, 255)) + "%", g: a(100 * C(this._g, 255)) + "%", b: a(100 * C(this._b, 255)) + "%", a: this._a, }; }, toPercentageRgbString: function () { return 1 == this._a ? "rgb(" + a(100 * C(this._r, 255)) + "%, " + a(100 * C(this._g, 255)) + "%, " + a(100 * C(this._b, 255)) + "%)" : "rgba(" + a(100 * C(this._r, 255)) + "%, " + a(100 * C(this._g, 255)) + "%, " + a(100 * C(this._b, 255)) + "%, " + this._roundA + ")"; }, toName: function () { return 0 === this._a ? "transparent" : !(this._a < 1) && (E[h(this._r, this._g, this._b, !0)] || !1); }, toFilter: function (t) { var e = "#" + p(this._r, this._g, this._b, this._a), r = e, n = this._gradientType ? "GradientType = 1, " : ""; if (t) { var i = c(t); r = "#" + p(i._r, i._g, i._b, i._a); } return ( "progid:DXImageTransform.Microsoft.gradient(" + n + "startColorstr=" + e + ",endColorstr=" + r + ")" ); }, toString: function (t) { var e = !!t; t = t || this._format; var r = !1, n = this._a < 1 && this._a >= 0; return e || !n || ("hex" !== t && "hex6" !== t && "hex3" !== t && "hex4" !== t && "hex8" !== t && "name" !== t) ? ("rgb" === t && (r = this.toRgbString()), "prgb" === t && (r = this.toPercentageRgbString()), ("hex" !== t && "hex6" !== t) || (r = this.toHexString()), "hex3" === t && (r = this.toHexString(!0)), "hex4" === t && (r = this.toHex8String(!0)), "hex8" === t && (r = this.toHex8String()), "name" === t && (r = this.toName()), "hsl" === t && (r = this.toHslString()), "hsv" === t && (r = this.toHsvString()), r || this.toHexString()) : "name" === t && 0 === this._a ? this.toName() : this.toRgbString(); }, clone: function () { return c(this.toString()); }, _applyModification: function (t, e) { var r = t.apply(null, [this].concat([].slice.call(e))); return ( (this._r = r._r), (this._g = r._g), (this._b = r._b), this.setAlpha(r._a), this ); }, lighten: function () { return this._applyModification(v, arguments); }, brighten: function () { return this._applyModification(y, arguments); }, darken: function () { return this._applyModification(x, arguments); }, desaturate: function () { return this._applyModification(d, arguments); }, saturate: function () { return this._applyModification(m, arguments); }, greyscale: function () { return this._applyModification(g, arguments); }, spin: function () { return this._applyModification(b, arguments); }, _applyCombination: function (t, e) { return t.apply(null, [this].concat([].slice.call(e))); }, analogous: function () { return this._applyCombination(A, arguments); }, complement: function () { return this._applyCombination(_, arguments); }, monochromatic: function () { return this._applyCombination(M, arguments); }, splitcomplement: function () { return this._applyCombination(k, arguments); }, triad: function () { return this._applyCombination(w, arguments); }, tetrad: function () { return this._applyCombination(T, arguments); }, }), (c.fromRatio = function (t, e) { if ("object" == typeof t) { var r = {}; for (var n in t) t.hasOwnProperty(n) && (r[n] = "a" === n ? t[n] : z(t[n])); t = r; } return c(t, e); }), (c.equals = function (t, e) { return ( !(!t || !e) && c(t).toRgbString() == c(e).toRgbString() ); }), (c.random = function () { return c.fromRatio({ r: l(), g: l(), b: l() }); }), (c.mix = function (t, e, r) { r = 0 === r ? 0 : r || 50; var n = c(t).toRgb(), i = c(e).toRgb(), a = r / 100; return c({ r: (i.r - n.r) * a + n.r, g: (i.g - n.g) * a + n.g, b: (i.b - n.b) * a + n.b, a: (i.a - n.a) * a + n.a, }); }), (c.readability = function (e, r) { var n = c(e), i = c(r); return ( (t.max(n.getLuminance(), i.getLuminance()) + 0.05) / (t.min(n.getLuminance(), i.getLuminance()) + 0.05) ); }), (c.isReadable = function (t, e, r) { var n, i, a = c.readability(t, e); switch ( ((i = !1), (n = (function (t) { var e, r; (e = ( (t = t || { level: "AA", size: "small" }).level || "AA" ).toUpperCase()), (r = (t.size || "small").toLowerCase()), "AA" !== e && "AAA" !== e && (e = "AA"); "small" !== r && "large" !== r && (r = "small"); return { level: e, size: r }; })(r)).level + n.size) ) { case "AAsmall": case "AAAlarge": i = a >= 4.5; break; case "AAlarge": i = a >= 3; break; case "AAAsmall": i = a >= 7; } return i; }), (c.mostReadable = function (t, e, r) { var n, i, a, o, s = null, l = 0; (i = (r = r || {}).includeFallbackColors), (a = r.level), (o = r.size); for (var u = 0; u < e.length; u++) (n = c.readability(t, e[u])) > l && ((l = n), (s = c(e[u]))); return c.isReadable(t, s, { level: a, size: o }) || !i ? s : ((r.includeFallbackColors = !1), c.mostReadable(t, ["#fff", "#000"], r)); }); var S = (c.names = { aliceblue: "f0f8ff", antiquewhite: "faebd7", aqua: "0ff", aquamarine: "7fffd4", azure: "f0ffff", beige: "f5f5dc", bisque: "ffe4c4", black: "000", blanchedalmond: "ffebcd", blue: "00f", blueviolet: "8a2be2", brown: "a52a2a", burlywood: "deb887", burntsienna: "ea7e5d", cadetblue: "5f9ea0", chartreuse: "7fff00", chocolate: "d2691e", coral: "ff7f50", cornflowerblue: "6495ed", cornsilk: "fff8dc", crimson: "dc143c", cyan: "0ff", darkblue: "00008b", darkcyan: "008b8b", darkgoldenrod: "b8860b", darkgray: "a9a9a9", darkgreen: "006400", darkgrey: "a9a9a9", darkkhaki: "bdb76b", darkmagenta: "8b008b", darkolivegreen: "556b2f", darkorange: "ff8c00", darkorchid: "9932cc", darkred: "8b0000", darksalmon: "e9967a", darkseagreen: "8fbc8f", darkslateblue: "483d8b", darkslategray: "2f4f4f", darkslategrey: "2f4f4f", darkturquoise: "00ced1", darkviolet: "9400d3", deeppink: "ff1493", deepskyblue: "00bfff", dimgray: "696969", dimgrey: "696969", dodgerblue: "1e90ff", firebrick: "b22222", floralwhite: "fffaf0", forestgreen: "228b22", fuchsia: "f0f", gainsboro: "dcdcdc", ghostwhite: "f8f8ff", gold: "ffd700", goldenrod: "daa520", gray: "808080", green: "008000", greenyellow: "adff2f", grey: "808080", honeydew: "f0fff0", hotpink: "ff69b4", indianred: "cd5c5c", indigo: "4b0082", ivory: "fffff0", khaki: "f0e68c", lavender: "e6e6fa", lavenderblush: "fff0f5", lawngreen: "7cfc00", lemonchiffon: "fffacd", lightblue: "add8e6", lightcoral: "f08080", lightcyan: "e0ffff", lightgoldenrodyellow: "fafad2", lightgray: "d3d3d3", lightgreen: "90ee90", lightgrey: "d3d3d3", lightpink: "ffb6c1", lightsalmon: "ffa07a", lightseagreen: "20b2aa", lightskyblue: "87cefa", lightslategray: "789", lightslategrey: "789", lightsteelblue: "b0c4de", lightyellow: "ffffe0", lime: "0f0", limegreen: "32cd32", linen: "faf0e6", magenta: "f0f", maroon: "800000", mediumaquamarine: "66cdaa", mediumblue: "0000cd", mediumorchid: "ba55d3", mediumpurple: "9370db", mediumseagreen: "3cb371", mediumslateblue: "7b68ee", mediumspringgreen: "00fa9a", mediumturquoise: "48d1cc", mediumvioletred: "c71585", midnightblue: "191970", mintcream: "f5fffa", mistyrose: "ffe4e1", moccasin: "ffe4b5", navajowhite: "ffdead", navy: "000080", oldlace: "fdf5e6", olive: "808000", olivedrab: "6b8e23", orange: "ffa500", orangered: "ff4500", orchid: "da70d6", palegoldenrod: "eee8aa", palegreen: "98fb98", paleturquoise: "afeeee", palevioletred: "db7093", papayawhip: "ffefd5", peachpuff: "ffdab9", peru: "cd853f", pink: "ffc0cb", plum: "dda0dd", powderblue: "b0e0e6", purple: "800080", rebeccapurple: "663399", red: "f00", rosybrown: "bc8f8f", royalblue: "4169e1", saddlebrown: "8b4513", salmon: "fa8072", sandybrown: "f4a460", seagreen: "2e8b57", seashell: "fff5ee", sienna: "a0522d", silver: "c0c0c0", skyblue: "87ceeb", slateblue: "6a5acd", slategray: "708090", slategrey: "708090", snow: "fffafa", springgreen: "00ff7f", steelblue: "4682b4", tan: "d2b48c", teal: "008080", thistle: "d8bfd8", tomato: "ff6347", turquoise: "40e0d0", violet: "ee82ee", wheat: "f5deb3", white: "fff", whitesmoke: "f5f5f5", yellow: "ff0", yellowgreen: "9acd32", }), E = (c.hexNames = (function (t) { var e = {}; for (var r in t) t.hasOwnProperty(r) && (e[t[r]] = r); return e; })(S)); function L(t) { return ( (t = parseFloat(t)), (isNaN(t) || t < 0 || t > 1) && (t = 1), t ); } function C(e, r) { (function (t) { return ( "string" == typeof t && -1 != t.indexOf(".") && 1 === parseFloat(t) ); })(e) && (e = "100%"); var n = (function (t) { return "string" == typeof t && -1 != t.indexOf("%"); })(e); return ( (e = o(r, s(0, parseFloat(e)))), n && (e = parseInt(e * r, 10) / 100), t.abs(e - r) < 1e-6 ? 1 : (e % r) / parseFloat(r) ); } function P(t) { return o(1, s(0, t)); } function I(t) { return parseInt(t, 16); } function O(t) { return 1 == t.length ? "0" + t : "" + t; } function z(t) { return t <= 1 && (t = 100 * t + "%"), t; } function D(e) { return t.round(255 * parseFloat(e)).toString(16); } function R(t) { return I(t) / 255; } var F, B, N, j = ((B = "[\\s|\\(]+(" + (F = "(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)") + ")[,|\\s]+(" + F + ")[,|\\s]+(" + F + ")\\s*\\)?"), (N = "[\\s|\\(]+(" + F + ")[,|\\s]+(" + F + ")[,|\\s]+(" + F + ")[,|\\s]+(" + F + ")\\s*\\)?"), { CSS_UNIT: new RegExp(F), rgb: new RegExp("rgb" + B), rgba: new RegExp("rgba" + N), hsl: new RegExp("hsl" + B), hsla: new RegExp("hsla" + N), hsv: new RegExp("hsv" + B), hsva: new RegExp("hsva" + N), hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, }); function U(t) { return !!j.CSS_UNIT.exec(t); } void 0 !== e && e.exports ? (e.exports = c) : (window.tinycolor = c); })(Math); }, {}, ], 314: [ function (t, e, r) { "use strict"; (e.exports = i), (e.exports.float32 = e.exports.float = i), (e.exports.fract32 = e.exports.fract = function (t, e) { if (t.length) { if (t instanceof Float32Array) return new Float32Array(t.length); e instanceof Float32Array || (e = i(t)); for (var r = 0, n = e.length; r < n; r++) e[r] = t[r] - e[r]; return e; } return i(t - i(t)); }); var n = new Float32Array(1); function i(t) { return t.length ? t instanceof Float32Array ? t : new Float32Array(t) : ((n[0] = t), n[0]); } }, {}, ], 315: [ function (t, e, r) { "use strict"; var n = t("parse-unit"); e.exports = a; function i(t, e) { var r = n(getComputedStyle(t).getPropertyValue(e)); return r[0] * a(r[1], t); } function a(t, e) { switch ( ((e = e || document.body), (t = (t || "px").trim().toLowerCase()), (e !== window && e !== document) || (e = document.body), t) ) { case "%": return e.clientHeight / 100; case "ch": case "ex": return (function (t, e) { var r = document.createElement("div"); (r.style["font-size"] = "128" + t), e.appendChild(r); var n = i(r, "font-size") / 128; return e.removeChild(r), n; })(t, e); case "em": return i(e, "font-size"); case "rem": return i(document.body, "font-size"); case "vw": return window.innerWidth / 100; case "vh": return window.innerHeight / 100; case "vmin": return ( Math.min(window.innerWidth, window.innerHeight) / 100 ); case "vmax": return ( Math.max(window.innerWidth, window.innerHeight) / 100 ); case "in": return 96; case "cm": return 96 / 2.54; case "mm": return 96 / 25.4; case "pt": return 96 / 72; case "pc": return 16; } return 1; } }, { "parse-unit": 251 }, ], 316: [ function (t, e, r) { !(function (t, n) { "object" == typeof r && void 0 !== e ? n(r) : n(((t = t || self).topojson = t.topojson || {})); })(this, function (t) { "use strict"; function e(t) { return t; } function r(t) { if (null == t) return e; var r, n, i = t.scale[0], a = t.scale[1], o = t.translate[0], s = t.translate[1]; return function (t, e) { e || (r = n = 0); var l = 2, c = t.length, u = new Array(c); for ( u[0] = (r += t[0]) * i + o, u[1] = (n += t[1]) * a + s; l < c; ) (u[l] = t[l]), ++l; return u; }; } function n(t) { var e, n = r(t.transform), i = 1 / 0, a = i, o = -i, s = -i; function l(t) { (t = n(t))[0] < i && (i = t[0]), t[0] > o && (o = t[0]), t[1] < a && (a = t[1]), t[1] > s && (s = t[1]); } function c(t) { switch (t.type) { case "GeometryCollection": t.geometries.forEach(c); break; case "Point": l(t.coordinates); break; case "MultiPoint": t.coordinates.forEach(l); } } for (e in (t.arcs.forEach(function (t) { for (var e, r = -1, l = t.length; ++r < l; ) (e = n(t[r], r))[0] < i && (i = e[0]), e[0] > o && (o = e[0]), e[1] < a && (a = e[1]), e[1] > s && (s = e[1]); }), t.objects)) c(t.objects[e]); return [i, a, o, s]; } function i(t, e) { var r = e.id, n = e.bbox, i = null == e.properties ? {} : e.properties, o = a(t, e); return null == r && null == n ? { type: "Feature", properties: i, geometry: o } : null == n ? { type: "Feature", id: r, properties: i, geometry: o, } : { type: "Feature", id: r, bbox: n, properties: i, geometry: o, }; } function a(t, e) { var n = r(t.transform), i = t.arcs; function a(t, e) { e.length && e.pop(); for ( var r = i[t < 0 ? ~t : t], a = 0, o = r.length; a < o; ++a ) e.push(n(r[a], a)); t < 0 && (function (t, e) { for (var r, n = t.length, i = n - e; i < --n; ) (r = t[i]), (t[i++] = t[n]), (t[n] = r); })(e, o); } function o(t) { return n(t); } function s(t) { for (var e = [], r = 0, n = t.length; r < n; ++r) a(t[r], e); return e.length < 2 && e.push(e[0]), e; } function l(t) { for (var e = s(t); e.length < 4; ) e.push(e[0]); return e; } function c(t) { return t.map(l); } return (function t(e) { var r, n = e.type; switch (n) { case "GeometryCollection": return { type: n, geometries: e.geometries.map(t) }; case "Point": r = o(e.coordinates); break; case "MultiPoint": r = e.coordinates.map(o); break; case "LineString": r = s(e.arcs); break; case "MultiLineString": r = e.arcs.map(s); break; case "Polygon": r = c(e.arcs); break; case "MultiPolygon": r = e.arcs.map(c); break; default: return null; } return { type: n, coordinates: r }; })(e); } function o(t, e) { var r = {}, n = {}, i = {}, a = [], o = -1; function s(t, e) { for (var n in t) { var i = t[n]; delete e[i.start], delete i.start, delete i.end, i.forEach(function (t) { r[t < 0 ? ~t : t] = 1; }), a.push(i); } } return ( e.forEach(function (r, n) { var i, a = t.arcs[r < 0 ? ~r : r]; a.length < 3 && !a[1][0] && !a[1][1] && ((i = e[++o]), (e[o] = r), (e[n] = i)); }), e.forEach(function (e) { var r, a, o = (function (e) { var r, n = t.arcs[e < 0 ? ~e : e], i = n[0]; t.transform ? ((r = [0, 0]), n.forEach(function (t) { (r[0] += t[0]), (r[1] += t[1]); })) : (r = n[n.length - 1]); return e < 0 ? [r, i] : [i, r]; })(e), s = o[0], l = o[1]; if ((r = i[s])) if ( (delete i[r.end], r.push(e), (r.end = l), (a = n[l])) ) { delete n[a.start]; var c = a === r ? r : r.concat(a); n[(c.start = r.start)] = i[(c.end = a.end)] = c; } else n[r.start] = i[r.end] = r; else if ((r = n[l])) if ( (delete n[r.start], r.unshift(e), (r.start = s), (a = i[s])) ) { delete i[a.end]; var u = a === r ? r : a.concat(r); n[(u.start = a.start)] = i[(u.end = r.end)] = u; } else n[r.start] = i[r.end] = r; else n[((r = [e]).start = s)] = i[(r.end = l)] = r; }), s(i, n), s(n, i), e.forEach(function (t) { r[t < 0 ? ~t : t] || a.push([t]); }), a ); } function s(t, e, r) { var n, i, a; if (arguments.length > 1) n = l(t, e, r); else for ( i = 0, n = new Array((a = t.arcs.length)); i < a; ++i ) n[i] = i; return { type: "MultiLineString", arcs: o(t, n) }; } function l(t, e, r) { var n, i = [], a = []; function o(t) { var e = t < 0 ? ~t : t; (a[e] || (a[e] = [])).push({ i: t, g: n }); } function s(t) { t.forEach(o); } function l(t) { t.forEach(s); } return ( (function t(e) { switch (((n = e), e.type)) { case "GeometryCollection": e.geometries.forEach(t); break; case "LineString": s(e.arcs); break; case "MultiLineString": case "Polygon": l(e.arcs); break; case "MultiPolygon": !(function (t) { t.forEach(l); })(e.arcs); } })(e), a.forEach( null == r ? function (t) { i.push(t[0].i); } : function (t) { r(t[0].g, t[t.length - 1].g) && i.push(t[0].i); }, ), i ); } function c(t, e) { var r = {}, n = [], i = []; function s(t) { t.forEach(function (e) { e.forEach(function (e) { (r[(e = e < 0 ? ~e : e)] || (r[e] = [])).push(t); }); }), n.push(t); } function l(e) { return (function (t) { for ( var e, r = -1, n = t.length, i = t[n - 1], a = 0; ++r < n; ) (e = i), (i = t[r]), (a += e[0] * i[1] - e[1] * i[0]); return Math.abs(a); })(a(t, { type: "Polygon", arcs: [e] }).coordinates[0]); } return ( e.forEach(function t(e) { switch (e.type) { case "GeometryCollection": e.geometries.forEach(t); break; case "Polygon": s(e.arcs); break; case "MultiPolygon": e.arcs.forEach(s); } }), n.forEach(function (t) { if (!t._) { var e = [], n = [t]; for (t._ = 1, i.push(e); (t = n.pop()); ) e.push(t), t.forEach(function (t) { t.forEach(function (t) { r[t < 0 ? ~t : t].forEach(function (t) { t._ || ((t._ = 1), n.push(t)); }); }); }); } }), n.forEach(function (t) { delete t._; }), { type: "MultiPolygon", arcs: i .map(function (e) { var n, i = []; if ( (e.forEach(function (t) { t.forEach(function (t) { t.forEach(function (t) { r[t < 0 ? ~t : t].length < 2 && i.push(t); }); }); }), (n = (i = o(t, i)).length) > 1) ) for (var a, s, c = 1, u = l(i[0]); c < n; ++c) (a = l(i[c])) > u && ((s = i[0]), (i[0] = i[c]), (i[c] = s), (u = a)); return i; }) .filter(function (t) { return t.length > 0; }), } ); } function u(t, e) { for (var r = 0, n = t.length; r < n; ) { var i = (r + n) >>> 1; t[i] < e ? (r = i + 1) : (n = i); } return r; } function f(t) { if (null == t) return e; var r, n, i = t.scale[0], a = t.scale[1], o = t.translate[0], s = t.translate[1]; return function (t, e) { e || (r = n = 0); var l = 2, c = t.length, u = new Array(c), f = Math.round((t[0] - o) / i), h = Math.round((t[1] - s) / a); for (u[0] = f - r, r = f, u[1] = h - n, n = h; l < c; ) (u[l] = t[l]), ++l; return u; }; } (t.bbox = n), (t.feature = function (t, e) { return ( "string" == typeof e && (e = t.objects[e]), "GeometryCollection" === e.type ? { type: "FeatureCollection", features: e.geometries.map(function (e) { return i(t, e); }), } : i(t, e) ); }), (t.merge = function (t) { return a(t, c.apply(this, arguments)); }), (t.mergeArcs = c), (t.mesh = function (t) { return a(t, s.apply(this, arguments)); }), (t.meshArcs = s), (t.neighbors = function (t) { var e = {}, r = t.map(function () { return []; }); function n(t, r) { t.forEach(function (t) { t < 0 && (t = ~t); var n = e[t]; n ? n.push(r) : (e[t] = [r]); }); } function i(t, e) { t.forEach(function (t) { n(t, e); }); } var a = { LineString: n, MultiLineString: i, Polygon: i, MultiPolygon: function (t, e) { t.forEach(function (t) { i(t, e); }); }, }; for (var o in (t.forEach(function t(e, r) { "GeometryCollection" === e.type ? e.geometries.forEach(function (e) { t(e, r); }) : e.type in a && a[e.type](e.arcs, r); }), e)) for (var s = e[o], l = s.length, c = 0; c < l; ++c) for (var f = c + 1; f < l; ++f) { var h, p = s[c], d = s[f]; (h = r[p])[(o = u(h, d))] !== d && h.splice(o, 0, d), (h = r[d])[(o = u(h, p))] !== p && h.splice(o, 0, p); } return r; }), (t.quantize = function (t, e) { if (t.transform) throw new Error("already quantized"); if (e && e.scale) l = t.bbox; else { if (!((r = Math.floor(e)) >= 2)) throw new Error("n must be \u22652"); var r, i = (l = t.bbox || n(t))[0], a = l[1], o = l[2], s = l[3]; e = { scale: [ o - i ? (o - i) / (r - 1) : 1, s - a ? (s - a) / (r - 1) : 1, ], translate: [i, a], }; } var l, c, u = f(e), h = t.objects, p = {}; function d(t) { return u(t); } function m(t) { var e; switch (t.type) { case "GeometryCollection": e = { type: "GeometryCollection", geometries: t.geometries.map(m), }; break; case "Point": e = { type: "Point", coordinates: d(t.coordinates), }; break; case "MultiPoint": e = { type: "MultiPoint", coordinates: t.coordinates.map(d), }; break; default: return t; } return ( null != t.id && (e.id = t.id), null != t.bbox && (e.bbox = t.bbox), null != t.properties && (e.properties = t.properties), e ); } for (c in h) p[c] = m(h[c]); return { type: "Topology", bbox: l, transform: e, objects: p, arcs: t.arcs.map(function (t) { var e, r = 0, n = 1, i = t.length, a = new Array(i); for (a[0] = u(t[0], 0); ++r < i; ) ((e = u(t[r], r))[0] || e[1]) && (a[n++] = e); return ( 1 === n && (a[n++] = [0, 0]), (a.length = n), a ); }), }; }), (t.transform = r), (t.untransform = f), Object.defineProperty(t, "__esModule", { value: !0 }); }); }, {}, ], 317: [ function (t, e, r) { "use strict"; var n = t("../prototype/is"); e.exports = function (t) { if ("function" != typeof t) return !1; if (!hasOwnProperty.call(t, "length")) return !1; try { if ("number" != typeof t.length) return !1; if ("function" != typeof t.call) return !1; if ("function" != typeof t.apply) return !1; } catch (t) { return !1; } return !n(t); }; }, { "../prototype/is": 324 }, ], 318: [ function (t, e, r) { "use strict"; var n = t("../value/is"), i = t("../object/is"), a = t("../string/coerce"), o = t("./to-short-string"), s = function (t, e) { return t.replace("%v", o(e)); }; e.exports = function (t, e, r) { if (!i(r)) throw new TypeError(s(e, t)); if (!n(t)) { if ("default" in r) return r.default; if (r.isOptional) return null; } var o = a(r.errorMessage); throw (n(o) || (o = e), new TypeError(s(o, t))); }; }, { "../object/is": 321, "../string/coerce": 325, "../value/is": 327, "./to-short-string": 320, }, ], 319: [ function (t, e, r) { "use strict"; e.exports = function (t) { try { return t.toString(); } catch (e) { try { return String(t); } catch (t) { return null; } } }; }, {}, ], 320: [ function (t, e, r) { "use strict"; var n = t("./safe-to-string"), i = /[\n\r\u2028\u2029]/g; e.exports = function (t) { var e = n(t); return null === e ? "" : (e.length > 100 && (e = e.slice(0, 99) + "\u2026"), (e = e.replace(i, function (t) { switch (t) { case "\n": return "\\n"; case "\r": return "\\r"; case "\u2028": return "\\u2028"; case "\u2029": return "\\u2029"; default: throw new Error("Unexpected character"); } }))); }; }, { "./safe-to-string": 319 }, ], 321: [ function (t, e, r) { "use strict"; var n = t("../value/is"), i = { object: !0, function: !0, undefined: !0 }; e.exports = function (t) { return !!n(t) && hasOwnProperty.call(i, typeof t); }; }, { "../value/is": 327 }, ], 322: [ function (t, e, r) { "use strict"; var n = t("../lib/resolve-exception"), i = t("./is"); e.exports = function (t) { return i(t) ? t : n(t, "%v is not a plain function", arguments[1]); }; }, { "../lib/resolve-exception": 318, "./is": 323 }, ], 323: [ function (t, e, r) { "use strict"; var n = t("../function/is"), i = /^\s*class[\s{/}]/, a = Function.prototype.toString; e.exports = function (t) { return !!n(t) && !i.test(a.call(t)); }; }, { "../function/is": 317 }, ], 324: [ function (t, e, r) { "use strict"; var n = t("../object/is"); e.exports = function (t) { if (!n(t)) return !1; try { return !!t.constructor && t.constructor.prototype === t; } catch (t) { return !1; } }; }, { "../object/is": 321 }, ], 325: [ function (t, e, r) { "use strict"; var n = t("../value/is"), i = t("../object/is"), a = Object.prototype.toString; e.exports = function (t) { if (!n(t)) return null; if (i(t)) { var e = t.toString; if ("function" != typeof e) return null; if (e === a) return null; } try { return "" + t; } catch (t) { return null; } }; }, { "../object/is": 321, "../value/is": 327 }, ], 326: [ function (t, e, r) { "use strict"; var n = t("../lib/resolve-exception"), i = t("./is"); e.exports = function (t) { return i(t) ? t : n(t, "Cannot use %v", arguments[1]); }; }, { "../lib/resolve-exception": 318, "./is": 327 }, ], 327: [ function (t, e, r) { "use strict"; e.exports = function (t) { return null != t; }; }, {}, ], 328: [ function (t, e, r) { (function (e) { (function () { "use strict"; var n = t("bit-twiddle"), i = t("dup"), a = t("buffer").Buffer; e.__TYPEDARRAY_POOL || (e.__TYPEDARRAY_POOL = { UINT8: i([32, 0]), UINT16: i([32, 0]), UINT32: i([32, 0]), BIGUINT64: i([32, 0]), INT8: i([32, 0]), INT16: i([32, 0]), INT32: i([32, 0]), BIGINT64: i([32, 0]), FLOAT: i([32, 0]), DOUBLE: i([32, 0]), DATA: i([32, 0]), UINT8C: i([32, 0]), BUFFER: i([32, 0]), }); var o = "undefined" != typeof Uint8ClampedArray, s = "undefined" != typeof BigUint64Array, l = "undefined" != typeof BigInt64Array, c = e.__TYPEDARRAY_POOL; c.UINT8C || (c.UINT8C = i([32, 0])), c.BIGUINT64 || (c.BIGUINT64 = i([32, 0])), c.BIGINT64 || (c.BIGINT64 = i([32, 0])), c.BUFFER || (c.BUFFER = i([32, 0])); var u = c.DATA, f = c.BUFFER; function h(t) { if (t) { var e = t.length || t.byteLength, r = n.log2(e); u[r].push(t); } } function p(t) { t = n.nextPow2(t); var e = n.log2(t), r = u[e]; return r.length > 0 ? r.pop() : new ArrayBuffer(t); } function d(t) { return new Uint8Array(p(t), 0, t); } function m(t) { return new Uint16Array(p(2 * t), 0, t); } function g(t) { return new Uint32Array(p(4 * t), 0, t); } function v(t) { return new Int8Array(p(t), 0, t); } function y(t) { return new Int16Array(p(2 * t), 0, t); } function x(t) { return new Int32Array(p(4 * t), 0, t); } function b(t) { return new Float32Array(p(4 * t), 0, t); } function _(t) { return new Float64Array(p(8 * t), 0, t); } function w(t) { return o ? new Uint8ClampedArray(p(t), 0, t) : d(t); } function T(t) { return s ? new BigUint64Array(p(8 * t), 0, t) : null; } function k(t) { return l ? new BigInt64Array(p(8 * t), 0, t) : null; } function A(t) { return new DataView(p(t), 0, t); } function M(t) { t = n.nextPow2(t); var e = n.log2(t), r = f[e]; return r.length > 0 ? r.pop() : new a(t); } (r.free = function (t) { if (a.isBuffer(t)) f[n.log2(t.length)].push(t); else { if ( ("[object ArrayBuffer]" !== Object.prototype.toString.call(t) && (t = t.buffer), !t) ) return; var e = t.length || t.byteLength, r = 0 | n.log2(e); u[r].push(t); } }), (r.freeUint8 = r.freeUint16 = r.freeUint32 = r.freeBigUint64 = r.freeInt8 = r.freeInt16 = r.freeInt32 = r.freeBigInt64 = r.freeFloat32 = r.freeFloat = r.freeFloat64 = r.freeDouble = r.freeUint8Clamped = r.freeDataView = function (t) { h(t.buffer); }), (r.freeArrayBuffer = h), (r.freeBuffer = function (t) { f[n.log2(t.length)].push(t); }), (r.malloc = function (t, e) { if (void 0 === e || "arraybuffer" === e) return p(t); switch (e) { case "uint8": return d(t); case "uint16": return m(t); case "uint32": return g(t); case "int8": return v(t); case "int16": return y(t); case "int32": return x(t); case "float": case "float32": return b(t); case "double": case "float64": return _(t); case "uint8_clamped": return w(t); case "bigint64": return k(t); case "biguint64": return T(t); case "buffer": return M(t); case "data": case "dataview": return A(t); default: return null; } return null; }), (r.mallocArrayBuffer = p), (r.mallocUint8 = d), (r.mallocUint16 = m), (r.mallocUint32 = g), (r.mallocInt8 = v), (r.mallocInt16 = y), (r.mallocInt32 = x), (r.mallocFloat32 = r.mallocFloat = b), (r.mallocFloat64 = r.mallocDouble = _), (r.mallocUint8Clamped = w), (r.mallocBigUint64 = T), (r.mallocBigInt64 = k), (r.mallocDataView = A), (r.mallocBuffer = M), (r.clearCache = function () { for (var t = 0; t < 32; ++t) (c.UINT8[t].length = 0), (c.UINT16[t].length = 0), (c.UINT32[t].length = 0), (c.INT8[t].length = 0), (c.INT16[t].length = 0), (c.INT32[t].length = 0), (c.FLOAT[t].length = 0), (c.DOUBLE[t].length = 0), (c.BIGUINT64[t].length = 0), (c.BIGINT64[t].length = 0), (c.UINT8C[t].length = 0), (u[t].length = 0), (f[t].length = 0); }); }).call(this); }).call( this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, ); }, { "bit-twiddle": 81, buffer: 85, dup: 128 }, ], 329: [ function (t, e, r) { var n = /[\'\"]/; e.exports = function (t) { return t ? (n.test(t.charAt(0)) && (t = t.substr(1)), n.test(t.charAt(t.length - 1)) && (t = t.substr(0, t.length - 1)), t) : ""; }; }, {}, ], 330: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { Array.isArray(r) || (r = [].slice.call(arguments, 2)); for (var n = 0, i = r.length; n < i; n++) { var a = r[n]; for (var o in a) if ( (void 0 === e[o] || Array.isArray(e[o]) || t[o] !== e[o]) && o in e ) { var s; if (!0 === a[o]) s = e[o]; else { if (!1 === a[o]) continue; if ( "function" == typeof a[o] && void 0 === (s = a[o](e[o], t, e)) ) continue; } t[o] = s; } } return t; }; }, {}, ], 331: [ function (t, e, r) { (function (t) { (function () { function r(e) { try { if (!t.localStorage) return !1; } catch (t) { return !1; } var r = t.localStorage[e]; return null != r && "true" === String(r).toLowerCase(); } e.exports = function (t, e) { if (r("noDeprecation")) return t; var n = !1; return function () { if (!n) { if (r("throwDeprecation")) throw new Error(e); r("traceDeprecation") ? console.trace(e) : console.warn(e), (n = !0); } return t.apply(this, arguments); }; }; }).call(this); }).call( this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, ); }, {}, ], 332: [ function (t, e, r) { var n = t("get-canvas-context"); e.exports = function (t) { return n("webgl", t); }; }, { "get-canvas-context": 194 }, ], 333: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"), a = n.instance(); function o(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } (o.prototype = new n.baseCalendar()), i(o.prototype, { name: "Chinese", jdEpoch: 1721425.5, hasYearZero: !1, minMonth: 0, firstMonth: 0, minDay: 1, regionalOptions: { "": { name: "Chinese", epochs: ["BEC", "EC"], monthNumbers: function (t, e) { if ("string" == typeof t) { var r = t.match(l); return r ? r[0] : ""; } var n = this._validateYear(t), i = t.month(), a = "" + this.toChineseMonth(n, i); return ( e && a.length < 2 && (a = "0" + a), this.isIntercalaryMonth(n, i) && (a += "i"), a ); }, monthNames: function (t) { if ("string" == typeof t) { var e = t.match(c); return e ? e[0] : ""; } var r = this._validateYear(t), n = t.month(), i = [ "\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708", ][this.toChineseMonth(r, n) - 1]; return ( this.isIntercalaryMonth(r, n) && (i = "\u95f0" + i), i ); }, monthNamesShort: function (t) { if ("string" == typeof t) { var e = t.match(u); return e ? e[0] : ""; } var r = this._validateYear(t), n = t.month(), i = [ "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341", "\u5341\u4e00", "\u5341\u4e8c", ][this.toChineseMonth(r, n) - 1]; return ( this.isIntercalaryMonth(r, n) && (i = "\u95f0" + i), i ); }, parseMonth: function (t, e) { t = this._validateYear(t); var r, n = parseInt(e); if (isNaN(n)) "\u95f0" === e[0] && ((r = !0), (e = e.substring(1))), "\u6708" === e[e.length - 1] && (e = e.substring(0, e.length - 1)), (n = 1 + [ "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341", "\u5341\u4e00", "\u5341\u4e8c", ].indexOf(e)); else { var i = e[e.length - 1]; r = "i" === i || "I" === i; } return this.toMonthIndex(t, n, r); }, dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ], dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", ], dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", ], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 1, isRTL: !1, }, }, _validateYear: function (t, e) { if ( (t.year && (t = t.year()), "number" != typeof t || t < 1888 || t > 2111) ) throw e.replace(/\{0\}/, this.local.name); return t; }, toMonthIndex: function (t, e, r) { var i = this.intercalaryMonth(t); if ((r && e !== i) || e < 1 || e > 12) throw n.local.invalidMonth.replace( /\{0\}/, this.local.name, ); return i ? (!r && e <= i ? e - 1 : e) : e - 1; }, toChineseMonth: function (t, e) { t.year && (e = (t = t.year()).month()); var r = this.intercalaryMonth(t); if (e < 0 || e > (r ? 12 : 11)) throw n.local.invalidMonth.replace( /\{0\}/, this.local.name, ); return r ? (e < r ? e + 1 : e) : e + 1; }, intercalaryMonth: function (t) { return (t = this._validateYear(t)), f[t - f[0]] >> 13; }, isIntercalaryMonth: function (t, e) { t.year && (e = (t = t.year()).month()); var r = this.intercalaryMonth(t); return !!r && r === e; }, leapYear: function (t) { return 0 !== this.intercalaryMonth(t); }, weekOfYear: function (t, e, r) { var i, o = this._validateYear(t, n.local.invalidyear), s = h[o - h[0]], l = (s >> 9) & 4095, c = (s >> 5) & 15, u = 31 & s; (i = a.newDate(l, c, u)).add( 4 - (i.dayOfWeek() || 7), "d", ); var f = this.toJD(t, e, r) - i.toJD(); return 1 + Math.floor(f / 7); }, monthsInYear: function (t) { return this.leapYear(t) ? 13 : 12; }, daysInMonth: function (t, e) { t.year && ((e = t.month()), (t = t.year())), (t = this._validateYear(t)); var r = f[t - f[0]]; if (e > (r >> 13 ? 12 : 11)) throw n.local.invalidMonth.replace( /\{0\}/, this.local.name, ); return r & (1 << (12 - e)) ? 30 : 29; }, weekDay: function (t, e, r) { return (this.dayOfWeek(t, e, r) || 7) < 6; }, toJD: function (t, e, r) { var i = this._validate(t, s, r, n.local.invalidDate); (t = this._validateYear(i.year())), (e = i.month()), (r = i.day()); var o = this.isIntercalaryMonth(t, e), s = this.toChineseMonth(t, e), l = (function (t, e, r, n, i) { var a, o, s; if ("object" == typeof t) (o = t), (a = e || {}); else { var l; if ( !( "number" == typeof t && t >= 1888 && t <= 2111 ) ) throw new Error( "Lunar year outside range 1888-2111", ); if (!("number" == typeof e && e >= 1 && e <= 12)) throw new Error( "Lunar month outside range 1 - 12", ); if (!("number" == typeof r && r >= 1 && r <= 30)) throw new Error( "Lunar day outside range 1 - 30", ); "object" == typeof n ? ((l = !1), (a = n)) : ((l = !!n), (a = i || {})), (o = { year: t, month: e, day: r, isIntercalary: l, }); } s = o.day - 1; var c, u = f[o.year - f[0]], p = u >> 13; c = p && (o.month > p || o.isIntercalary) ? o.month : o.month - 1; for (var d = 0; d < c; d++) { s += u & (1 << (12 - d)) ? 30 : 29; } var m = h[o.year - h[0]], g = new Date( (m >> 9) & 4095, ((m >> 5) & 15) - 1, (31 & m) + s, ); return ( (a.year = g.getFullYear()), (a.month = 1 + g.getMonth()), (a.day = g.getDate()), a ); })(t, s, r, o); return a.toJD(l.year, l.month, l.day); }, fromJD: function (t) { var e = a.fromJD(t), r = (function (t, e, r, n) { var i, a; if ("object" == typeof t) (i = t), (a = e || {}); else { if ( !( "number" == typeof t && t >= 1888 && t <= 2111 ) ) throw new Error( "Solar year outside range 1888-2111", ); if (!("number" == typeof e && e >= 1 && e <= 12)) throw new Error( "Solar month outside range 1 - 12", ); if (!("number" == typeof r && r >= 1 && r <= 31)) throw new Error( "Solar day outside range 1 - 31", ); (i = { year: t, month: e, day: r }), (a = n || {}); } var o = h[i.year - h[0]], s = (i.year << 9) | (i.month << 5) | i.day; (a.year = s >= o ? i.year : i.year - 1), (o = h[a.year - h[0]]); var l, c = new Date( (o >> 9) & 4095, ((o >> 5) & 15) - 1, 31 & o, ), u = new Date(i.year, i.month - 1, i.day); l = Math.round((u - c) / 864e5); var p, d = f[a.year - f[0]]; for (p = 0; p < 13; p++) { var m = d & (1 << (12 - p)) ? 30 : 29; if (l < m) break; l -= m; } var g = d >> 13; !g || p < g ? ((a.isIntercalary = !1), (a.month = 1 + p)) : p === g ? ((a.isIntercalary = !0), (a.month = p)) : ((a.isIntercalary = !1), (a.month = p)); return (a.day = 1 + l), a; })(e.year(), e.month(), e.day()), n = this.toMonthIndex( r.year, r.month, r.isIntercalary, ); return this.newDate(r.year, n, r.day); }, fromString: function (t) { var e = t.match(s), r = this._validateYear(+e[1]), n = +e[2], i = !!e[3], a = this.toMonthIndex(r, n, i), o = +e[4]; return this.newDate(r, a, o); }, add: function (t, e, r) { var n = t.year(), i = t.month(), a = this.isIntercalaryMonth(n, i), s = this.toChineseMonth(n, i), l = Object.getPrototypeOf(o.prototype).add.call( this, t, e, r, ); if ("y" === r) { var c = l.year(), u = l.month(), f = this.isIntercalaryMonth(c, s), h = a && f ? this.toMonthIndex(c, s, !0) : this.toMonthIndex(c, s, !1); h !== u && l.month(h); } return l; }, }); var s = /^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m, l = /^\d?\d[iI]?/m, c = /^\u95f0?\u5341?[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]?\u6708/m, u = /^\u95f0?\u5341?[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]?/m; n.calendars.chinese = o; var f = [ 1887, 5780, 5802, 19157, 2742, 50359, 1198, 2646, 46378, 7466, 3412, 30122, 5482, 67949, 2396, 5294, 43597, 6732, 6954, 36181, 2772, 4954, 18781, 2396, 54427, 5274, 6730, 47781, 5800, 6868, 21210, 4790, 59703, 2350, 5270, 46667, 3402, 3496, 38325, 1388, 4782, 18735, 2350, 52374, 6804, 7498, 44457, 2906, 1388, 29294, 4700, 63789, 6442, 6804, 56138, 5802, 2772, 38235, 1210, 4698, 22827, 5418, 63125, 3476, 5802, 43701, 2484, 5302, 27223, 2646, 70954, 7466, 3412, 54698, 5482, 2412, 38062, 5294, 2636, 32038, 6954, 60245, 2772, 4826, 43357, 2394, 5274, 39501, 6730, 72357, 5800, 5844, 53978, 4790, 2358, 38039, 5270, 87627, 3402, 3496, 54708, 5484, 4782, 43311, 2350, 3222, 27978, 7498, 68965, 2904, 5484, 45677, 4700, 6444, 39573, 6804, 6986, 19285, 2772, 62811, 1210, 4698, 47403, 5418, 5780, 38570, 5546, 76469, 2420, 5302, 51799, 2646, 5414, 36501, 3412, 5546, 18869, 2412, 54446, 5276, 6732, 48422, 6822, 2900, 28010, 4826, 92509, 2394, 5274, 55883, 6730, 6820, 47956, 5812, 2778, 18779, 2358, 62615, 5270, 5450, 46757, 3492, 5556, 27318, 4718, 67887, 2350, 3222, 52554, 7498, 3428, 38252, 5468, 4700, 31022, 6444, 64149, 6804, 6986, 43861, 2772, 5338, 35421, 2650, 70955, 5418, 5780, 54954, 5546, 2740, 38074, 5302, 2646, 29991, 3366, 61011, 3412, 5546, 43445, 2412, 5294, 35406, 6732, 72998, 6820, 6996, 52586, 2778, 2396, 38045, 5274, 6698, 23333, 6820, 64338, 5812, 2746, 43355, 2358, 5270, 39499, 5450, 79525, 3492, 5548, ], h = [ 1887, 966732, 967231, 967733, 968265, 968766, 969297, 969798, 970298, 970829, 971330, 971830, 972362, 972863, 973395, 973896, 974397, 974928, 975428, 975929, 976461, 976962, 977462, 977994, 978494, 979026, 979526, 980026, 980558, 981059, 981559, 982091, 982593, 983124, 983624, 984124, 984656, 985157, 985656, 986189, 986690, 987191, 987722, 988222, 988753, 989254, 989754, 990286, 990788, 991288, 991819, 992319, 992851, 993352, 993851, 994383, 994885, 995385, 995917, 996418, 996918, 997450, 997949, 998481, 998982, 999483, 1000014, 1000515, 1001016, 1001548, 1002047, 1002578, 1003080, 1003580, 1004111, 1004613, 1005113, 1005645, 1006146, 1006645, 1007177, 1007678, 1008209, 1008710, 1009211, 1009743, 1010243, 1010743, 1011275, 1011775, 1012306, 1012807, 1013308, 1013840, 1014341, 1014841, 1015373, 1015874, 1016404, 1016905, 1017405, 1017937, 1018438, 1018939, 1019471, 1019972, 1020471, 1021002, 1021503, 1022035, 1022535, 1023036, 1023568, 1024069, 1024568, 1025100, 1025601, 1026102, 1026633, 1027133, 1027666, 1028167, 1028666, 1029198, 1029699, 1030199, 1030730, 1031231, 1031763, 1032264, 1032764, 1033296, 1033797, 1034297, 1034828, 1035329, 1035830, 1036362, 1036861, 1037393, 1037894, 1038394, 1038925, 1039427, 1039927, 1040459, 1040959, 1041491, 1041992, 1042492, 1043023, 1043524, 1044024, 1044556, 1045057, 1045558, 1046090, 1046590, 1047121, 1047622, 1048122, 1048654, 1049154, 1049655, 1050187, 1050689, 1051219, 1051720, 1052220, 1052751, 1053252, 1053752, 1054284, 1054786, 1055285, 1055817, 1056317, 1056849, 1057349, 1057850, 1058382, 1058883, 1059383, 1059915, 1060415, 1060947, 1061447, 1061947, 1062479, 1062981, 1063480, 1064012, 1064514, 1065014, 1065545, 1066045, 1066577, 1067078, 1067578, 1068110, 1068611, 1069112, 1069642, 1070142, 1070674, 1071175, 1071675, 1072207, 1072709, 1073209, 1073740, 1074241, 1074741, 1075273, 1075773, 1076305, 1076807, 1077308, 1077839, 1078340, 1078840, 1079372, 1079871, 1080403, 1080904, ]; }, { "../main": 347, "object-assign": 247 }, ], 334: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } (a.prototype = new n.baseCalendar()), i(a.prototype, { name: "Coptic", jdEpoch: 1825029.5, daysPerMonth: [ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Coptic", epochs: ["BAM", "AM"], monthNames: [ "Thout", "Paopi", "Hathor", "Koiak", "Tobi", "Meshir", "Paremhat", "Paremoude", "Pashons", "Paoni", "Epip", "Mesori", "Pi Kogi Enavot", ], monthNamesShort: [ "Tho", "Pao", "Hath", "Koi", "Tob", "Mesh", "Pat", "Pad", "Pash", "Pao", "Epi", "Meso", "PiK", ], dayNames: [ "Tkyriaka", "Pesnau", "Pshoment", "Peftoou", "Ptiou", "Psoou", "Psabbaton", ], dayNamesShort: [ "Tky", "Pes", "Psh", "Pef", "Pti", "Pso", "Psa", ], dayNamesMin: [ "Tk", "Pes", "Psh", "Pef", "Pt", "Pso", "Psa", ], digits: null, dateFormat: "dd/mm/yyyy", firstDay: 0, isRTL: !1, }, }, leapYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ); return ( (t = e.year() + (e.year() < 0 ? 1 : 0)) % 4 == 3 || t % 4 == -1 ); }, monthsInYear: function (t) { return ( this._validate( t, this.minMonth, this.minDay, n.local.invalidYear || n.regionalOptions[""].invalidYear, ), 13 ); }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(-n.dayOfWeek(), "d"), Math.floor((n.dayOfYear() - 1) / 7) + 1 ); }, daysInMonth: function (t, e) { var r = this._validate( t, e, this.minDay, n.local.invalidMonth, ); return ( this.daysPerMonth[r.month() - 1] + (13 === r.month() && this.leapYear(r.year()) ? 1 : 0) ); }, weekDay: function (t, e, r) { return (this.dayOfWeek(t, e, r) || 7) < 6; }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); return ( (t = i.year()) < 0 && t++, i.day() + 30 * (i.month() - 1) + 365 * (t - 1) + Math.floor(t / 4) + this.jdEpoch - 1 ); }, fromJD: function (t) { var e = Math.floor(t) + 0.5 - this.jdEpoch, r = Math.floor( (e - Math.floor((e + 366) / 1461)) / 365, ) + 1; r <= 0 && r--, (e = Math.floor(t) + 0.5 - this.newDate(r, 1, 1).toJD()); var n = Math.floor(e / 30) + 1, i = e - 30 * (n - 1) + 1; return this.newDate(r, n, i); }, }), (n.calendars.coptic = a); }, { "../main": 347, "object-assign": 247 }, ], 335: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } (a.prototype = new n.baseCalendar()), i(a.prototype, { name: "Discworld", jdEpoch: 1721425.5, daysPerMonth: [ 16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Discworld", epochs: ["BUC", "UC"], monthNames: [ "Ick", "Offle", "February", "March", "April", "May", "June", "Grune", "August", "Spune", "Sektober", "Ember", "December", ], monthNamesShort: [ "Ick", "Off", "Feb", "Mar", "Apr", "May", "Jun", "Gru", "Aug", "Spu", "Sek", "Emb", "Dec", ], dayNames: [ "Sunday", "Octeday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ], dayNamesShort: [ "Sun", "Oct", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", ], dayNamesMin: [ "Su", "Oc", "Mo", "Tu", "We", "Th", "Fr", "Sa", ], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 2, isRTL: !1, }, }, leapYear: function (t) { return ( this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ), !1 ); }, monthsInYear: function (t) { return ( this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ), 13 ); }, daysInYear: function (t) { return ( this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ), 400 ); }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(-n.dayOfWeek(), "d"), Math.floor((n.dayOfYear() - 1) / 8) + 1 ); }, daysInMonth: function (t, e) { var r = this._validate( t, e, this.minDay, n.local.invalidMonth, ); return this.daysPerMonth[r.month() - 1]; }, daysInWeek: function () { return 8; }, dayOfWeek: function (t, e, r) { return ( (this._validate(t, e, r, n.local.invalidDate).day() + 1) % 8 ); }, weekDay: function (t, e, r) { var n = this.dayOfWeek(t, e, r); return n >= 2 && n <= 6; }, extraInfo: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); return { century: o[Math.floor((i.year() - 1) / 100) + 1] || "", }; }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); return ( (t = i.year() + (i.year() < 0 ? 1 : 0)), (e = i.month()), (r = i.day()) + (e > 1 ? 16 : 0) + (e > 2 ? 32 * (e - 2) : 0) + 400 * (t - 1) + this.jdEpoch - 1 ); }, fromJD: function (t) { t = Math.floor(t + 0.5) - Math.floor(this.jdEpoch) - 1; var e = Math.floor(t / 400) + 1; (t -= 400 * (e - 1)), (t += t > 15 ? 16 : 0); var r = Math.floor(t / 32) + 1, n = t - 32 * (r - 1) + 1; return this.newDate(e <= 0 ? e - 1 : e, r, n); }, }); var o = { 20: "Fruitbat", 21: "Anchovy" }; n.calendars.discworld = a; }, { "../main": 347, "object-assign": 247 }, ], 336: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } (a.prototype = new n.baseCalendar()), i(a.prototype, { name: "Ethiopian", jdEpoch: 1724220.5, daysPerMonth: [ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Ethiopian", epochs: ["BEE", "EE"], monthNames: [ "Meskerem", "Tikemet", "Hidar", "Tahesas", "Tir", "Yekatit", "Megabit", "Miazia", "Genbot", "Sene", "Hamle", "Nehase", "Pagume", ], monthNamesShort: [ "Mes", "Tik", "Hid", "Tah", "Tir", "Yek", "Meg", "Mia", "Gen", "Sen", "Ham", "Neh", "Pag", ], dayNames: [ "Ehud", "Segno", "Maksegno", "Irob", "Hamus", "Arb", "Kidame", ], dayNamesShort: [ "Ehu", "Seg", "Mak", "Iro", "Ham", "Arb", "Kid", ], dayNamesMin: [ "Eh", "Se", "Ma", "Ir", "Ha", "Ar", "Ki", ], digits: null, dateFormat: "dd/mm/yyyy", firstDay: 0, isRTL: !1, }, }, leapYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ); return ( (t = e.year() + (e.year() < 0 ? 1 : 0)) % 4 == 3 || t % 4 == -1 ); }, monthsInYear: function (t) { return ( this._validate( t, this.minMonth, this.minDay, n.local.invalidYear || n.regionalOptions[""].invalidYear, ), 13 ); }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(-n.dayOfWeek(), "d"), Math.floor((n.dayOfYear() - 1) / 7) + 1 ); }, daysInMonth: function (t, e) { var r = this._validate( t, e, this.minDay, n.local.invalidMonth, ); return ( this.daysPerMonth[r.month() - 1] + (13 === r.month() && this.leapYear(r.year()) ? 1 : 0) ); }, weekDay: function (t, e, r) { return (this.dayOfWeek(t, e, r) || 7) < 6; }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); return ( (t = i.year()) < 0 && t++, i.day() + 30 * (i.month() - 1) + 365 * (t - 1) + Math.floor(t / 4) + this.jdEpoch - 1 ); }, fromJD: function (t) { var e = Math.floor(t) + 0.5 - this.jdEpoch, r = Math.floor( (e - Math.floor((e + 366) / 1461)) / 365, ) + 1; r <= 0 && r--, (e = Math.floor(t) + 0.5 - this.newDate(r, 1, 1).toJD()); var n = Math.floor(e / 30) + 1, i = e - 30 * (n - 1) + 1; return this.newDate(r, n, i); }, }), (n.calendars.ethiopian = a); }, { "../main": 347, "object-assign": 247 }, ], 337: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } function o(t, e) { return t - e * Math.floor(t / e); } (a.prototype = new n.baseCalendar()), i(a.prototype, { name: "Hebrew", jdEpoch: 347995.5, daysPerMonth: [ 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 29, ], hasYearZero: !1, minMonth: 1, firstMonth: 7, minDay: 1, regionalOptions: { "": { name: "Hebrew", epochs: ["BAM", "AM"], monthNames: [ "Nisan", "Iyar", "Sivan", "Tammuz", "Av", "Elul", "Tishrei", "Cheshvan", "Kislev", "Tevet", "Shevat", "Adar", "Adar II", ], monthNamesShort: [ "Nis", "Iya", "Siv", "Tam", "Av", "Elu", "Tis", "Che", "Kis", "Tev", "She", "Ada", "Ad2", ], dayNames: [ "Yom Rishon", "Yom Sheni", "Yom Shlishi", "Yom Revi'i", "Yom Chamishi", "Yom Shishi", "Yom Shabbat", ], dayNamesShort: [ "Ris", "She", "Shl", "Rev", "Cha", "Shi", "Sha", ], dayNamesMin: [ "Ri", "She", "Shl", "Re", "Ch", "Shi", "Sha", ], digits: null, dateFormat: "dd/mm/yyyy", firstDay: 0, isRTL: !1, }, }, leapYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ); return this._leapYear(e.year()); }, _leapYear: function (t) { return o(7 * (t = t < 0 ? t + 1 : t) + 1, 19) < 7; }, monthsInYear: function (t) { return ( this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ), this._leapYear(t.year ? t.year() : t) ? 13 : 12 ); }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(-n.dayOfWeek(), "d"), Math.floor((n.dayOfYear() - 1) / 7) + 1 ); }, daysInYear: function (t) { return ( (t = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ).year()), this.toJD(-1 === t ? 1 : t + 1, 7, 1) - this.toJD(t, 7, 1) ); }, daysInMonth: function (t, e) { return ( t.year && ((e = t.month()), (t = t.year())), this._validate( t, e, this.minDay, n.local.invalidMonth, ), (12 === e && this.leapYear(t)) || (8 === e && 5 === o(this.daysInYear(t), 10)) ? 30 : 9 === e && 3 === o(this.daysInYear(t), 10) ? 29 : this.daysPerMonth[e - 1] ); }, weekDay: function (t, e, r) { return 6 !== this.dayOfWeek(t, e, r); }, extraInfo: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); return { yearType: (this.leapYear(i) ? "embolismic" : "common") + " " + ["deficient", "regular", "complete"][ (this.daysInYear(i) % 10) - 3 ], }; }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); (t = i.year()), (e = i.month()), (r = i.day()); var a = t <= 0 ? t + 1 : t, o = this.jdEpoch + this._delay1(a) + this._delay2(a) + r + 1; if (e < 7) { for (var s = 7; s <= this.monthsInYear(t); s++) o += this.daysInMonth(t, s); for (s = 1; s < e; s++) o += this.daysInMonth(t, s); } else for (s = 7; s < e; s++) o += this.daysInMonth(t, s); return o; }, _delay1: function (t) { var e = Math.floor((235 * t - 234) / 19), r = 12084 + 13753 * e, n = 29 * e + Math.floor(r / 25920); return o(3 * (n + 1), 7) < 3 && n++, n; }, _delay2: function (t) { var e = this._delay1(t - 1), r = this._delay1(t); return this._delay1(t + 1) - r == 356 ? 2 : r - e == 382 ? 1 : 0; }, fromJD: function (t) { t = Math.floor(t) + 0.5; for ( var e = Math.floor( (98496 * (t - this.jdEpoch)) / 35975351, ) - 1; t >= this.toJD(-1 === e ? 1 : e + 1, 7, 1); ) e++; for ( var r = t < this.toJD(e, 1, 1) ? 7 : 1; t > this.toJD(e, r, this.daysInMonth(e, r)); ) r++; var n = t - this.toJD(e, r, 1) + 1; return this.newDate(e, r, n); }, }), (n.calendars.hebrew = a); }, { "../main": 347, "object-assign": 247 }, ], 338: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } (a.prototype = new n.baseCalendar()), i(a.prototype, { name: "Islamic", jdEpoch: 1948439.5, daysPerMonth: [ 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Islamic", epochs: ["BH", "AH"], monthNames: [ "Muharram", "Safar", "Rabi' al-awwal", "Rabi' al-thani", "Jumada al-awwal", "Jumada al-thani", "Rajab", "Sha'aban", "Ramadan", "Shawwal", "Dhu al-Qi'dah", "Dhu al-Hijjah", ], monthNamesShort: [ "Muh", "Saf", "Rab1", "Rab2", "Jum1", "Jum2", "Raj", "Sha'", "Ram", "Shaw", "DhuQ", "DhuH", ], dayNames: [ "Yawm al-ahad", "Yawm al-ithnayn", "Yawm ath-thulaathaa'", "Yawm al-arbi'aa'", "Yawm al-kham\u012bs", "Yawm al-jum'a", "Yawm as-sabt", ], dayNamesShort: [ "Aha", "Ith", "Thu", "Arb", "Kha", "Jum", "Sab", ], dayNamesMin: [ "Ah", "It", "Th", "Ar", "Kh", "Ju", "Sa", ], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 6, isRTL: !1, }, }, leapYear: function (t) { return ( (11 * this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ).year() + 14) % 30 < 11 ); }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(-n.dayOfWeek(), "d"), Math.floor((n.dayOfYear() - 1) / 7) + 1 ); }, daysInYear: function (t) { return this.leapYear(t) ? 355 : 354; }, daysInMonth: function (t, e) { var r = this._validate( t, e, this.minDay, n.local.invalidMonth, ); return ( this.daysPerMonth[r.month() - 1] + (12 === r.month() && this.leapYear(r.year()) ? 1 : 0) ); }, weekDay: function (t, e, r) { return 5 !== this.dayOfWeek(t, e, r); }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); return ( (t = i.year()), (e = i.month()), (t = t <= 0 ? t + 1 : t), (r = i.day()) + Math.ceil(29.5 * (e - 1)) + 354 * (t - 1) + Math.floor((3 + 11 * t) / 30) + this.jdEpoch - 1 ); }, fromJD: function (t) { t = Math.floor(t) + 0.5; var e = Math.floor( (30 * (t - this.jdEpoch) + 10646) / 10631, ); e = e <= 0 ? e - 1 : e; var r = Math.min( 12, Math.ceil((t - 29 - this.toJD(e, 1, 1)) / 29.5) + 1, ), n = t - this.toJD(e, r, 1) + 1; return this.newDate(e, r, n); }, }), (n.calendars.islamic = a); }, { "../main": 347, "object-assign": 247 }, ], 339: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } (a.prototype = new n.baseCalendar()), i(a.prototype, { name: "Julian", jdEpoch: 1721423.5, daysPerMonth: [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Julian", epochs: ["BC", "AD"], monthNames: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ], dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ], dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", ], dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", ], digits: null, dateFormat: "mm/dd/yyyy", firstDay: 0, isRTL: !1, }, }, leapYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ); return ( (t = e.year() < 0 ? e.year() + 1 : e.year()) % 4 == 0 ); }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(4 - (n.dayOfWeek() || 7), "d"), Math.floor((n.dayOfYear() - 1) / 7) + 1 ); }, daysInMonth: function (t, e) { var r = this._validate( t, e, this.minDay, n.local.invalidMonth, ); return ( this.daysPerMonth[r.month() - 1] + (2 === r.month() && this.leapYear(r.year()) ? 1 : 0) ); }, weekDay: function (t, e, r) { return (this.dayOfWeek(t, e, r) || 7) < 6; }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); return ( (t = i.year()), (e = i.month()), (r = i.day()), t < 0 && t++, e <= 2 && (t--, (e += 12)), Math.floor(365.25 * (t + 4716)) + Math.floor(30.6001 * (e + 1)) + r - 1524.5 ); }, fromJD: function (t) { var e = Math.floor(t + 0.5) + 1524, r = Math.floor((e - 122.1) / 365.25), n = Math.floor(365.25 * r), i = Math.floor((e - n) / 30.6001), a = i - Math.floor(i < 14 ? 1 : 13), o = r - Math.floor(a > 2 ? 4716 : 4715), s = e - n - Math.floor(30.6001 * i); return o <= 0 && o--, this.newDate(o, a, s); }, }), (n.calendars.julian = a); }, { "../main": 347, "object-assign": 247 }, ], 340: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } function o(t, e) { return t - e * Math.floor(t / e); } function s(t, e) { return o(t - 1, e) + 1; } (a.prototype = new n.baseCalendar()), i(a.prototype, { name: "Mayan", jdEpoch: 584282.5, hasYearZero: !0, minMonth: 0, firstMonth: 0, minDay: 0, regionalOptions: { "": { name: "Mayan", epochs: ["", ""], monthNames: [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", ], monthNamesShort: [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", ], dayNames: [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", ], dayNamesShort: [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", ], dayNamesMin: [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", ], digits: null, dateFormat: "YYYY.m.d", firstDay: 0, isRTL: !1, haabMonths: [ "Pop", "Uo", "Zip", "Zotz", "Tzec", "Xul", "Yaxkin", "Mol", "Chen", "Yax", "Zac", "Ceh", "Mac", "Kankin", "Muan", "Pax", "Kayab", "Cumku", "Uayeb", ], tzolkinMonths: [ "Imix", "Ik", "Akbal", "Kan", "Chicchan", "Cimi", "Manik", "Lamat", "Muluc", "Oc", "Chuen", "Eb", "Ben", "Ix", "Men", "Cib", "Caban", "Etznab", "Cauac", "Ahau", ], }, }, leapYear: function (t) { return ( this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ), !1 ); }, formatYear: function (t) { t = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ).year(); var e = Math.floor(t / 400); return ( (t %= 400), (t += t < 0 ? 400 : 0), e + "." + Math.floor(t / 20) + "." + (t % 20) ); }, forYear: function (t) { if ((t = t.split(".")).length < 3) throw "Invalid Mayan year"; for (var e = 0, r = 0; r < t.length; r++) { var n = parseInt(t[r], 10); if (Math.abs(n) > 19 || (r > 0 && n < 0)) throw "Invalid Mayan year"; e = 20 * e + n; } return e; }, monthsInYear: function (t) { return ( this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ), 18 ); }, weekOfYear: function (t, e, r) { return this._validate(t, e, r, n.local.invalidDate), 0; }, daysInYear: function (t) { return ( this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ), 360 ); }, daysInMonth: function (t, e) { return ( this._validate( t, e, this.minDay, n.local.invalidMonth, ), 20 ); }, daysInWeek: function () { return 5; }, dayOfWeek: function (t, e, r) { return this._validate( t, e, r, n.local.invalidDate, ).day(); }, weekDay: function (t, e, r) { return this._validate(t, e, r, n.local.invalidDate), !0; }, extraInfo: function (t, e, r) { var i = this._validate( t, e, r, n.local.invalidDate, ).toJD(), a = this._toHaab(i), o = this._toTzolkin(i); return { haabMonthName: this.local.haabMonths[a[0] - 1], haabMonth: a[0], haabDay: a[1], tzolkinDayName: this.local.tzolkinMonths[o[0] - 1], tzolkinDay: o[0], tzolkinTrecena: o[1], }; }, _toHaab: function (t) { var e = o((t -= this.jdEpoch) + 8 + 340, 365); return [Math.floor(e / 20) + 1, o(e, 20)]; }, _toTzolkin: function (t) { return [s((t -= this.jdEpoch) + 20, 20), s(t + 4, 13)]; }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); return ( i.day() + 20 * i.month() + 360 * i.year() + this.jdEpoch ); }, fromJD: function (t) { t = Math.floor(t) + 0.5 - this.jdEpoch; var e = Math.floor(t / 360); (t %= 360), (t += t < 0 ? 360 : 0); var r = Math.floor(t / 20), n = t % 20; return this.newDate(e, r, n); }, }), (n.calendars.mayan = a); }, { "../main": 347, "object-assign": 247 }, ], 341: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } a.prototype = new n.baseCalendar(); var o = n.instance("gregorian"); i(a.prototype, { name: "Nanakshahi", jdEpoch: 2257673.5, daysPerMonth: [ 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Nanakshahi", epochs: ["BN", "AN"], monthNames: [ "Chet", "Vaisakh", "Jeth", "Harh", "Sawan", "Bhadon", "Assu", "Katak", "Maghar", "Poh", "Magh", "Phagun", ], monthNamesShort: [ "Che", "Vai", "Jet", "Har", "Saw", "Bha", "Ass", "Kat", "Mgr", "Poh", "Mgh", "Pha", ], dayNames: [ "Somvaar", "Mangalvar", "Budhvaar", "Veervaar", "Shukarvaar", "Sanicharvaar", "Etvaar", ], dayNamesShort: [ "Som", "Mangal", "Budh", "Veer", "Shukar", "Sanichar", "Et", ], dayNamesMin: ["So", "Ma", "Bu", "Ve", "Sh", "Sa", "Et"], digits: null, dateFormat: "dd-mm-yyyy", firstDay: 0, isRTL: !1, }, }, leapYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear || n.regionalOptions[""].invalidYear, ); return o.leapYear( e.year() + (e.year() < 1 ? 1 : 0) + 1469, ); }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(1 - (n.dayOfWeek() || 7), "d"), Math.floor((n.dayOfYear() - 1) / 7) + 1 ); }, daysInMonth: function (t, e) { var r = this._validate( t, e, this.minDay, n.local.invalidMonth, ); return ( this.daysPerMonth[r.month() - 1] + (12 === r.month() && this.leapYear(r.year()) ? 1 : 0) ); }, weekDay: function (t, e, r) { return (this.dayOfWeek(t, e, r) || 7) < 6; }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidMonth); (t = i.year()) < 0 && t++; for (var a = i.day(), s = 1; s < i.month(); s++) a += this.daysPerMonth[s - 1]; return a + o.toJD(t + 1468, 3, 13); }, fromJD: function (t) { t = Math.floor(t + 0.5); for ( var e = Math.floor((t - (this.jdEpoch - 1)) / 366); t >= this.toJD(e + 1, 1, 1); ) e++; for ( var r = t - Math.floor(this.toJD(e, 1, 1) + 0.5) + 1, n = 1; r > this.daysInMonth(e, n); ) (r -= this.daysInMonth(e, n)), n++; return this.newDate(e, n, r); }, }), (n.calendars.nanakshahi = a); }, { "../main": 347, "object-assign": 247 }, ], 342: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } (a.prototype = new n.baseCalendar()), i(a.prototype, { name: "Nepali", jdEpoch: 1700709.5, daysPerMonth: [ 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, daysPerYear: 365, regionalOptions: { "": { name: "Nepali", epochs: ["BBS", "ABS"], monthNames: [ "Baisakh", "Jestha", "Ashadh", "Shrawan", "Bhadra", "Ashwin", "Kartik", "Mangsir", "Paush", "Mangh", "Falgun", "Chaitra", ], monthNamesShort: [ "Bai", "Je", "As", "Shra", "Bha", "Ash", "Kar", "Mang", "Pau", "Ma", "Fal", "Chai", ], dayNames: [ "Aaitabaar", "Sombaar", "Manglbaar", "Budhabaar", "Bihibaar", "Shukrabaar", "Shanibaar", ], dayNamesShort: [ "Aaita", "Som", "Mangl", "Budha", "Bihi", "Shukra", "Shani", ], dayNamesMin: [ "Aai", "So", "Man", "Bu", "Bi", "Shu", "Sha", ], digits: null, dateFormat: "dd/mm/yyyy", firstDay: 1, isRTL: !1, }, }, leapYear: function (t) { return this.daysInYear(t) !== this.daysPerYear; }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(-n.dayOfWeek(), "d"), Math.floor((n.dayOfYear() - 1) / 7) + 1 ); }, daysInYear: function (t) { if ( ((t = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ).year()), void 0 === this.NEPALI_CALENDAR_DATA[t]) ) return this.daysPerYear; for (var e = 0, r = this.minMonth; r <= 12; r++) e += this.NEPALI_CALENDAR_DATA[t][r]; return e; }, daysInMonth: function (t, e) { return ( t.year && ((e = t.month()), (t = t.year())), this._validate( t, e, this.minDay, n.local.invalidMonth, ), void 0 === this.NEPALI_CALENDAR_DATA[t] ? this.daysPerMonth[e - 1] : this.NEPALI_CALENDAR_DATA[t][e] ); }, weekDay: function (t, e, r) { return 6 !== this.dayOfWeek(t, e, r); }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); (t = i.year()), (e = i.month()), (r = i.day()); var a = n.instance(), o = 0, s = e, l = t; this._createMissingCalendarData(t); var c = t - (s > 9 || (9 === s && r >= this.NEPALI_CALENDAR_DATA[l][0]) ? 56 : 57); for (9 !== e && ((o = r), s--); 9 !== s; ) s <= 0 && ((s = 12), l--), (o += this.NEPALI_CALENDAR_DATA[l][s]), s--; return ( 9 === e ? (o += r - this.NEPALI_CALENDAR_DATA[l][0]) < 0 && (o += a.daysInYear(c)) : (o += this.NEPALI_CALENDAR_DATA[l][9] - this.NEPALI_CALENDAR_DATA[l][0]), a.newDate(c, 1, 1).add(o, "d").toJD() ); }, fromJD: function (t) { var e = n.instance().fromJD(t), r = e.year(), i = e.dayOfYear(), a = r + 56; this._createMissingCalendarData(a); for ( var o = 9, s = this.NEPALI_CALENDAR_DATA[a][0], l = this.NEPALI_CALENDAR_DATA[a][o] - s + 1; i > l; ) ++o > 12 && ((o = 1), a++), (l += this.NEPALI_CALENDAR_DATA[a][o]); var c = this.NEPALI_CALENDAR_DATA[a][o] - (l - i); return this.newDate(a, o, c); }, _createMissingCalendarData: function (t) { var e = this.daysPerMonth.slice(0); e.unshift(17); for (var r = t - 1; r < t + 2; r++) void 0 === this.NEPALI_CALENDAR_DATA[r] && (this.NEPALI_CALENDAR_DATA[r] = e); }, NEPALI_CALENDAR_DATA: { 1970: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 1971: [ 18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30, ], 1972: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30, ], 1973: [ 19, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 1974: [ 19, 31, 31, 32, 30, 31, 31, 30, 29, 30, 29, 30, 30, ], 1975: [ 18, 31, 31, 32, 32, 30, 31, 30, 29, 30, 29, 30, 30, ], 1976: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 1977: [ 18, 31, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31, ], 1978: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 1979: [ 18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 1980: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 1981: [ 18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30, ], 1982: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 1983: [ 18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 1984: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 1985: [ 18, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30, ], 1986: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 1987: [ 18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 1988: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 1989: [ 18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30, ], 1990: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 1991: [ 18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 1992: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 1993: [ 18, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30, ], 1994: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 1995: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30, ], 1996: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 1997: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 1998: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 1999: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2e3: [ 17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 2001: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2002: [ 18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2003: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2004: [ 17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 2005: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2006: [ 18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2007: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2008: [ 17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31, ], 2009: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2010: [ 18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2011: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2012: [ 17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30, ], 2013: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2014: [ 18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2015: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2016: [ 17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30, ], 2017: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2018: [ 18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2019: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 2020: [ 17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30, ], 2021: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2022: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30, ], 2023: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 2024: [ 17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30, ], 2025: [ 18, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2026: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2027: [ 17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 2028: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2029: [ 18, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30, ], 2030: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 30, 30, 30, 31, ], 2031: [ 17, 31, 32, 31, 32, 31, 31, 31, 31, 31, 31, 31, 31, ], 2032: [ 17, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, ], 2033: [ 18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2034: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2035: [ 17, 30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31, ], 2036: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2037: [ 18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2038: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2039: [ 17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30, ], 2040: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2041: [ 18, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2042: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2043: [ 17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30, ], 2044: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2045: [ 18, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2046: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2047: [ 17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30, ], 2048: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2049: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30, ], 2050: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 2051: [ 17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30, ], 2052: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2053: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30, ], 2054: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 2055: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 29, 30, ], 2056: [ 17, 31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30, ], 2057: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2058: [ 17, 30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 2059: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2060: [ 17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2061: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2062: [ 17, 30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31, ], 2063: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2064: [ 17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2065: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2066: [ 17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31, ], 2067: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2068: [ 17, 31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2069: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2070: [ 17, 31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30, ], 2071: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2072: [ 17, 31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2073: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31, ], 2074: [ 17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30, ], 2075: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2076: [ 16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30, ], 2077: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31, ], 2078: [ 17, 31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30, ], 2079: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30, ], 2080: [ 16, 31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30, ], 2081: [ 17, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30, ], 2082: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30, ], 2083: [ 17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30, ], 2084: [ 17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30, ], 2085: [ 17, 31, 32, 31, 32, 31, 31, 30, 30, 29, 30, 30, 30, ], 2086: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30, ], 2087: [ 16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30, ], 2088: [ 16, 30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30, ], 2089: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30, ], 2090: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30, ], 2091: [ 16, 31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30, ], 2092: [ 16, 31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30, ], 2093: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30, ], 2094: [ 17, 31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30, ], 2095: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 30, 30, 30, 30, ], 2096: [ 17, 30, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30, ], 2097: [ 17, 31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30, ], 2098: [ 17, 31, 31, 32, 31, 31, 31, 29, 30, 29, 30, 30, 31, ], 2099: [ 17, 31, 31, 32, 31, 31, 31, 30, 29, 29, 30, 30, 30, ], 2100: [ 17, 31, 32, 31, 32, 30, 31, 30, 29, 30, 29, 30, 30, ], }, }), (n.calendars.nepali = a); }, { "../main": 347, "object-assign": 247 }, ], 343: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } function o(t, e) { return t - e * Math.floor(t / e); } (a.prototype = new n.baseCalendar()), i(a.prototype, { name: "Persian", jdEpoch: 1948320.5, daysPerMonth: [ 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Persian", epochs: ["BP", "AP"], monthNames: [ "Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Day", "Bahman", "Esfand", ], monthNamesShort: [ "Far", "Ord", "Kho", "Tir", "Mor", "Sha", "Meh", "Aba", "Aza", "Day", "Bah", "Esf", ], dayNames: [ "Yekshambe", "Doshambe", "Seshambe", "Ch\xe6harshambe", "Panjshambe", "Jom'e", "Shambe", ], dayNamesShort: [ "Yek", "Do", "Se", "Ch\xe6", "Panj", "Jom", "Sha", ], dayNamesMin: [ "Ye", "Do", "Se", "Ch", "Pa", "Jo", "Sh", ], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 6, isRTL: !1, }, }, leapYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ); return ( (682 * (((e.year() - (e.year() > 0 ? 474 : 473)) % 2820) + 474 + 38)) % 2816 < 682 ); }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(-(n.dayOfWeek() + 1) % 7, "d"), Math.floor((n.dayOfYear() - 1) / 7) + 1 ); }, daysInMonth: function (t, e) { var r = this._validate( t, e, this.minDay, n.local.invalidMonth, ); return ( this.daysPerMonth[r.month() - 1] + (12 === r.month() && this.leapYear(r.year()) ? 1 : 0) ); }, weekDay: function (t, e, r) { return 5 !== this.dayOfWeek(t, e, r); }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); (t = i.year()), (e = i.month()), (r = i.day()); var a = t - (t >= 0 ? 474 : 473), s = 474 + o(a, 2820); return ( r + (e <= 7 ? 31 * (e - 1) : 30 * (e - 1) + 6) + Math.floor((682 * s - 110) / 2816) + 365 * (s - 1) + 1029983 * Math.floor(a / 2820) + this.jdEpoch - 1 ); }, fromJD: function (t) { var e = (t = Math.floor(t) + 0.5) - this.toJD(475, 1, 1), r = Math.floor(e / 1029983), n = o(e, 1029983), i = 2820; if (1029982 !== n) { var a = Math.floor(n / 366), s = o(n, 366); i = Math.floor((2134 * a + 2816 * s + 2815) / 1028522) + a + 1; } var l = i + 2820 * r + 474; l = l <= 0 ? l - 1 : l; var c = t - this.toJD(l, 1, 1) + 1, u = c <= 186 ? Math.ceil(c / 31) : Math.ceil((c - 6) / 30), f = t - this.toJD(l, u, 1) + 1; return this.newDate(l, u, f); }, }), (n.calendars.persian = a), (n.calendars.jalali = a); }, { "../main": 347, "object-assign": 247 }, ], 344: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"), a = n.instance(); function o(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } (o.prototype = new n.baseCalendar()), i(o.prototype, { name: "Taiwan", jdEpoch: 2419402.5, yearsOffset: 1911, daysPerMonth: [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Taiwan", epochs: ["BROC", "ROC"], monthNames: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ], dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ], dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", ], dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", ], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 1, isRTL: !1, }, }, leapYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ); t = this._t2gYear(e.year()); return a.leapYear(t); }, weekOfYear: function (t, e, r) { var i = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ); t = this._t2gYear(i.year()); return a.weekOfYear(t, i.month(), i.day()); }, daysInMonth: function (t, e) { var r = this._validate( t, e, this.minDay, n.local.invalidMonth, ); return ( this.daysPerMonth[r.month() - 1] + (2 === r.month() && this.leapYear(r.year()) ? 1 : 0) ); }, weekDay: function (t, e, r) { return (this.dayOfWeek(t, e, r) || 7) < 6; }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); t = this._t2gYear(i.year()); return a.toJD(t, i.month(), i.day()); }, fromJD: function (t) { var e = a.fromJD(t), r = this._g2tYear(e.year()); return this.newDate(r, e.month(), e.day()); }, _t2gYear: function (t) { return ( t + this.yearsOffset + (t >= -this.yearsOffset && t <= -1 ? 1 : 0) ); }, _g2tYear: function (t) { return ( t - this.yearsOffset - (t >= 1 && t <= this.yearsOffset ? 1 : 0) ); }, }), (n.calendars.taiwan = o); }, { "../main": 347, "object-assign": 247 }, ], 345: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"), a = n.instance(); function o(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } (o.prototype = new n.baseCalendar()), i(o.prototype, { name: "Thai", jdEpoch: 1523098.5, yearsOffset: 543, daysPerMonth: [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Thai", epochs: ["BBE", "BE"], monthNames: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ], dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ], dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", ], dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", ], digits: null, dateFormat: "dd/mm/yyyy", firstDay: 0, isRTL: !1, }, }, leapYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ); t = this._t2gYear(e.year()); return a.leapYear(t); }, weekOfYear: function (t, e, r) { var i = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ); t = this._t2gYear(i.year()); return a.weekOfYear(t, i.month(), i.day()); }, daysInMonth: function (t, e) { var r = this._validate( t, e, this.minDay, n.local.invalidMonth, ); return ( this.daysPerMonth[r.month() - 1] + (2 === r.month() && this.leapYear(r.year()) ? 1 : 0) ); }, weekDay: function (t, e, r) { return (this.dayOfWeek(t, e, r) || 7) < 6; }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate); t = this._t2gYear(i.year()); return a.toJD(t, i.month(), i.day()); }, fromJD: function (t) { var e = a.fromJD(t), r = this._g2tYear(e.year()); return this.newDate(r, e.month(), e.day()); }, _t2gYear: function (t) { return ( t - this.yearsOffset - (t >= 1 && t <= this.yearsOffset ? 1 : 0) ); }, _g2tYear: function (t) { return ( t + this.yearsOffset + (t >= -this.yearsOffset && t <= -1 ? 1 : 0) ); }, }), (n.calendars.thai = o); }, { "../main": 347, "object-assign": 247 }, ], 346: [ function (t, e, r) { var n = t("../main"), i = t("object-assign"); function a(t) { this.local = this.regionalOptions[t || ""] || this.regionalOptions[""]; } (a.prototype = new n.baseCalendar()), i(a.prototype, { name: "UmmAlQura", hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Umm al-Qura", epochs: ["BH", "AH"], monthNames: [ "Al-Muharram", "Safar", "Rabi' al-awwal", "Rabi' Al-Thani", "Jumada Al-Awwal", "Jumada Al-Thani", "Rajab", "Sha'aban", "Ramadan", "Shawwal", "Dhu al-Qi'dah", "Dhu al-Hijjah", ], monthNamesShort: [ "Muh", "Saf", "Rab1", "Rab2", "Jum1", "Jum2", "Raj", "Sha'", "Ram", "Shaw", "DhuQ", "DhuH", ], dayNames: [ "Yawm al-Ahad", "Yawm al-Ithnain", "Yawm al-Thal\u0101th\u0101\u2019", "Yawm al-Arba\u2018\u0101\u2019", "Yawm al-Kham\u012bs", "Yawm al-Jum\u2018a", "Yawm al-Sabt", ], dayNamesMin: [ "Ah", "Ith", "Th", "Ar", "Kh", "Ju", "Sa", ], digits: null, dateFormat: "yyyy/mm/dd", firstDay: 6, isRTL: !0, }, }, leapYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, n.local.invalidYear, ); return 355 === this.daysInYear(e.year()); }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(-n.dayOfWeek(), "d"), Math.floor((n.dayOfYear() - 1) / 7) + 1 ); }, daysInYear: function (t) { for (var e = 0, r = 1; r <= 12; r++) e += this.daysInMonth(t, r); return e; }, daysInMonth: function (t, e) { for ( var r = this._validate( t, e, this.minDay, n.local.invalidMonth, ).toJD() - 24e5 + 0.5, i = 0, a = 0; a < o.length; a++ ) { if (o[a] > r) return o[i] - o[i - 1]; i++; } return 30; }, weekDay: function (t, e, r) { return 5 !== this.dayOfWeek(t, e, r); }, toJD: function (t, e, r) { var i = this._validate(t, e, r, n.local.invalidDate), a = 12 * (i.year() - 1) + i.month() - 15292; return i.day() + o[a - 1] - 1 + 24e5 - 0.5; }, fromJD: function (t) { for ( var e = t - 24e5 + 0.5, r = 0, n = 0; n < o.length && !(o[n] > e); n++ ) r++; var i = r + 15292, a = Math.floor((i - 1) / 12), s = a + 1, l = i - 12 * a, c = e - o[r - 1] + 1; return this.newDate(s, l, c); }, isValid: function (t, e, r) { var i = n.baseCalendar.prototype.isValid.apply( this, arguments, ); return ( i && (i = (t = null != t.year ? t.year : t) >= 1276 && t <= 1500), i ); }, _validate: function (t, e, r, i) { var a = n.baseCalendar.prototype._validate.apply( this, arguments, ); if (a.year < 1276 || a.year > 1500) throw i.replace(/\{0\}/, this.local.name); return a; }, }), (n.calendars.ummalqura = a); var o = [ 20, 50, 79, 109, 138, 168, 197, 227, 256, 286, 315, 345, 374, 404, 433, 463, 492, 522, 551, 581, 611, 641, 670, 700, 729, 759, 788, 818, 847, 877, 906, 936, 965, 995, 1024, 1054, 1083, 1113, 1142, 1172, 1201, 1231, 1260, 1290, 1320, 1350, 1379, 1409, 1438, 1468, 1497, 1527, 1556, 1586, 1615, 1645, 1674, 1704, 1733, 1763, 1792, 1822, 1851, 1881, 1910, 1940, 1969, 1999, 2028, 2058, 2087, 2117, 2146, 2176, 2205, 2235, 2264, 2294, 2323, 2353, 2383, 2413, 2442, 2472, 2501, 2531, 2560, 2590, 2619, 2649, 2678, 2708, 2737, 2767, 2796, 2826, 2855, 2885, 2914, 2944, 2973, 3003, 3032, 3062, 3091, 3121, 3150, 3180, 3209, 3239, 3268, 3298, 3327, 3357, 3386, 3416, 3446, 3476, 3505, 3535, 3564, 3594, 3623, 3653, 3682, 3712, 3741, 3771, 3800, 3830, 3859, 3889, 3918, 3948, 3977, 4007, 4036, 4066, 4095, 4125, 4155, 4185, 4214, 4244, 4273, 4303, 4332, 4362, 4391, 4421, 4450, 4480, 4509, 4539, 4568, 4598, 4627, 4657, 4686, 4716, 4745, 4775, 4804, 4834, 4863, 4893, 4922, 4952, 4981, 5011, 5040, 5070, 5099, 5129, 5158, 5188, 5218, 5248, 5277, 5307, 5336, 5366, 5395, 5425, 5454, 5484, 5513, 5543, 5572, 5602, 5631, 5661, 5690, 5720, 5749, 5779, 5808, 5838, 5867, 5897, 5926, 5956, 5985, 6015, 6044, 6074, 6103, 6133, 6162, 6192, 6221, 6251, 6281, 6311, 6340, 6370, 6399, 6429, 6458, 6488, 6517, 6547, 6576, 6606, 6635, 6665, 6694, 6724, 6753, 6783, 6812, 6842, 6871, 6901, 6930, 6960, 6989, 7019, 7048, 7078, 7107, 7137, 7166, 7196, 7225, 7255, 7284, 7314, 7344, 7374, 7403, 7433, 7462, 7492, 7521, 7551, 7580, 7610, 7639, 7669, 7698, 7728, 7757, 7787, 7816, 7846, 7875, 7905, 7934, 7964, 7993, 8023, 8053, 8083, 8112, 8142, 8171, 8201, 8230, 8260, 8289, 8319, 8348, 8378, 8407, 8437, 8466, 8496, 8525, 8555, 8584, 8614, 8643, 8673, 8702, 8732, 8761, 8791, 8821, 8850, 8880, 8909, 8938, 8968, 8997, 9027, 9056, 9086, 9115, 9145, 9175, 9205, 9234, 9264, 9293, 9322, 9352, 9381, 9410, 9440, 9470, 9499, 9529, 9559, 9589, 9618, 9648, 9677, 9706, 9736, 9765, 9794, 9824, 9853, 9883, 9913, 9943, 9972, 10002, 10032, 10061, 10090, 10120, 10149, 10178, 10208, 10237, 10267, 10297, 10326, 10356, 10386, 10415, 10445, 10474, 10504, 10533, 10562, 10592, 10621, 10651, 10680, 10710, 10740, 10770, 10799, 10829, 10858, 10888, 10917, 10947, 10976, 11005, 11035, 11064, 11094, 11124, 11153, 11183, 11213, 11242, 11272, 11301, 11331, 11360, 11389, 11419, 11448, 11478, 11507, 11537, 11567, 11596, 11626, 11655, 11685, 11715, 11744, 11774, 11803, 11832, 11862, 11891, 11921, 11950, 11980, 12010, 12039, 12069, 12099, 12128, 12158, 12187, 12216, 12246, 12275, 12304, 12334, 12364, 12393, 12423, 12453, 12483, 12512, 12542, 12571, 12600, 12630, 12659, 12688, 12718, 12747, 12777, 12807, 12837, 12866, 12896, 12926, 12955, 12984, 13014, 13043, 13072, 13102, 13131, 13161, 13191, 13220, 13250, 13280, 13310, 13339, 13368, 13398, 13427, 13456, 13486, 13515, 13545, 13574, 13604, 13634, 13664, 13693, 13723, 13752, 13782, 13811, 13840, 13870, 13899, 13929, 13958, 13988, 14018, 14047, 14077, 14107, 14136, 14166, 14195, 14224, 14254, 14283, 14313, 14342, 14372, 14401, 14431, 14461, 14490, 14520, 14550, 14579, 14609, 14638, 14667, 14697, 14726, 14756, 14785, 14815, 14844, 14874, 14904, 14933, 14963, 14993, 15021, 15051, 15081, 15110, 15140, 15169, 15199, 15228, 15258, 15287, 15317, 15347, 15377, 15406, 15436, 15465, 15494, 15524, 15553, 15582, 15612, 15641, 15671, 15701, 15731, 15760, 15790, 15820, 15849, 15878, 15908, 15937, 15966, 15996, 16025, 16055, 16085, 16114, 16144, 16174, 16204, 16233, 16262, 16292, 16321, 16350, 16380, 16409, 16439, 16468, 16498, 16528, 16558, 16587, 16617, 16646, 16676, 16705, 16734, 16764, 16793, 16823, 16852, 16882, 16912, 16941, 16971, 17001, 17030, 17060, 17089, 17118, 17148, 17177, 17207, 17236, 17266, 17295, 17325, 17355, 17384, 17414, 17444, 17473, 17502, 17532, 17561, 17591, 17620, 17650, 17679, 17709, 17738, 17768, 17798, 17827, 17857, 17886, 17916, 17945, 17975, 18004, 18034, 18063, 18093, 18122, 18152, 18181, 18211, 18241, 18270, 18300, 18330, 18359, 18388, 18418, 18447, 18476, 18506, 18535, 18565, 18595, 18625, 18654, 18684, 18714, 18743, 18772, 18802, 18831, 18860, 18890, 18919, 18949, 18979, 19008, 19038, 19068, 19098, 19127, 19156, 19186, 19215, 19244, 19274, 19303, 19333, 19362, 19392, 19422, 19452, 19481, 19511, 19540, 19570, 19599, 19628, 19658, 19687, 19717, 19746, 19776, 19806, 19836, 19865, 19895, 19924, 19954, 19983, 20012, 20042, 20071, 20101, 20130, 20160, 20190, 20219, 20249, 20279, 20308, 20338, 20367, 20396, 20426, 20455, 20485, 20514, 20544, 20573, 20603, 20633, 20662, 20692, 20721, 20751, 20780, 20810, 20839, 20869, 20898, 20928, 20957, 20987, 21016, 21046, 21076, 21105, 21135, 21164, 21194, 21223, 21253, 21282, 21312, 21341, 21371, 21400, 21430, 21459, 21489, 21519, 21548, 21578, 21607, 21637, 21666, 21696, 21725, 21754, 21784, 21813, 21843, 21873, 21902, 21932, 21962, 21991, 22021, 22050, 22080, 22109, 22138, 22168, 22197, 22227, 22256, 22286, 22316, 22346, 22375, 22405, 22434, 22464, 22493, 22522, 22552, 22581, 22611, 22640, 22670, 22700, 22730, 22759, 22789, 22818, 22848, 22877, 22906, 22936, 22965, 22994, 23024, 23054, 23083, 23113, 23143, 23173, 23202, 23232, 23261, 23290, 23320, 23349, 23379, 23408, 23438, 23467, 23497, 23527, 23556, 23586, 23616, 23645, 23674, 23704, 23733, 23763, 23792, 23822, 23851, 23881, 23910, 23940, 23970, 23999, 24029, 24058, 24088, 24117, 24147, 24176, 24206, 24235, 24265, 24294, 24324, 24353, 24383, 24413, 24442, 24472, 24501, 24531, 24560, 24590, 24619, 24648, 24678, 24707, 24737, 24767, 24796, 24826, 24856, 24885, 24915, 24944, 24974, 25003, 25032, 25062, 25091, 25121, 25150, 25180, 25210, 25240, 25269, 25299, 25328, 25358, 25387, 25416, 25446, 25475, 25505, 25534, 25564, 25594, 25624, 25653, 25683, 25712, 25742, 25771, 25800, 25830, 25859, 25888, 25918, 25948, 25977, 26007, 26037, 26067, 26096, 26126, 26155, 26184, 26214, 26243, 26272, 26302, 26332, 26361, 26391, 26421, 26451, 26480, 26510, 26539, 26568, 26598, 26627, 26656, 26686, 26715, 26745, 26775, 26805, 26834, 26864, 26893, 26923, 26952, 26982, 27011, 27041, 27070, 27099, 27129, 27159, 27188, 27218, 27248, 27277, 27307, 27336, 27366, 27395, 27425, 27454, 27484, 27513, 27542, 27572, 27602, 27631, 27661, 27691, 27720, 27750, 27779, 27809, 27838, 27868, 27897, 27926, 27956, 27985, 28015, 28045, 28074, 28104, 28134, 28163, 28193, 28222, 28252, 28281, 28310, 28340, 28369, 28399, 28428, 28458, 28488, 28517, 28547, 28577, 28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711, 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027, 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342, 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657, 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973, 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288, 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603, 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68e3, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919, 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235, 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990, ]; }, { "../main": 347, "object-assign": 247 }, ], 347: [ function (t, e, r) { var n = t("object-assign"); function i() { (this.regionalOptions = []), (this.regionalOptions[""] = { invalidCalendar: "Calendar {0} not found", invalidDate: "Invalid {0} date", invalidMonth: "Invalid {0} month", invalidYear: "Invalid {0} year", differentCalendars: "Cannot mix {0} and {1} dates", }), (this.local = this.regionalOptions[""]), (this.calendars = {}), (this._localCals = {}); } function a(t, e, r, n) { if ( ((this._calendar = t), (this._year = e), (this._month = r), (this._day = n), 0 === this._calendar._validateLevel && !this._calendar.isValid( this._year, this._month, this._day, )) ) throw ( c.local.invalidDate || c.regionalOptions[""].invalidDate ).replace(/\{0\}/, this._calendar.local.name); } function o(t, e) { return "000000".substring(0, e - (t = "" + t).length) + t; } function s() { this.shortYearCutoff = "+10"; } function l(t) { this.local = this.regionalOptions[t] || this.regionalOptions[""]; } n(i.prototype, { instance: function (t, e) { (t = (t || "gregorian").toLowerCase()), (e = e || ""); var r = this._localCals[t + "-" + e]; if ( (!r && this.calendars[t] && ((r = new this.calendars[t](e)), (this._localCals[t + "-" + e] = r)), !r) ) throw ( this.local.invalidCalendar || this.regionalOptions[""].invalidCalendar ).replace(/\{0\}/, t); return r; }, newDate: function (t, e, r, n, i) { return (n = (null != t && t.year ? t.calendar() : "string" == typeof n ? this.instance(n, i) : n) || this.instance()).newDate(t, e, r); }, substituteDigits: function (t) { return function (e) { return (e + "").replace(/[0-9]/g, function (e) { return t[e]; }); }; }, substituteChineseDigits: function (t, e) { return function (r) { for (var n = "", i = 0; r > 0; ) { var a = r % 10; (n = (0 === a ? "" : t[a] + e[i]) + n), i++, (r = Math.floor(r / 10)); } return ( 0 === n.indexOf(t[1] + e[1]) && (n = n.substr(1)), n || t[0] ); }; }, }), n(a.prototype, { newDate: function (t, e, r) { return this._calendar.newDate( null == t ? this : t, e, r, ); }, year: function (t) { return 0 === arguments.length ? this._year : this.set(t, "y"); }, month: function (t) { return 0 === arguments.length ? this._month : this.set(t, "m"); }, day: function (t) { return 0 === arguments.length ? this._day : this.set(t, "d"); }, date: function (t, e, r) { if (!this._calendar.isValid(t, e, r)) throw ( c.local.invalidDate || c.regionalOptions[""].invalidDate ).replace(/\{0\}/, this._calendar.local.name); return ( (this._year = t), (this._month = e), (this._day = r), this ); }, leapYear: function () { return this._calendar.leapYear(this); }, epoch: function () { return this._calendar.epoch(this); }, formatYear: function () { return this._calendar.formatYear(this); }, monthOfYear: function () { return this._calendar.monthOfYear(this); }, weekOfYear: function () { return this._calendar.weekOfYear(this); }, daysInYear: function () { return this._calendar.daysInYear(this); }, dayOfYear: function () { return this._calendar.dayOfYear(this); }, daysInMonth: function () { return this._calendar.daysInMonth(this); }, dayOfWeek: function () { return this._calendar.dayOfWeek(this); }, weekDay: function () { return this._calendar.weekDay(this); }, extraInfo: function () { return this._calendar.extraInfo(this); }, add: function (t, e) { return this._calendar.add(this, t, e); }, set: function (t, e) { return this._calendar.set(this, t, e); }, compareTo: function (t) { if (this._calendar.name !== t._calendar.name) throw ( c.local.differentCalendars || c.regionalOptions[""].differentCalendars ) .replace(/\{0\}/, this._calendar.local.name) .replace(/\{1\}/, t._calendar.local.name); var e = this._year !== t._year ? this._year - t._year : this._month !== t._month ? this.monthOfYear() - t.monthOfYear() : this._day - t._day; return 0 === e ? 0 : e < 0 ? -1 : 1; }, calendar: function () { return this._calendar; }, toJD: function () { return this._calendar.toJD(this); }, fromJD: function (t) { return this._calendar.fromJD(t); }, toJSDate: function () { return this._calendar.toJSDate(this); }, fromJSDate: function (t) { return this._calendar.fromJSDate(t); }, toString: function () { return ( (this.year() < 0 ? "-" : "") + o(Math.abs(this.year()), 4) + "-" + o(this.month(), 2) + "-" + o(this.day(), 2) ); }, }), n(s.prototype, { _validateLevel: 0, newDate: function (t, e, r) { return null == t ? this.today() : (t.year && (this._validate( t, e, r, c.local.invalidDate || c.regionalOptions[""].invalidDate, ), (r = t.day()), (e = t.month()), (t = t.year())), new a(this, t, e, r)); }, today: function () { return this.fromJSDate(new Date()); }, epoch: function (t) { return this._validate( t, this.minMonth, this.minDay, c.local.invalidYear || c.regionalOptions[""].invalidYear, ).year() < 0 ? this.local.epochs[0] : this.local.epochs[1]; }, formatYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, c.local.invalidYear || c.regionalOptions[""].invalidYear, ); return ( (e.year() < 0 ? "-" : "") + o(Math.abs(e.year()), 4) ); }, monthsInYear: function (t) { return ( this._validate( t, this.minMonth, this.minDay, c.local.invalidYear || c.regionalOptions[""].invalidYear, ), 12 ); }, monthOfYear: function (t, e) { var r = this._validate( t, e, this.minDay, c.local.invalidMonth || c.regionalOptions[""].invalidMonth, ); return ( ((r.month() + this.monthsInYear(r) - this.firstMonth) % this.monthsInYear(r)) + this.minMonth ); }, fromMonthOfYear: function (t, e) { var r = ((e + this.firstMonth - 2 * this.minMonth) % this.monthsInYear(t)) + this.minMonth; return ( this._validate( t, r, this.minDay, c.local.invalidMonth || c.regionalOptions[""].invalidMonth, ), r ); }, daysInYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, c.local.invalidYear || c.regionalOptions[""].invalidYear, ); return this.leapYear(e) ? 366 : 365; }, dayOfYear: function (t, e, r) { var n = this._validate( t, e, r, c.local.invalidDate || c.regionalOptions[""].invalidDate, ); return ( n.toJD() - this.newDate( n.year(), this.fromMonthOfYear(n.year(), this.minMonth), this.minDay, ).toJD() + 1 ); }, daysInWeek: function () { return 7; }, dayOfWeek: function (t, e, r) { var n = this._validate( t, e, r, c.local.invalidDate || c.regionalOptions[""].invalidDate, ); return ( (Math.floor(this.toJD(n)) + 2) % this.daysInWeek() ); }, extraInfo: function (t, e, r) { return ( this._validate( t, e, r, c.local.invalidDate || c.regionalOptions[""].invalidDate, ), {} ); }, add: function (t, e, r) { return ( this._validate( t, this.minMonth, this.minDay, c.local.invalidDate || c.regionalOptions[""].invalidDate, ), this._correctAdd(t, this._add(t, e, r), e, r) ); }, _add: function (t, e, r) { if ((this._validateLevel++, "d" === r || "w" === r)) { var n = t.toJD() + e * ("w" === r ? this.daysInWeek() : 1), i = t.calendar().fromJD(n); return ( this._validateLevel--, [i.year(), i.month(), i.day()] ); } try { var a = t.year() + ("y" === r ? e : 0), o = t.monthOfYear() + ("m" === r ? e : 0); i = t.day(); "y" === r ? (t.month() !== this.fromMonthOfYear(a, o) && (o = this.newDate( a, t.month(), this.minDay, ).monthOfYear()), (o = Math.min(o, this.monthsInYear(a))), (i = Math.min( i, this.daysInMonth(a, this.fromMonthOfYear(a, o)), ))) : "m" === r && (!(function (t) { for (; o < t.minMonth; ) a--, (o += t.monthsInYear(a)); for ( var e = t.monthsInYear(a); o > e - 1 + t.minMonth; ) a++, (o -= e), (e = t.monthsInYear(a)); })(this), (i = Math.min( i, this.daysInMonth(a, this.fromMonthOfYear(a, o)), ))); var s = [a, this.fromMonthOfYear(a, o), i]; return this._validateLevel--, s; } catch (t) { throw (this._validateLevel--, t); } }, _correctAdd: function (t, e, r, n) { if ( !( this.hasYearZero || ("y" !== n && "m" !== n) || (0 !== e[0] && t.year() > 0 == e[0] > 0) ) ) { var i = { y: [1, 1, "y"], m: [1, this.monthsInYear(-1), "m"], w: [this.daysInWeek(), this.daysInYear(-1), "d"], d: [1, this.daysInYear(-1), "d"], }[n], a = r < 0 ? -1 : 1; e = this._add(t, r * i[0] + a * i[1], i[2]); } return t.date(e[0], e[1], e[2]); }, set: function (t, e, r) { this._validate( t, this.minMonth, this.minDay, c.local.invalidDate || c.regionalOptions[""].invalidDate, ); var n = "y" === r ? e : t.year(), i = "m" === r ? e : t.month(), a = "d" === r ? e : t.day(); return ( ("y" !== r && "m" !== r) || (a = Math.min(a, this.daysInMonth(n, i))), t.date(n, i, a) ); }, isValid: function (t, e, r) { this._validateLevel++; var n = this.hasYearZero || 0 !== t; if (n) { var i = this.newDate(t, e, this.minDay); n = e >= this.minMonth && e - this.minMonth < this.monthsInYear(i) && r >= this.minDay && r - this.minDay < this.daysInMonth(i); } return this._validateLevel--, n; }, toJSDate: function (t, e, r) { var n = this._validate( t, e, r, c.local.invalidDate || c.regionalOptions[""].invalidDate, ); return c.instance().fromJD(this.toJD(n)).toJSDate(); }, fromJSDate: function (t) { return this.fromJD(c.instance().fromJSDate(t).toJD()); }, _validate: function (t, e, r, n) { if (t.year) { if ( 0 === this._validateLevel && this.name !== t.calendar().name ) throw ( c.local.differentCalendars || c.regionalOptions[""].differentCalendars ) .replace(/\{0\}/, this.local.name) .replace(/\{1\}/, t.calendar().local.name); return t; } try { if ( (this._validateLevel++, 1 === this._validateLevel && !this.isValid(t, e, r)) ) throw n.replace(/\{0\}/, this.local.name); var i = this.newDate(t, e, r); return this._validateLevel--, i; } catch (t) { throw (this._validateLevel--, t); } }, }), (l.prototype = new s()), n(l.prototype, { name: "Gregorian", jdEpoch: 1721425.5, daysPerMonth: [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, ], hasYearZero: !1, minMonth: 1, firstMonth: 1, minDay: 1, regionalOptions: { "": { name: "Gregorian", epochs: ["BCE", "CE"], monthNames: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ], monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ], dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ], dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", ], dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", ], digits: null, dateFormat: "mm/dd/yyyy", firstDay: 0, isRTL: !1, }, }, leapYear: function (t) { var e = this._validate( t, this.minMonth, this.minDay, c.local.invalidYear || c.regionalOptions[""].invalidYear, ); return ( (t = e.year() + (e.year() < 0 ? 1 : 0)) % 4 == 0 && (t % 100 != 0 || t % 400 == 0) ); }, weekOfYear: function (t, e, r) { var n = this.newDate(t, e, r); return ( n.add(4 - (n.dayOfWeek() || 7), "d"), Math.floor((n.dayOfYear() - 1) / 7) + 1 ); }, daysInMonth: function (t, e) { var r = this._validate( t, e, this.minDay, c.local.invalidMonth || c.regionalOptions[""].invalidMonth, ); return ( this.daysPerMonth[r.month() - 1] + (2 === r.month() && this.leapYear(r.year()) ? 1 : 0) ); }, weekDay: function (t, e, r) { return (this.dayOfWeek(t, e, r) || 7) < 6; }, toJD: function (t, e, r) { var n = this._validate( t, e, r, c.local.invalidDate || c.regionalOptions[""].invalidDate, ); (t = n.year()), (e = n.month()), (r = n.day()), t < 0 && t++, e < 3 && ((e += 12), t--); var i = Math.floor(t / 100), a = 2 - i + Math.floor(i / 4); return ( Math.floor(365.25 * (t + 4716)) + Math.floor(30.6001 * (e + 1)) + r + a - 1524.5 ); }, fromJD: function (t) { var e = Math.floor(t + 0.5), r = Math.floor((e - 1867216.25) / 36524.25), n = (r = e + 1 + r - Math.floor(r / 4)) + 1524, i = Math.floor((n - 122.1) / 365.25), a = Math.floor(365.25 * i), o = Math.floor((n - a) / 30.6001), s = n - a - Math.floor(30.6001 * o), l = o - (o > 13.5 ? 13 : 1), c = i - (l > 2.5 ? 4716 : 4715); return c <= 0 && c--, this.newDate(c, l, s); }, toJSDate: function (t, e, r) { var n = this._validate( t, e, r, c.local.invalidDate || c.regionalOptions[""].invalidDate, ), i = new Date(n.year(), n.month() - 1, n.day()); return ( i.setHours(0), i.setMinutes(0), i.setSeconds(0), i.setMilliseconds(0), i.setHours(i.getHours() > 12 ? i.getHours() + 2 : 0), i ); }, fromJSDate: function (t) { return this.newDate( t.getFullYear(), t.getMonth() + 1, t.getDate(), ); }, }); var c = (e.exports = new i()); (c.cdate = a), (c.baseCalendar = s), (c.calendars.gregorian = l); }, { "object-assign": 247 }, ], 348: [ function (t, e, r) { var n = t("object-assign"), i = t("./main"); n(i.regionalOptions[""], { invalidArguments: "Invalid arguments", invalidFormat: "Cannot format a date from another calendar", missingNumberAt: "Missing number at position {0}", unknownNameAt: "Unknown name at position {0}", unexpectedLiteralAt: "Unexpected literal at position {0}", unexpectedText: "Additional text found at end", }), (i.local = i.regionalOptions[""]), n(i.cdate.prototype, { formatDate: function (t, e) { return ( "string" != typeof t && ((e = t), (t = "")), this._calendar.formatDate(t || "", this, e) ); }, }), n(i.baseCalendar.prototype, { UNIX_EPOCH: i.instance().newDate(1970, 1, 1).toJD(), SECS_PER_DAY: 86400, TICKS_EPOCH: i.instance().jdEpoch, TICKS_PER_DAY: 864e9, ATOM: "yyyy-mm-dd", COOKIE: "D, dd M yyyy", FULL: "DD, MM d, yyyy", ISO_8601: "yyyy-mm-dd", JULIAN: "J", RFC_822: "D, d M yy", RFC_850: "DD, dd-M-yy", RFC_1036: "D, d M yy", RFC_1123: "D, d M yyyy", RFC_2822: "D, d M yyyy", RSS: "D, d M yy", TICKS: "!", TIMESTAMP: "@", W3C: "yyyy-mm-dd", formatDate: function (t, e, r) { if ( ("string" != typeof t && ((r = e), (e = t), (t = "")), !e) ) return ""; if (e.calendar() !== this) throw ( i.local.invalidFormat || i.regionalOptions[""].invalidFormat ); t = t || this.local.dateFormat; for ( var n, a, o, s, l = (r = r || {}).dayNamesShort || this.local.dayNamesShort, c = r.dayNames || this.local.dayNames, u = r.monthNumbers || this.local.monthNumbers, f = r.monthNamesShort || this.local.monthNamesShort, h = r.monthNames || this.local.monthNames, p = (r.calculateWeek || this.local.calculateWeek, function (e, r) { for ( var n = 1; w + n < t.length && t.charAt(w + n) === e; ) n++; return ( (w += n - 1), Math.floor(n / (r || 1)) > 1 ); }), d = function (t, e, r, n) { var i = "" + e; if (p(t, n)) for (; i.length < r; ) i = "0" + i; return i; }, m = this, g = function (t) { return "function" == typeof u ? u.call(m, t, p("m")) : x(d("m", t.month(), 2)); }, v = function (t, e) { return e ? "function" == typeof h ? h.call(m, t) : h[t.month() - m.minMonth] : "function" == typeof f ? f.call(m, t) : f[t.month() - m.minMonth]; }, y = this.local.digits, x = function (t) { return r.localNumbers && y ? y(t) : t; }, b = "", _ = !1, w = 0; w < t.length; w++ ) if (_) "'" !== t.charAt(w) || p("'") ? (b += t.charAt(w)) : (_ = !1); else switch (t.charAt(w)) { case "d": b += x(d("d", e.day(), 2)); break; case "D": b += ((n = "D"), (a = e.dayOfWeek()), (o = l), (s = c), p(n) ? s[a] : o[a]); break; case "o": b += d("o", e.dayOfYear(), 3); break; case "w": b += d("w", e.weekOfYear(), 2); break; case "m": b += g(e); break; case "M": b += v(e, p("M")); break; case "y": b += p("y", 2) ? e.year() : (e.year() % 100 < 10 ? "0" : "") + (e.year() % 100); break; case "Y": p("Y", 2), (b += e.formatYear()); break; case "J": b += e.toJD(); break; case "@": b += (e.toJD() - this.UNIX_EPOCH) * this.SECS_PER_DAY; break; case "!": b += (e.toJD() - this.TICKS_EPOCH) * this.TICKS_PER_DAY; break; case "'": p("'") ? (b += "'") : (_ = !0); break; default: b += t.charAt(w); } return b; }, parseDate: function (t, e, r) { if (null == e) throw ( i.local.invalidArguments || i.regionalOptions[""].invalidArguments ); if ( "" === (e = "object" == typeof e ? e.toString() : e + "") ) return null; t = t || this.local.dateFormat; var n = (r = r || {}).shortYearCutoff || this.shortYearCutoff; n = "string" != typeof n ? n : (this.today().year() % 100) + parseInt(n, 10); for ( var a = r.dayNamesShort || this.local.dayNamesShort, o = r.dayNames || this.local.dayNames, s = r.parseMonth || this.local.parseMonth, l = r.monthNumbers || this.local.monthNumbers, c = r.monthNamesShort || this.local.monthNamesShort, u = r.monthNames || this.local.monthNames, f = -1, h = -1, p = -1, d = -1, m = -1, g = !1, v = !1, y = function (e, r) { for ( var n = 1; M + n < t.length && t.charAt(M + n) === e; ) n++; return (M += n - 1), Math.floor(n / (r || 1)) > 1; }, x = function (t, r) { var n = y(t, r), a = [2, 3, n ? 4 : 2, n ? 4 : 2, 10, 11, 20][ "oyYJ@!".indexOf(t) + 1 ], o = new RegExp("^-?\\d{1," + a + "}"), s = e.substring(A).match(o); if (!s) throw ( i.local.missingNumberAt || i.regionalOptions[""].missingNumberAt ).replace(/\{0\}/, A); return (A += s[0].length), parseInt(s[0], 10); }, b = this, _ = function () { if ("function" == typeof l) { y("m"); var t = l.call(b, e.substring(A)); return (A += t.length), t; } return x("m"); }, w = function (t, r, n, a) { for ( var o = y(t, a) ? n : r, s = 0; s < o.length; s++ ) if ( e.substr(A, o[s].length).toLowerCase() === o[s].toLowerCase() ) return (A += o[s].length), s + b.minMonth; throw ( i.local.unknownNameAt || i.regionalOptions[""].unknownNameAt ).replace(/\{0\}/, A); }, T = function () { if ("function" == typeof u) { var t = y("M") ? u.call(b, e.substring(A)) : c.call(b, e.substring(A)); return (A += t.length), t; } return w("M", c, u); }, k = function () { if (e.charAt(A) !== t.charAt(M)) throw ( i.local.unexpectedLiteralAt || i.regionalOptions[""].unexpectedLiteralAt ).replace(/\{0\}/, A); A++; }, A = 0, M = 0; M < t.length; M++ ) if (v) "'" !== t.charAt(M) || y("'") ? k() : (v = !1); else switch (t.charAt(M)) { case "d": d = x("d"); break; case "D": w("D", a, o); break; case "o": m = x("o"); break; case "w": x("w"); break; case "m": p = _(); break; case "M": p = T(); break; case "y": var S = M; (g = !y("y", 2)), (M = S), (h = x("y", 2)); break; case "Y": h = x("Y", 2); break; case "J": (f = x("J") + 0.5), "." === e.charAt(A) && (A++, x("J")); break; case "@": f = x("@") / this.SECS_PER_DAY + this.UNIX_EPOCH; break; case "!": f = x("!") / this.TICKS_PER_DAY + this.TICKS_EPOCH; break; case "*": A = e.length; break; case "'": y("'") ? k() : (v = !0); break; default: k(); } if (A < e.length) throw ( i.local.unexpectedText || i.regionalOptions[""].unexpectedText ); if ( (-1 === h ? (h = this.today().year()) : h < 100 && g && (h += -1 === n ? 1900 : this.today().year() - (this.today().year() % 100) - (h <= n ? 0 : 100)), "string" == typeof p && (p = s.call(this, h, p)), m > -1) ) { (p = 1), (d = m); for ( var E = this.daysInMonth(h, p); d > E; E = this.daysInMonth(h, p) ) p++, (d -= E); } return f > -1 ? this.fromJD(f) : this.newDate(h, p, d); }, determineDate: function (t, e, r, n, i) { r && "object" != typeof r && ((i = n), (n = r), (r = null)), "string" != typeof n && ((i = n), (n = "")); var a = this; return ( (e = e ? e.newDate() : null), (t = null == t ? e : "string" == typeof t ? (function (t) { try { return a.parseDate(n, t, i); } catch (t) {} for ( var e = ((t = t.toLowerCase()).match(/^c/) && r ? r.newDate() : null) || a.today(), o = /([+-]?[0-9]+)\s*(d|w|m|y)?/g, s = o.exec(t); s; ) e.add(parseInt(s[1], 10), s[2] || "d"), (s = o.exec(t)); return e; })(t) : "number" == typeof t ? isNaN(t) || t === 1 / 0 || t === -1 / 0 ? e : a.today().add(t, "d") : a.newDate(t)) ); }, }); }, { "./main": 347, "object-assign": 247 }, ], 349: [ function (t, e, r) { "use strict"; e.exports = [ { path: "", backoff: 0 }, { path: "M-2.4,-3V3L0.6,0Z", backoff: 0.6 }, { path: "M-3.7,-2.5V2.5L1.3,0Z", backoff: 1.3 }, { path: "M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z", backoff: 1.55, }, { path: "M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z", backoff: 1.6, }, { path: "M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z", backoff: 2, }, { path: "M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z", backoff: 0, noRotate: !0, }, { path: "M2,2V-2H-2V2Z", backoff: 0, noRotate: !0 }, ]; }, {}, ], 350: [ function (t, e, r) { "use strict"; var n = t("./arrow_paths"), i = t("../../plots/font_attributes"), a = t("../../plots/cartesian/constants"), o = t("../../plot_api/plot_template").templatedArray; t("../../constants/axis_placeable_objects"); e.exports = o("annotation", { visible: { valType: "boolean", dflt: !0, editType: "calc+arraydraw", }, text: { valType: "string", editType: "calc+arraydraw" }, textangle: { valType: "angle", dflt: 0, editType: "calc+arraydraw", }, font: i({ editType: "calc+arraydraw", colorEditType: "arraydraw", }), width: { valType: "number", min: 1, dflt: null, editType: "calc+arraydraw", }, height: { valType: "number", min: 1, dflt: null, editType: "calc+arraydraw", }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, editType: "arraydraw", }, align: { valType: "enumerated", values: ["left", "center", "right"], dflt: "center", editType: "arraydraw", }, valign: { valType: "enumerated", values: ["top", "middle", "bottom"], dflt: "middle", editType: "arraydraw", }, bgcolor: { valType: "color", dflt: "rgba(0,0,0,0)", editType: "arraydraw", }, bordercolor: { valType: "color", dflt: "rgba(0,0,0,0)", editType: "arraydraw", }, borderpad: { valType: "number", min: 0, dflt: 1, editType: "calc+arraydraw", }, borderwidth: { valType: "number", min: 0, dflt: 1, editType: "calc+arraydraw", }, showarrow: { valType: "boolean", dflt: !0, editType: "calc+arraydraw", }, arrowcolor: { valType: "color", editType: "arraydraw" }, arrowhead: { valType: "integer", min: 0, max: n.length, dflt: 1, editType: "arraydraw", }, startarrowhead: { valType: "integer", min: 0, max: n.length, dflt: 1, editType: "arraydraw", }, arrowside: { valType: "flaglist", flags: ["end", "start"], extras: ["none"], dflt: "end", editType: "arraydraw", }, arrowsize: { valType: "number", min: 0.3, dflt: 1, editType: "calc+arraydraw", }, startarrowsize: { valType: "number", min: 0.3, dflt: 1, editType: "calc+arraydraw", }, arrowwidth: { valType: "number", min: 0.1, editType: "calc+arraydraw", }, standoff: { valType: "number", min: 0, dflt: 0, editType: "calc+arraydraw", }, startstandoff: { valType: "number", min: 0, dflt: 0, editType: "calc+arraydraw", }, ax: { valType: "any", editType: "calc+arraydraw" }, ay: { valType: "any", editType: "calc+arraydraw" }, axref: { valType: "enumerated", dflt: "pixel", values: ["pixel", a.idRegex.x.toString()], editType: "calc", }, ayref: { valType: "enumerated", dflt: "pixel", values: ["pixel", a.idRegex.y.toString()], editType: "calc", }, xref: { valType: "enumerated", values: ["paper", a.idRegex.x.toString()], editType: "calc", }, x: { valType: "any", editType: "calc+arraydraw" }, xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "auto", editType: "calc+arraydraw", }, xshift: { valType: "number", dflt: 0, editType: "calc+arraydraw", }, yref: { valType: "enumerated", values: ["paper", a.idRegex.y.toString()], editType: "calc", }, y: { valType: "any", editType: "calc+arraydraw" }, yanchor: { valType: "enumerated", values: ["auto", "top", "middle", "bottom"], dflt: "auto", editType: "calc+arraydraw", }, yshift: { valType: "number", dflt: 0, editType: "calc+arraydraw", }, clicktoshow: { valType: "enumerated", values: [!1, "onoff", "onout"], dflt: !1, editType: "arraydraw", }, xclick: { valType: "any", editType: "arraydraw" }, yclick: { valType: "any", editType: "arraydraw" }, hovertext: { valType: "string", editType: "arraydraw" }, hoverlabel: { bgcolor: { valType: "color", editType: "arraydraw" }, bordercolor: { valType: "color", editType: "arraydraw" }, font: i({ editType: "arraydraw" }), editType: "arraydraw", }, captureevents: { valType: "boolean", editType: "arraydraw", }, editType: "calc", _deprecated: { ref: { valType: "string", editType: "calc" }, }, }); }, { "../../constants/axis_placeable_objects": 484, "../../plot_api/plot_template": 555, "../../plots/cartesian/constants": 573, "../../plots/font_attributes": 594, "./arrow_paths": 349, }, ], 351: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"), a = t("./draw").draw; function o(t) { var e = t._fullLayout; n.filterVisible(e.annotations).forEach(function (e) { var r = i.getFromId(t, e.xref), n = i.getFromId(t, e.yref), a = i.getRefType(e.xref), o = i.getRefType(e.yref); (e._extremes = {}), "range" === a && s(e, r), "range" === o && s(e, n); }); } function s(t, e) { var r, n = e._id, a = n.charAt(0), o = t[a], s = t["a" + a], l = t[a + "ref"], c = t["a" + a + "ref"], u = t["_" + a + "padplus"], f = t["_" + a + "padminus"], h = { x: 1, y: -1 }[a] * t[a + "shift"], p = 3 * t.arrowsize * t.arrowwidth || 0, d = p + h, m = p - h, g = 3 * t.startarrowsize * t.arrowwidth || 0, v = g + h, y = g - h; if (c === l) { var x = i.findExtremes(e, [e.r2c(o)], { ppadplus: d, ppadminus: m, }), b = i.findExtremes(e, [e.r2c(s)], { ppadplus: Math.max(u, v), ppadminus: Math.max(f, y), }); r = { min: [x.min[0], b.min[0]], max: [x.max[0], b.max[0]], }; } else (v = s ? v + s : v), (y = s ? y - s : y), (r = i.findExtremes(e, [e.r2c(o)], { ppadplus: Math.max(u, d, v), ppadminus: Math.max(f, m, y), })); t._extremes[n] = r; } e.exports = function (t) { var e = t._fullLayout; if ( n.filterVisible(e.annotations).length && t._fullData.length ) return n.syncOrAsync([a, o], t); }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "./draw": 356, }, ], 352: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../registry"), a = t("../../plot_api/plot_template").arrayEditor; function o(t, e) { var r, n, i, a, o, l, c, u = t._fullLayout.annotations, f = [], h = [], p = [], d = (e || []).length; for (r = 0; r < u.length; r++) if ((a = (i = u[r]).clicktoshow)) { for (n = 0; n < d; n++) if ( ((l = (o = e[n]).xaxis), (c = o.yaxis), l._id === i.xref && c._id === i.yref && l.d2r(o.x) === s(i._xclick, l) && c.d2r(o.y) === s(i._yclick, c)) ) { (i.visible ? ("onout" === a ? h : p) : f).push(r); break; } n === d && i.visible && "onout" === a && h.push(r); } return { on: f, off: h, explicitOff: p }; } function s(t, e) { return "log" === e.type ? e.l2r(t) : e.d2r(t); } e.exports = { hasClickToShow: function (t, e) { var r = o(t, e); return r.on.length > 0 || r.explicitOff.length > 0; }, onClick: function (t, e) { var r, s, l = o(t, e), c = l.on, u = l.off.concat(l.explicitOff), f = {}, h = t._fullLayout.annotations; if (!c.length && !u.length) return; for (r = 0; r < c.length; r++) (s = a(t.layout, "annotations", h[c[r]])).modifyItem( "visible", !0, ), n.extendFlat(f, s.getUpdateObj()); for (r = 0; r < u.length; r++) (s = a(t.layout, "annotations", h[u[r]])).modifyItem( "visible", !1, ), n.extendFlat(f, s.getUpdateObj()); return i.call("update", t, {}, f); }, }; }, { "../../lib": 515, "../../plot_api/plot_template": 555, "../../registry": 647, }, ], 353: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../color"); e.exports = function (t, e, r, a) { a("opacity"); var o = a("bgcolor"), s = a("bordercolor"), l = i.opacity(s); a("borderpad"); var c = a("borderwidth"), u = a("showarrow"); if ( (a("text", u ? " " : r._dfltTitle.annotation), a("textangle"), n.coerceFont(a, "font", r.font), a("width"), a("align"), a("height") && a("valign"), u) ) { var f, h, p = a("arrowside"); -1 !== p.indexOf("end") && ((f = a("arrowhead")), (h = a("arrowsize"))), -1 !== p.indexOf("start") && (a("startarrowhead", f), a("startarrowsize", h)), a("arrowcolor", l ? e.bordercolor : i.defaultLine), a("arrowwidth", 2 * ((l && c) || 1)), a("standoff"), a("startstandoff"); } var d = a("hovertext"), m = r.hoverlabel || {}; if (d) { var g = a( "hoverlabel.bgcolor", m.bgcolor || (i.opacity(o) ? i.rgb(o) : i.defaultLine), ), v = a( "hoverlabel.bordercolor", m.bordercolor || i.contrast(g), ); n.coerceFont(a, "hoverlabel.font", { family: m.font.family, size: m.font.size, color: m.font.color || v, }); } a("captureevents", !!d); }; }, { "../../lib": 515, "../color": 367 }, ], 354: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib/to_log_range"); e.exports = function (t, e, r, a) { e = e || {}; var o = "log" === r && "linear" === e.type, s = "linear" === r && "log" === e.type; if (o || s) for ( var l, c, u = t._fullLayout.annotations, f = e._id.charAt(0), h = 0; h < u.length; h++ ) (l = u[h]), (c = "annotations[" + h + "]."), l[f + "ref"] === e._id && p(f), l["a" + f + "ref"] === e._id && p("a" + f); function p(t) { var r = l[t], s = null; (s = o ? i(r, e.range) : Math.pow(10, r)), n(s) || (s = null), a(c + t, s); } }; }, { "../../lib/to_log_range": 543, "fast-isnumeric": 190 }, ], 355: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"), a = t("../../plots/array_container_defaults"), o = t("./common_defaults"), s = t("./attributes"); function l(t, e, r) { function a(r, i) { return n.coerce(t, e, s, r, i); } var l = a("visible"), c = a("clicktoshow"); if (l || c) { o(t, e, r, a); for ( var u = e.showarrow, f = ["x", "y"], h = [-10, -30], p = { _fullLayout: r }, d = 0; d < 2; d++ ) { var m = f[d], g = i.coerceRef(t, e, p, m, "", "paper"); if ("paper" !== g) i.getFromId(p, g)._annIndices.push(e._index); if ((i.coercePosition(e, p, a, g, m, 0.5), u)) { var v = "a" + m, y = i.coerceRef(t, e, p, v, "pixel", [ "pixel", "paper", ]); "pixel" !== y && y !== g && (y = e[v] = "pixel"); var x = "pixel" === y ? h[d] : 0.4; i.coercePosition(e, p, a, y, v, x); } a(m + "anchor"), a(m + "shift"); } if ( (n.noneOrAll(t, e, ["x", "y"]), u && n.noneOrAll(t, e, ["ax", "ay"]), c) ) { var b = a("xclick"), _ = a("yclick"); (e._xclick = void 0 === b ? e.x : i.cleanPosition(b, p, e.xref)), (e._yclick = void 0 === _ ? e.y : i.cleanPosition(_, p, e.yref)); } } } e.exports = function (t, e) { a(t, e, { name: "annotations", handleItemDefaults: l }); }; }, { "../../lib": 515, "../../plots/array_container_defaults": 561, "../../plots/cartesian/axes": 566, "./attributes": 350, "./common_defaults": 353, }, ], 356: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../registry"), a = t("../../plots/plots"), o = t("../../lib"), s = o.strTranslate, l = t("../../plots/cartesian/axes"), c = t("../color"), u = t("../drawing"), f = t("../fx"), h = t("../../lib/svg_text_utils"), p = t("../../lib/setcursor"), d = t("../dragelement"), m = t("../../plot_api/plot_template").arrayEditor, g = t("./draw_arrow_head"); function v(t, e) { var r = t._fullLayout.annotations[e] || {}, n = l.getFromId(t, r.xref), i = l.getFromId(t, r.yref); n && n.setScale(), i && i.setScale(), x(t, r, e, !1, n, i); } function y(t, e, r, n, i) { var a = i[r], o = i[r + "ref"], s = -1 !== r.indexOf("y"), c = "domain" === l.getRefType(o), u = s ? n.h : n.w; return t ? c ? a + (s ? -e : e) / t._length : t.p2r(t.r2p(a) + e) : a + (s ? -e : e) / u; } function x(t, e, r, a, v, x) { var b, _, w = t._fullLayout, T = t._fullLayout._size, k = t._context.edits; a ? ((b = "annotation-" + a), (_ = a + ".annotations")) : ((b = "annotation"), (_ = "annotations")); var A = m(t.layout, _, e), M = A.modifyBase, S = A.modifyItem, E = A.getUpdateObj; w._infolayer .selectAll("." + b + '[data-index="' + r + '"]') .remove(); var L = "clip" + w._uid + "_ann" + r; if (e._input && !1 !== e.visible) { var C = { x: {}, y: {} }, P = +e.textangle || 0, I = w._infolayer .append("g") .classed(b, !0) .attr("data-index", String(r)) .style("opacity", e.opacity), O = I.append("g").classed("annotation-text-g", !0), z = k[ e.showarrow ? "annotationTail" : "annotationPosition" ], D = e.captureevents || k.annotationText || z, R = O.append("g") .style("pointer-events", D ? "all" : null) .call(p, "pointer") .on("click", function () { (t._dragging = !1), t.emit("plotly_clickannotation", Y(n.event)); }); e.hovertext && R.on("mouseover", function () { var r = e.hoverlabel, n = r.font, i = this.getBoundingClientRect(), a = t.getBoundingClientRect(); f.loneHover( { x0: i.left - a.left, x1: i.right - a.left, y: (i.top + i.bottom) / 2 - a.top, text: e.hovertext, color: r.bgcolor, borderColor: r.bordercolor, fontFamily: n.family, fontSize: n.size, fontColor: n.color, }, { container: w._hoverlayer.node(), outerContainer: w._paper.node(), gd: t, }, ); }).on("mouseout", function () { f.loneUnhover(w._hoverlayer.node()); }); var F = e.borderwidth, B = e.borderpad, N = F + B, j = R.append("rect") .attr("class", "bg") .style("stroke-width", F + "px") .call(c.stroke, e.bordercolor) .call(c.fill, e.bgcolor), U = e.width || e.height, V = w._topclips.selectAll("#" + L).data(U ? [0] : []); V.enter() .append("clipPath") .classed("annclip", !0) .attr("id", L) .append("rect"), V.exit().remove(); var H = e.font, q = w._meta ? o.templateString(e.text, w._meta) : e.text, G = R.append("text") .classed("annotation-text", !0) .text(q); k.annotationText ? G.call(h.makeEditable, { delegate: R, gd: t }) .call(W) .on("edit", function (r) { (e.text = r), this.call(W), S("text", r), v && v.autorange && M(v._name + ".autorange", !0), x && x.autorange && M(x._name + ".autorange", !0), i.call("_guiRelayout", t, E()); }) : G.call(W); } else n.selectAll("#" + L).remove(); function Y(t) { var n = { index: r, annotation: e._input, fullAnnotation: e, event: t, }; return a && (n.subplotId = a), n; } function W(r) { return ( r.call(u.font, H).attr({ "text-anchor": { left: "start", right: "end" }[e.align] || "middle", }), h.convertToTspans(r, t, Z), r ); } function Z() { var r = G.selectAll("a"); 1 === r.size() && r.text() === G.text() && R.insert("a", ":first-child") .attr({ "xlink:xlink:href": r.attr("xlink:href"), "xlink:xlink:show": r.attr("xlink:show"), }) .style({ cursor: "pointer" }) .node() .appendChild(j.node()); var n = R.select(".annotation-text-math-group"), f = !n.empty(), m = u.bBox((f ? n : G).node()), b = m.width, _ = m.height, A = e.width || b, D = e.height || _, B = Math.round(A + 2 * N), H = Math.round(D + 2 * N); function q(t, e) { return ( "auto" === e && (e = t < 1 / 3 ? "left" : t > 2 / 3 ? "right" : "center"), { center: 0, middle: 0, left: 0.5, bottom: -0.5, right: -0.5, top: 0.5, }[e] ); } for ( var W = !1, Z = ["x", "y"], X = 0; X < Z.length; X++ ) { var J, K, Q, $, tt, et = Z[X], rt = e[et + "ref"] || et, nt = e["a" + et + "ref"], it = { x: v, y: x }[et], at = ((P + ("x" === et ? 0 : -90)) * Math.PI) / 180, ot = B * Math.cos(at), st = H * Math.sin(at), lt = Math.abs(ot) + Math.abs(st), ct = e[et + "anchor"], ut = e[et + "shift"] * ("x" === et ? 1 : -1), ft = C[et], ht = l.getRefType(rt); if (it && "domain" !== ht) { var pt = it.r2fraction(e[et]); (pt < 0 || pt > 1) && (nt === rt ? ((pt = it.r2fraction(e["a" + et])) < 0 || pt > 1) && (W = !0) : (W = !0)), (J = it._offset + it.r2p(e[et])), ($ = 0.5); } else { var dt = "domain" === ht; "x" === et ? ((Q = e[et]), (J = dt ? it._offset + it._length * Q : (J = T.l + T.w * Q))) : ((Q = 1 - e[et]), (J = dt ? it._offset + it._length * Q : (J = T.t + T.h * Q))), ($ = e.showarrow ? 0.5 : Q); } if (e.showarrow) { ft.head = J; var mt = e["a" + et]; if ( ((tt = ot * q(0.5, e.xanchor) - st * q(0.5, e.yanchor)), nt === rt) ) { var gt = l.getRefType(nt); "domain" === gt ? ("y" === et && (mt = 1 - mt), (ft.tail = it._offset + it._length * mt)) : "paper" === gt ? "y" === et ? ((mt = 1 - mt), (ft.tail = T.t + T.h * mt)) : (ft.tail = T.l + T.w * mt) : (ft.tail = it._offset + it.r2p(mt)), (K = tt); } else (ft.tail = J + mt), (K = tt + mt); ft.text = ft.tail + tt; var vt = w["x" === et ? "width" : "height"]; if ( ("paper" === rt && (ft.head = o.constrain(ft.head, 1, vt - 1)), "pixel" === nt) ) { var yt = -Math.max(ft.tail - 3, ft.text), xt = Math.min(ft.tail + 3, ft.text) - vt; yt > 0 ? ((ft.tail += yt), (ft.text += yt)) : xt > 0 && ((ft.tail -= xt), (ft.text -= xt)); } (ft.tail += ut), (ft.head += ut); } else (K = tt = lt * q($, ct)), (ft.text = J + tt); (ft.text += ut), (tt += ut), (K += ut), (e["_" + et + "padplus"] = lt / 2 + K), (e["_" + et + "padminus"] = lt / 2 - K), (e["_" + et + "size"] = lt), (e["_" + et + "shift"] = tt); } if (W) R.remove(); else { var bt = 0, _t = 0; if ( ("left" !== e.align && (bt = (A - b) * ("center" === e.align ? 0.5 : 1)), "top" !== e.valign && (_t = (D - _) * ("middle" === e.valign ? 0.5 : 1)), f) ) n.select("svg") .attr({ x: N + bt - 1, y: N + _t }) .call(u.setClipUrl, U ? L : null, t); else { var wt = N + _t - m.top, Tt = N + bt - m.left; G.call(h.positionText, Tt, wt).call( u.setClipUrl, U ? L : null, t, ); } V.select("rect").call(u.setRect, N, N, A, D), j.call(u.setRect, F / 2, F / 2, B - F, H - F), R.call( u.setTranslate, Math.round(C.x.text - B / 2), Math.round(C.y.text - H / 2), ), O.attr({ transform: "rotate(" + P + "," + C.x.text + "," + C.y.text + ")", }); var kt, At = function (r, n) { I.selectAll(".annotation-arrow-g").remove(); var l = C.x.head, f = C.y.head, h = C.x.tail + r, p = C.y.tail + n, m = C.x.text + r, b = C.y.text + n, _ = o.rotationXYMatrix(P, m, b), w = o.apply2DTransform(_), A = o.apply2DTransform2(_), L = +j.attr("width"), z = +j.attr("height"), D = m - 0.5 * L, F = D + L, B = b - 0.5 * z, N = B + z, U = [ [D, B, D, N], [D, N, F, N], [F, N, F, B], [F, B, D, B], ].map(A); if ( !U.reduce(function (t, e) { return ( t ^ !!o.segmentsIntersect( l, f, l + 1e6, f + 1e6, e[0], e[1], e[2], e[3], ) ); }, !1) ) { U.forEach(function (t) { var e = o.segmentsIntersect( h, p, l, f, t[0], t[1], t[2], t[3], ); e && ((h = e.x), (p = e.y)); }); var V = e.arrowwidth, H = e.arrowcolor, q = e.arrowside, G = I.append("g") .style({ opacity: c.opacity(H) }) .classed("annotation-arrow-g", !0), Y = G.append("path") .attr( "d", "M" + h + "," + p + "L" + l + "," + f, ) .style("stroke-width", V + "px") .call(c.stroke, c.rgb(H)); if ( (g(Y, q, e), k.annotationPosition && Y.node().parentNode && !a) ) { var W = l, Z = f; if (e.standoff) { var X = Math.sqrt( Math.pow(l - h, 2) + Math.pow(f - p, 2), ); (W += (e.standoff * (h - l)) / X), (Z += (e.standoff * (p - f)) / X); } var J, K, Q = G.append("path") .classed("annotation-arrow", !0) .classed("anndrag", !0) .classed("cursor-move", !0) .attr({ d: "M3,3H-3V-3H3ZM0,0L" + (h - W) + "," + (p - Z), transform: s(W, Z), }) .style("stroke-width", V + 6 + "px") .call(c.stroke, "rgba(0,0,0,0)") .call(c.fill, "rgba(0,0,0,0)"); d.init({ element: Q.node(), gd: t, prepFn: function () { var t = u.getTranslate(R); (J = t.x), (K = t.y), v && v.autorange && M(v._name + ".autorange", !0), x && x.autorange && M(x._name + ".autorange", !0); }, moveFn: function (t, r) { var n = w(J, K), i = n[0] + t, a = n[1] + r; R.call(u.setTranslate, i, a), S("x", y(v, t, "x", T, e)), S("y", y(x, r, "y", T, e)), e.axref === e.xref && S("ax", y(v, t, "ax", T, e)), e.ayref === e.yref && S("ay", y(x, r, "ay", T, e)), G.attr("transform", s(t, r)), O.attr({ transform: "rotate(" + P + "," + i + "," + a + ")", }); }, doneFn: function () { i.call("_guiRelayout", t, E()); var e = document.querySelector( ".js-notes-box-panel", ); e && e.redraw(e.selectedObj); }, }); } } }; if ((e.showarrow && At(0, 0), z)) d.init({ element: R.node(), gd: t, prepFn: function () { kt = O.attr("transform"); }, moveFn: function (t, r) { var n = "pointer"; if (e.showarrow) e.axref === e.xref ? S("ax", y(v, t, "ax", T, e)) : S("ax", e.ax + t), e.ayref === e.yref ? S("ay", y(x, r, "ay", T.w, e)) : S("ay", e.ay + r), At(t, r); else { if (a) return; var i, o; if (v) i = y(v, t, "x", T, e); else { var l = e._xsize / T.w, c = e.x + (e._xshift - e.xshift) / T.w - l / 2; i = d.align(c + t / T.w, l, 0, 1, e.xanchor); } if (x) o = y(x, r, "y", T, e); else { var u = e._ysize / T.h, f = e.y - (e._yshift + e.yshift) / T.h - u / 2; o = d.align(f - r / T.h, u, 0, 1, e.yanchor); } S("x", i), S("y", o), (v && x) || (n = d.getCursor( v ? 0.5 : i, x ? 0.5 : o, e.xanchor, e.yanchor, )); } O.attr({ transform: s(t, r) + kt }), p(R, n); }, clickFn: function (r, n) { e.captureevents && t.emit("plotly_clickannotation", Y(n)); }, doneFn: function () { p(R), i.call("_guiRelayout", t, E()); var e = document.querySelector( ".js-notes-box-panel", ); e && e.redraw(e.selectedObj); }, }); } } } e.exports = { draw: function (t) { var e = t._fullLayout; e._infolayer.selectAll(".annotation").remove(); for (var r = 0; r < e.annotations.length; r++) e.annotations[r].visible && v(t, r); return a.previousPromises(t); }, drawOne: v, drawRaw: x, }; }, { "../../lib": 515, "../../lib/setcursor": 536, "../../lib/svg_text_utils": 541, "../../plot_api/plot_template": 555, "../../plots/cartesian/axes": 566, "../../plots/plots": 628, "../../registry": 647, "../color": 367, "../dragelement": 386, "../drawing": 389, "../fx": 407, "./draw_arrow_head": 357, "@plotly/d3": 58, }, ], 357: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../color"), a = t("./arrow_paths"), o = t("../../lib"), s = o.strScale, l = o.strRotate, c = o.strTranslate; e.exports = function (t, e, r) { var o, u, f, h, p = t.node(), d = a[r.arrowhead || 0], m = a[r.startarrowhead || 0], g = (r.arrowwidth || 1) * (r.arrowsize || 1), v = (r.arrowwidth || 1) * (r.startarrowsize || 1), y = e.indexOf("start") >= 0, x = e.indexOf("end") >= 0, b = d.backoff * g + r.standoff, _ = m.backoff * v + r.startstandoff; if ("line" === p.nodeName) { (o = { x: +t.attr("x1"), y: +t.attr("y1") }), (u = { x: +t.attr("x2"), y: +t.attr("y2") }); var w = o.x - u.x, T = o.y - u.y; if ( ((h = (f = Math.atan2(T, w)) + Math.PI), b && _ && b + _ > Math.sqrt(w * w + T * T)) ) return void z(); if (b) { if (b * b > w * w + T * T) return void z(); var k = b * Math.cos(f), A = b * Math.sin(f); (u.x += k), (u.y += A), t.attr({ x2: u.x, y2: u.y }); } if (_) { if (_ * _ > w * w + T * T) return void z(); var M = _ * Math.cos(f), S = _ * Math.sin(f); (o.x -= M), (o.y -= S), t.attr({ x1: o.x, y1: o.y }); } } else if ("path" === p.nodeName) { var E = p.getTotalLength(), L = ""; if (E < b + _) return void z(); var C = p.getPointAtLength(0), P = p.getPointAtLength(0.1); (f = Math.atan2(C.y - P.y, C.x - P.x)), (o = p.getPointAtLength(Math.min(_, E))), (L = "0px," + _ + "px,"); var I = p.getPointAtLength(E), O = p.getPointAtLength(E - 0.1); (h = Math.atan2(I.y - O.y, I.x - O.x)), (u = p.getPointAtLength(Math.max(0, E - b))), (L += E - (L ? _ + b : b) + "px," + E + "px"), t.style("stroke-dasharray", L); } function z() { t.style("stroke-dasharray", "0px,100px"); } function D(e, a, o, u) { e.path && (e.noRotate && (o = 0), n .select(p.parentNode) .append("path") .attr({ class: t.attr("class"), d: e.path, transform: c(a.x, a.y) + l((180 * o) / Math.PI) + s(u), }) .style({ fill: i.rgb(r.arrowcolor), "stroke-width": 0, })); } y && D(m, o, f, v), x && D(d, u, h, g); }; }, { "../../lib": 515, "../color": 367, "./arrow_paths": 349, "@plotly/d3": 58, }, ], 358: [ function (t, e, r) { "use strict"; var n = t("./draw"), i = t("./click"); e.exports = { moduleType: "component", name: "annotations", layoutAttributes: t("./attributes"), supplyLayoutDefaults: t("./defaults"), includeBasePlot: t( "../../plots/cartesian/include_components", )("annotations"), calcAutorange: t("./calc_autorange"), draw: n.draw, drawOne: n.drawOne, drawRaw: n.drawRaw, hasClickToShow: i.hasClickToShow, onClick: i.onClick, convertCoords: t("./convert_coords"), }; }, { "../../plots/cartesian/include_components": 577, "./attributes": 350, "./calc_autorange": 351, "./click": 352, "./convert_coords": 354, "./defaults": 355, "./draw": 356, }, ], 359: [ function (t, e, r) { "use strict"; var n = t("../annotations/attributes"), i = t("../../plot_api/edit_types").overrideAll, a = t("../../plot_api/plot_template").templatedArray; e.exports = i( a("annotation", { visible: n.visible, x: { valType: "any" }, y: { valType: "any" }, z: { valType: "any" }, ax: { valType: "number" }, ay: { valType: "number" }, xanchor: n.xanchor, xshift: n.xshift, yanchor: n.yanchor, yshift: n.yshift, text: n.text, textangle: n.textangle, font: n.font, width: n.width, height: n.height, opacity: n.opacity, align: n.align, valign: n.valign, bgcolor: n.bgcolor, bordercolor: n.bordercolor, borderpad: n.borderpad, borderwidth: n.borderwidth, showarrow: n.showarrow, arrowcolor: n.arrowcolor, arrowhead: n.arrowhead, startarrowhead: n.startarrowhead, arrowside: n.arrowside, arrowsize: n.arrowsize, startarrowsize: n.startarrowsize, arrowwidth: n.arrowwidth, standoff: n.standoff, startstandoff: n.startstandoff, hovertext: n.hovertext, hoverlabel: n.hoverlabel, captureevents: n.captureevents, }), "calc", "from-root", ); }, { "../../plot_api/edit_types": 548, "../../plot_api/plot_template": 555, "../annotations/attributes": 350, }, ], 360: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"); function a(t, e) { var r = e.fullSceneLayout.domain, a = e.fullLayout._size, o = { pdata: null, type: "linear", autorange: !1, range: [-1 / 0, 1 / 0], }; (t._xa = {}), n.extendFlat(t._xa, o), i.setConvert(t._xa), (t._xa._offset = a.l + r.x[0] * a.w), (t._xa.l2p = function () { return ( 0.5 * (1 + t._pdata[0] / t._pdata[3]) * a.w * (r.x[1] - r.x[0]) ); }), (t._ya = {}), n.extendFlat(t._ya, o), i.setConvert(t._ya), (t._ya._offset = a.t + (1 - r.y[1]) * a.h), (t._ya.l2p = function () { return ( 0.5 * (1 - t._pdata[1] / t._pdata[3]) * a.h * (r.y[1] - r.y[0]) ); }); } e.exports = function (t) { for ( var e = t.fullSceneLayout.annotations, r = 0; r < e.length; r++ ) a(e[r], t); t.fullLayout._infolayer .selectAll(".annotation-" + t.id) .remove(); }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566 }, ], 361: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"), a = t("../../plots/array_container_defaults"), o = t("../annotations/common_defaults"), s = t("./attributes"); function l(t, e, r, a) { function l(r, i) { return n.coerce(t, e, s, r, i); } function c(t) { var n = t + "axis", a = { _fullLayout: {} }; return ( (a._fullLayout[n] = r[n]), i.coercePosition(e, a, l, t, t, 0.5) ); } l("visible") && (o(t, e, a.fullLayout, l), c("x"), c("y"), c("z"), n.noneOrAll(t, e, ["x", "y", "z"]), (e.xref = "x"), (e.yref = "y"), (e.zref = "z"), l("xanchor"), l("yanchor"), l("xshift"), l("yshift"), e.showarrow && ((e.axref = "pixel"), (e.ayref = "pixel"), l("ax", -10), l("ay", -30), n.noneOrAll(t, e, ["ax", "ay"]))); } e.exports = function (t, e, r) { a(t, e, { name: "annotations", handleItemDefaults: l, fullLayout: r.fullLayout, }); }; }, { "../../lib": 515, "../../plots/array_container_defaults": 561, "../../plots/cartesian/axes": 566, "../annotations/common_defaults": 353, "./attributes": 359, }, ], 362: [ function (t, e, r) { "use strict"; var n = t("../annotations/draw").drawRaw, i = t("../../plots/gl3d/project"), a = ["x", "y", "z"]; e.exports = function (t) { for ( var e = t.fullSceneLayout, r = t.dataScale, o = e.annotations, s = 0; s < o.length; s++ ) { for (var l = o[s], c = !1, u = 0; u < 3; u++) { var f = a[u], h = l[f], p = e[f + "axis"].r2fraction(h); if (p < 0 || p > 1) { c = !0; break; } } c ? t.fullLayout._infolayer .select( ".annotation-" + t.id + '[data-index="' + s + '"]', ) .remove() : ((l._pdata = i(t.glplot.cameraParams, [ e.xaxis.r2l(l.x) * r[0], e.yaxis.r2l(l.y) * r[1], e.zaxis.r2l(l.z) * r[2], ])), n(t.graphDiv, l, s, t.id, l._xa, l._ya)); } }; }, { "../../plots/gl3d/project": 616, "../annotations/draw": 356 }, ], 363: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"); e.exports = { moduleType: "component", name: "annotations3d", schema: { subplots: { scene: { annotations: t("./attributes") } }, }, layoutAttributes: t("./attributes"), handleDefaults: t("./defaults"), includeBasePlot: function (t, e) { var r = n.subplotsRegistry.gl3d; if (!r) return; for ( var a = r.attrRegex, o = Object.keys(t), s = 0; s < o.length; s++ ) { var l = o[s]; a.test(l) && (t[l].annotations || []).length && (i.pushUnique(e._basePlotModules, r), i.pushUnique(e._subplots.gl3d, l)); } }, convert: t("./convert"), draw: t("./draw"), }; }, { "../../lib": 515, "../../registry": 647, "./attributes": 359, "./convert": 360, "./defaults": 361, "./draw": 362, }, ], 364: [ function (t, e, r) { "use strict"; (e.exports = t("world-calendars/dist/main")), t("world-calendars/dist/plus"), t("world-calendars/dist/calendars/chinese"), t("world-calendars/dist/calendars/coptic"), t("world-calendars/dist/calendars/discworld"), t("world-calendars/dist/calendars/ethiopian"), t("world-calendars/dist/calendars/hebrew"), t("world-calendars/dist/calendars/islamic"), t("world-calendars/dist/calendars/julian"), t("world-calendars/dist/calendars/mayan"), t("world-calendars/dist/calendars/nanakshahi"), t("world-calendars/dist/calendars/nepali"), t("world-calendars/dist/calendars/persian"), t("world-calendars/dist/calendars/taiwan"), t("world-calendars/dist/calendars/thai"), t("world-calendars/dist/calendars/ummalqura"); }, { "world-calendars/dist/calendars/chinese": 333, "world-calendars/dist/calendars/coptic": 334, "world-calendars/dist/calendars/discworld": 335, "world-calendars/dist/calendars/ethiopian": 336, "world-calendars/dist/calendars/hebrew": 337, "world-calendars/dist/calendars/islamic": 338, "world-calendars/dist/calendars/julian": 339, "world-calendars/dist/calendars/mayan": 340, "world-calendars/dist/calendars/nanakshahi": 341, "world-calendars/dist/calendars/nepali": 342, "world-calendars/dist/calendars/persian": 343, "world-calendars/dist/calendars/taiwan": 344, "world-calendars/dist/calendars/thai": 345, "world-calendars/dist/calendars/ummalqura": 346, "world-calendars/dist/main": 347, "world-calendars/dist/plus": 348, }, ], 365: [ function (t, e, r) { "use strict"; var n = t("./calendars"), i = t("../../lib"), a = t("../../constants/numerical"), o = a.EPOCHJD, s = a.ONEDAY, l = { valType: "enumerated", values: i.sortObjectKeys(n.calendars), editType: "calc", dflt: "gregorian", }, c = function (t, e, r, n) { var a = {}; return (a[r] = l), i.coerce(t, e, a, r, n); }, u = { d: { 0: "dd", "-": "d" }, e: { 0: "d", "-": "d" }, a: { 0: "D", "-": "D" }, A: { 0: "DD", "-": "DD" }, j: { 0: "oo", "-": "o" }, W: { 0: "ww", "-": "w" }, m: { 0: "mm", "-": "m" }, b: { 0: "M", "-": "M" }, B: { 0: "MM", "-": "MM" }, y: { 0: "yy", "-": "yy" }, Y: { 0: "yyyy", "-": "yyyy" }, U: "##", w: "##", c: { 0: "D M d %X yyyy", "-": "D M d %X yyyy" }, x: { 0: "mm/dd/yyyy", "-": "mm/dd/yyyy" }, }; var f = {}; function h(t) { var e = f[t]; return e || (e = f[t] = n.instance(t)); } function p(t) { return i.extendFlat({}, l, { description: t }); } function d(t) { return ( "Sets the calendar system to use with `" + t + "` date data." ); } var m = { xcalendar: p(d("x")) }, g = i.extendFlat({}, m, { ycalendar: p(d("y")) }), v = i.extendFlat({}, g, { zcalendar: p(d("z")) }), y = p( [ "Sets the calendar system to use for `range` and `tick0`", "if this is a date axis. This does not set the calendar for", "interpreting data on this axis, that's specified in the trace", "or via the global `layout.calendar`", ].join(" "), ); e.exports = { moduleType: "component", name: "calendars", schema: { traces: { scatter: g, bar: g, box: g, heatmap: g, contour: g, histogram: g, histogram2d: g, histogram2dcontour: g, scatter3d: v, surface: v, mesh3d: v, scattergl: g, ohlc: m, candlestick: m, }, layout: { calendar: p( [ "Sets the default calendar system to use for interpreting and", "displaying dates throughout the plot.", ].join(" "), ), }, subplots: { xaxis: { calendar: y }, yaxis: { calendar: y }, scene: { xaxis: { calendar: y }, yaxis: { calendar: y }, zaxis: { calendar: y }, }, polar: { radialaxis: { calendar: y } }, }, transforms: { filter: { valuecalendar: p( [ "WARNING: All transforms are deprecated and may be removed from the API in next major version.", "Sets the calendar system to use for `value`, if it is a date.", ].join(" "), ), targetcalendar: p( [ "WARNING: All transforms are deprecated and may be removed from the API in next major version.", "Sets the calendar system to use for `target`, if it is an", "array of dates. If `target` is a string (eg *x*) we use the", "corresponding trace attribute (eg `xcalendar`) if it exists,", "even if `targetcalendar` is provided.", ].join(" "), ), }, }, }, layoutAttributes: l, handleDefaults: c, handleTraceDefaults: function (t, e, r, n) { for (var i = 0; i < r.length; i++) c(t, e, r[i] + "calendar", n.calendar); }, CANONICAL_SUNDAY: { chinese: "2000-01-02", coptic: "2000-01-03", discworld: "2000-01-03", ethiopian: "2000-01-05", hebrew: "5000-01-01", islamic: "1000-01-02", julian: "2000-01-03", mayan: "5000-01-01", nanakshahi: "1000-01-05", nepali: "2000-01-05", persian: "1000-01-01", jalali: "1000-01-01", taiwan: "1000-01-04", thai: "2000-01-04", ummalqura: "1400-01-06", }, CANONICAL_TICK: { chinese: "2000-01-01", coptic: "2000-01-01", discworld: "2000-01-01", ethiopian: "2000-01-01", hebrew: "5000-01-01", islamic: "1000-01-01", julian: "2000-01-01", mayan: "5000-01-01", nanakshahi: "1000-01-01", nepali: "2000-01-01", persian: "1000-01-01", jalali: "1000-01-01", taiwan: "1000-01-01", thai: "2000-01-01", ummalqura: "1400-01-01", }, DFLTRANGE: { chinese: ["2000-01-01", "2001-01-01"], coptic: ["1700-01-01", "1701-01-01"], discworld: ["1800-01-01", "1801-01-01"], ethiopian: ["2000-01-01", "2001-01-01"], hebrew: ["5700-01-01", "5701-01-01"], islamic: ["1400-01-01", "1401-01-01"], julian: ["2000-01-01", "2001-01-01"], mayan: ["5200-01-01", "5201-01-01"], nanakshahi: ["0500-01-01", "0501-01-01"], nepali: ["2000-01-01", "2001-01-01"], persian: ["1400-01-01", "1401-01-01"], jalali: ["1400-01-01", "1401-01-01"], taiwan: ["0100-01-01", "0101-01-01"], thai: ["2500-01-01", "2501-01-01"], ummalqura: ["1400-01-01", "1401-01-01"], }, getCal: h, worldCalFmt: function (t, e, r) { for ( var n, i, a, l, c, f = Math.floor((e + 0.05) / s) + o, p = h(r).fromJD(f), d = 0; -1 !== (d = t.indexOf("%", d)); ) "0" === (n = t.charAt(d + 1)) || "-" === n || "_" === n ? ((a = 3), (i = t.charAt(d + 2)), "_" === n && (n = "-")) : ((i = n), (n = "0"), (a = 2)), (l = u[i]) ? ((c = "##" === l ? "##" : p.formatDate(l[n])), (t = t.substr(0, d) + c + t.substr(d + a)), (d += c.length)) : (d += a); return t; }, }; }, { "../../constants/numerical": 491, "../../lib": 515, "./calendars": 364, }, ], 366: [ function (t, e, r) { "use strict"; (r.defaults = [ "#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf", ]), (r.defaultLine = "#444"), (r.lightLine = "#eee"), (r.background = "#fff"), (r.borderLine = "#BEC8D9"), (r.lightFraction = 1e3 / 11); }, {}, ], 367: [ function (t, e, r) { "use strict"; var n = t("tinycolor2"), i = t("fast-isnumeric"), a = t("../../lib/array").isTypedArray, o = (e.exports = {}), s = t("./attributes"); o.defaults = s.defaults; var l = (o.defaultLine = s.defaultLine); o.lightLine = s.lightLine; var c = (o.background = s.background); function u(t) { if (i(t) || "string" != typeof t) return t; var e = t.trim(); if ("rgb" !== e.substr(0, 3)) return t; var r = e.match(/^rgba?\s*\(([^()]*)\)$/); if (!r) return t; var n = r[1].trim().split(/\s*[\s,]\s*/), a = "a" === e.charAt(3) && 4 === n.length; if (!a && 3 !== n.length) return t; for (var o = 0; o < n.length; o++) { if (!n[o].length) return t; if (((n[o] = Number(n[o])), !(n[o] >= 0))) return t; if (3 === o) n[o] > 1 && (n[o] = 1); else if (n[o] >= 1) return t; } var s = Math.round(255 * n[0]) + ", " + Math.round(255 * n[1]) + ", " + Math.round(255 * n[2]); return a ? "rgba(" + s + ", " + n[3] + ")" : "rgb(" + s + ")"; } (o.tinyRGB = function (t) { var e = t.toRgb(); return ( "rgb(" + Math.round(e.r) + ", " + Math.round(e.g) + ", " + Math.round(e.b) + ")" ); }), (o.rgb = function (t) { return o.tinyRGB(n(t)); }), (o.opacity = function (t) { return t ? n(t).getAlpha() : 0; }), (o.addOpacity = function (t, e) { var r = n(t).toRgb(); return ( "rgba(" + Math.round(r.r) + ", " + Math.round(r.g) + ", " + Math.round(r.b) + ", " + e + ")" ); }), (o.combine = function (t, e) { var r = n(t).toRgb(); if (1 === r.a) return n(t).toRgbString(); var i = n(e || c).toRgb(), a = 1 === i.a ? i : { r: 255 * (1 - i.a) + i.r * i.a, g: 255 * (1 - i.a) + i.g * i.a, b: 255 * (1 - i.a) + i.b * i.a, }, o = { r: a.r * (1 - r.a) + r.r * r.a, g: a.g * (1 - r.a) + r.g * r.a, b: a.b * (1 - r.a) + r.b * r.a, }; return n(o).toRgbString(); }), (o.contrast = function (t, e, r) { var i = n(t); return ( 1 !== i.getAlpha() && (i = n(o.combine(t, c))), (i.isDark() ? e ? i.lighten(e) : c : r ? i.darken(r) : l ).toString() ); }), (o.stroke = function (t, e) { var r = n(e); t.style({ stroke: o.tinyRGB(r), "stroke-opacity": r.getAlpha(), }); }), (o.fill = function (t, e) { var r = n(e); t.style({ fill: o.tinyRGB(r), "fill-opacity": r.getAlpha(), }); }), (o.clean = function (t) { if (t && "object" == typeof t) { var e, r, n, i, s = Object.keys(t); for (e = 0; e < s.length; e++) if ( ((i = t[(n = s[e])]), "color" === n.substr(n.length - 5)) ) if (Array.isArray(i)) for (r = 0; r < i.length; r++) i[r] = u(i[r]); else t[n] = u(i); else if ( "colorscale" === n.substr(n.length - 10) && Array.isArray(i) ) for (r = 0; r < i.length; r++) Array.isArray(i[r]) && (i[r][1] = u(i[r][1])); else if (Array.isArray(i)) { var l = i[0]; if (!Array.isArray(l) && l && "object" == typeof l) for (r = 0; r < i.length; r++) o.clean(i[r]); } else i && "object" == typeof i && !a(i) && o.clean(i); } }); }, { "../../lib/array": 497, "./attributes": 366, "fast-isnumeric": 190, tinycolor2: 313, }, ], 368: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/layout_attributes"), i = t("../../plots/font_attributes"), a = t("../../lib/extend").extendFlat, o = t("../../plot_api/edit_types").overrideAll; e.exports = o( { orientation: { valType: "enumerated", values: ["h", "v"], dflt: "v", }, thicknessmode: { valType: "enumerated", values: ["fraction", "pixels"], dflt: "pixels", }, thickness: { valType: "number", min: 0, dflt: 30 }, lenmode: { valType: "enumerated", values: ["fraction", "pixels"], dflt: "fraction", }, len: { valType: "number", min: 0, dflt: 1 }, x: { valType: "number", min: -2, max: 3 }, xanchor: { valType: "enumerated", values: ["left", "center", "right"], }, xpad: { valType: "number", min: 0, dflt: 10 }, y: { valType: "number", min: -2, max: 3 }, yanchor: { valType: "enumerated", values: ["top", "middle", "bottom"], }, ypad: { valType: "number", min: 0, dflt: 10 }, outlinecolor: n.linecolor, outlinewidth: n.linewidth, bordercolor: n.linecolor, borderwidth: { valType: "number", min: 0, dflt: 0 }, bgcolor: { valType: "color", dflt: "rgba(0,0,0,0)" }, tickmode: n.tickmode, nticks: n.nticks, tick0: n.tick0, dtick: n.dtick, tickvals: n.tickvals, ticktext: n.ticktext, ticks: a({}, n.ticks, { dflt: "" }), ticklabeloverflow: a({}, n.ticklabeloverflow, {}), ticklabelposition: { valType: "enumerated", values: [ "outside", "inside", "outside top", "inside top", "outside left", "inside left", "outside right", "inside right", "outside bottom", "inside bottom", ], dflt: "outside", }, ticklen: n.ticklen, tickwidth: n.tickwidth, tickcolor: n.tickcolor, ticklabelstep: n.ticklabelstep, showticklabels: n.showticklabels, tickfont: i({}), tickangle: n.tickangle, tickformat: n.tickformat, tickformatstops: n.tickformatstops, tickprefix: n.tickprefix, showtickprefix: n.showtickprefix, ticksuffix: n.ticksuffix, showticksuffix: n.showticksuffix, separatethousands: n.separatethousands, exponentformat: n.exponentformat, minexponent: n.minexponent, showexponent: n.showexponent, title: { text: { valType: "string" }, font: i({}), side: { valType: "enumerated", values: ["right", "top", "bottom"], }, }, _deprecated: { title: { valType: "string" }, titlefont: i({}), titleside: { valType: "enumerated", values: ["right", "top", "bottom"], dflt: "top", }, }, }, "colorbars", "from-root", ); }, { "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plots/cartesian/layout_attributes": 579, "../../plots/font_attributes": 594, }, ], 369: [ function (t, e, r) { "use strict"; e.exports = { cn: { colorbar: "colorbar", cbbg: "cbbg", cbfill: "cbfill", cbfills: "cbfills", cbline: "cbline", cblines: "cblines", cbaxis: "cbaxis", cbtitleunshift: "cbtitleunshift", cbtitle: "cbtitle", cboutline: "cboutline", crisp: "crisp", jsPlaceholder: "js-placeholder", }, }; }, {}, ], 370: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plot_api/plot_template"), a = t("../../plots/cartesian/tick_value_defaults"), o = t("../../plots/cartesian/tick_mark_defaults"), s = t("../../plots/cartesian/tick_label_defaults"), l = t("../../plots/cartesian/prefix_suffix_defaults"), c = t("./attributes"); e.exports = function (t, e, r) { var u = i.newContainer(e, "colorbar"), f = t.colorbar || {}; function h(t, e) { return n.coerce(f, u, c, t, e); } var p = r.margin || { t: 0, b: 0, l: 0, r: 0 }, d = r.width - p.l - p.r, m = r.height - p.t - p.b, g = "v" === h("orientation"), v = h("thicknessmode"); h("thickness", "fraction" === v ? 30 / (g ? d : m) : 30); var y = h("lenmode"); h("len", "fraction" === y ? 1 : g ? m : d), h("x", g ? 1.02 : 0.5), h("xanchor", g ? "left" : "center"), h("xpad"), h("y", g ? 0.5 : 1.02), h("yanchor", g ? "middle" : "bottom"), h("ypad"), n.noneOrAll(f, u, ["x", "y"]), h("outlinecolor"), h("outlinewidth"), h("bordercolor"), h("borderwidth"), h("bgcolor"); var x = n.coerce( f, u, { ticklabelposition: { valType: "enumerated", dflt: "outside", values: g ? [ "outside", "inside", "outside top", "inside top", "outside bottom", "inside bottom", ] : [ "outside", "inside", "outside left", "inside left", "outside right", "inside right", ], }, }, "ticklabelposition", ); h( "ticklabeloverflow", -1 !== x.indexOf("inside") ? "hide past domain" : "hide past div", ), a(f, u, h, "linear"); var b = r.font, _ = { outerTicks: !1, font: b }; -1 !== x.indexOf("inside") && (_.bgColor = "black"), l(f, u, h, "linear", _), s(f, u, h, "linear", _), o(f, u, h, "linear", _), h("title.text", r._dfltTitle.colorbar); var w = u.tickfont, T = n.extendFlat({}, w, { color: b.color, size: n.bigFont(w.size), }); n.coerceFont(h, "title.font", T), h("title.side", g ? "top" : "right"); }; }, { "../../lib": 515, "../../plot_api/plot_template": 555, "../../plots/cartesian/prefix_suffix_defaults": 583, "../../plots/cartesian/tick_label_defaults": 587, "../../plots/cartesian/tick_mark_defaults": 588, "../../plots/cartesian/tick_value_defaults": 589, "./attributes": 368, }, ], 371: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("tinycolor2"), a = t("../../plots/plots"), o = t("../../registry"), s = t("../../plots/cartesian/axes"), l = t("../dragelement"), c = t("../../lib"), u = c.strTranslate, f = t("../../lib/extend").extendFlat, h = t("../../lib/setcursor"), p = t("../drawing"), d = t("../color"), m = t("../titles"), g = t("../../lib/svg_text_utils"), v = t("../colorscale/helpers").flipScale, y = t("../../plots/cartesian/axis_defaults"), x = t("../../plots/cartesian/position_defaults"), b = t("../../plots/cartesian/layout_attributes"), _ = t("../../constants/alignment"), w = _.LINE_SPACING, T = _.FROM_TL, k = _.FROM_BR, A = t("./constants").cn; e.exports = { draw: function (t) { var e = t._fullLayout._infolayer .selectAll("g." + A.colorbar) .data( (function (t) { var e, r, n, i, a = t._fullLayout, o = t.calcdata, s = []; function l(t) { return f(t, { _fillcolor: null, _line: { color: null, width: null, dash: null }, _levels: { start: null, end: null, size: null }, _filllevels: null, _fillgradient: null, _zrange: null, }); } function c() { "function" == typeof i.calc ? i.calc(t, n, e) : ((e._fillgradient = r.reversescale ? v(r.colorscale) : r.colorscale), (e._zrange = [r[i.min], r[i.max]])); } for (var u = 0; u < o.length; u++) { var h = o[u], p = (n = h[0].trace)._module.colorbar; if (!0 === n.visible && p) for ( var d = Array.isArray(p), m = d ? p : [p], g = 0; g < m.length; g++ ) { var y = (i = m[g]).container; (r = y ? n[y] : n) && r.showscale && (((e = l(r.colorbar))._id = "cb" + n.uid + (d && y ? "-" + y : "")), (e._traceIndex = n.index), (e._propPrefix = (y ? y + "." : "") + "colorbar."), (e._meta = n._meta), c(), s.push(e)); } } for (var x in a._colorAxes) if ((r = a[x]).showscale) { var b = a._colorAxes[x]; ((e = l(r.colorbar))._id = "cb" + x), (e._propPrefix = x + ".colorbar."), (e._meta = a._meta), (i = { min: "cmin", max: "cmax" }), "heatmap" !== b[0] && ((n = b[1]), (i.calc = n._module.colorbar.calc)), c(), s.push(e); } return s; })(t), function (t) { return t._id; }, ); e .enter() .append("g") .attr("class", function (t) { return t._id; }) .classed(A.colorbar, !0), e.each(function (e) { var r = n.select(this); c.ensureSingle(r, "rect", A.cbbg), c.ensureSingle(r, "g", A.cbfills), c.ensureSingle(r, "g", A.cblines), c.ensureSingle(r, "g", A.cbaxis, function (t) { t.classed(A.crisp, !0); }), c.ensureSingle( r, "g", A.cbtitleunshift, function (t) { t.append("g").classed(A.cbtitle, !0); }, ), c.ensureSingle(r, "rect", A.cboutline); var v = (function (t, e, r) { var o = "v" === e.orientation, l = e.len, h = e.lenmode, v = e.thickness, _ = e.thicknessmode, M = e.outlinewidth, S = e.borderwidth, E = e.bgcolor, L = e.xanchor, C = e.yanchor, P = e.xpad, I = e.ypad, O = e.x, z = o ? e.y : 1 - e.y, D = r._fullLayout, R = D._size, F = e._fillcolor, B = e._line, N = e.title, j = N.side, U = e._zrange || n.extent( ("function" == typeof F ? F : B.color ).domain(), ), V = "function" == typeof B.color ? B.color : function () { return B.color; }, H = "function" == typeof F ? F : function () { return F; }, q = e._levels, G = (function (t, e, r) { var n, i, a = e._levels, o = [], s = [], l = a.end + a.size / 100, c = a.size, u = 1.001 * r[0] - 0.001 * r[1], f = 1.001 * r[1] - 0.001 * r[0]; for ( i = 0; i < 1e5 && ((n = a.start + i * c), !(c > 0 ? n >= l : n <= l)); i++ ) n > u && n < f && o.push(n); if (e._fillgradient) s = [0]; else if ("function" == typeof e._fillcolor) { var h = e._filllevels; if (h) for ( l = h.end + h.size / 100, c = h.size, i = 0; i < 1e5 && ((n = h.start + i * c), !(c > 0 ? n >= l : n <= l)); i++ ) n > r[0] && n < r[1] && s.push(n); else (s = o.map(function (t) { return t - a.size / 2; })).push(s[s.length - 1] + a.size); } else e._fillcolor && "string" == typeof e._fillcolor && (s = [0]); a.size < 0 && (o.reverse(), s.reverse()); return { line: o, fill: s }; })(0, e, U), Y = G.fill, W = G.line, Z = Math.round( v * ("fraction" === _ ? (o ? R.w : R.h) : 1), ), X = Z / (o ? R.w : R.h), J = Math.round( l * ("fraction" === h ? (o ? R.h : R.w) : 1), ), K = J / (o ? R.h : R.w), Q = Math.round(o ? O * R.w + P : z * R.h + I), $ = { center: 0.5, right: 1 }[L] || 0, tt = { top: 1, middle: 0.5 }[C] || 0, et = o ? O - $ * X : z - tt * X, rt = o ? z - tt * K : O - $ * K, nt = Math.round(o ? R.h * (1 - rt) : R.w * rt); (e._lenFrac = K), (e._thickFrac = X), (e._uFrac = et), (e._vFrac = rt); var it = (e._axis = (function (t, e, r) { var n = t._fullLayout, i = "v" === e.orientation, a = { type: "linear", range: r, tickmode: e.tickmode, nticks: e.nticks, tick0: e.tick0, dtick: e.dtick, tickvals: e.tickvals, ticktext: e.ticktext, ticks: e.ticks, ticklen: e.ticklen, tickwidth: e.tickwidth, tickcolor: e.tickcolor, showticklabels: e.showticklabels, ticklabelposition: e.ticklabelposition, ticklabeloverflow: e.ticklabeloverflow, ticklabelstep: e.ticklabelstep, tickfont: e.tickfont, tickangle: e.tickangle, tickformat: e.tickformat, exponentformat: e.exponentformat, minexponent: e.minexponent, separatethousands: e.separatethousands, showexponent: e.showexponent, showtickprefix: e.showtickprefix, tickprefix: e.tickprefix, showticksuffix: e.showticksuffix, ticksuffix: e.ticksuffix, title: e.title, showline: !0, anchor: "free", side: i ? "right" : "bottom", position: 1, }, o = i ? "y" : "x", s = { type: "linear", _id: o + e._id }, l = { letter: o, font: n.font, noHover: !0, noTickson: !0, noTicklabelmode: !0, calendar: n.calendar, }; function u(t, e) { return c.coerce(a, s, b, t, e); } return y(a, s, u, l, n), x(a, s, u, l), s; })(r, e, U)); it.position = X + (o ? O + P / R.w : z + I / R.h); var at = -1 !== ["top", "bottom"].indexOf(j); o && at && ((it.title.side = j), (it.titlex = O + P / R.w), (it.titley = rt + ("top" === N.side ? K - I / R.h : I / R.h))); o || at || ((it.title.side = j), (it.titley = z + I / R.h), (it.titlex = rt + P / R.w)); if (B.color && "auto" === e.tickmode) { (it.tickmode = "linear"), (it.tick0 = q.start); var ot = q.size, st = c.constrain(J / 50, 4, 15) + 1, lt = (U[1] - U[0]) / ((e.nticks || st) * ot); if (lt > 1) { var ct = Math.pow( 10, Math.floor(Math.log(lt) / Math.LN10), ); (ot *= ct * c.roundUp(lt / ct, [2, 5, 10])), (Math.abs(q.start) / q.size + 1e-6) % 1 < 2e-6 && (it.tick0 = 0); } it.dtick = ot; } (it.domain = o ? [rt + I / R.h, rt + K - I / R.h] : [rt + P / R.w, rt + K - P / R.w]), it.setScale(), t.attr( "transform", u(Math.round(R.l), Math.round(R.t)), ); var ut, ft = t .select("." + A.cbtitleunshift) .attr( "transform", u(-Math.round(R.l), -Math.round(R.t)), ), ht = it.ticklabelposition, pt = it.title.font.size, dt = t.select("." + A.cbaxis), mt = 0, gt = 0; function vt(n, i) { var a = { propContainer: it, propName: e._propPrefix + "title", traceIndex: e._traceIndex, _meta: e._meta, placeholder: D._dfltTitle.colorbar, containerGroup: t.select("." + A.cbtitle), }, o = "h" === n.charAt(0) ? n.substr(1) : "h" + n; t .selectAll("." + o + ",." + o + "-math-group") .remove(), m.draw(r, n, f(a, i || {})); } return c.syncOrAsync( [ a.previousPromises, function () { var t, e; ((o && at) || (!o && !at)) && ("top" === j && ((t = P + R.l + R.w * O), (e = I + R.t + R.h * (1 - rt - K) + 3 + 0.75 * pt)), "bottom" === j && ((t = P + R.l + R.w * O), (e = I + R.t + R.h * (1 - rt) - 3 - 0.25 * pt)), "right" === j && ((e = I + R.t + R.h * z + 3 + 0.75 * pt), (t = P + R.l + R.w * rt)), vt(it._id + "title", { attributes: { x: t, y: e, "text-anchor": o ? "start" : "middle", }, })); }, function () { if ((!o && !at) || (o && at)) { var a, l = t.select("." + A.cbtitle), f = l.select("text"), h = [-M / 2, M / 2], d = l .select( ".h" + it._id + "title-math-group", ) .node(), m = 15.6; if ( (f.node() && (m = parseInt( f.node().style.fontSize, 10, ) * w), d ? ((a = p.bBox(d)), (gt = a.width), (mt = a.height) > m && (h[1] -= (mt - m) / 2)) : f.node() && !f.classed(A.jsPlaceholder) && ((a = p.bBox(f.node())), (gt = a.width), (mt = a.height)), o) ) { if (mt) { if (((mt += 5), "top" === j)) (it.domain[1] -= mt / R.h), (h[1] *= -1); else { it.domain[0] += mt / R.h; var v = g.lineCount(f); h[1] += (1 - v) * m; } l.attr("transform", u(h[0], h[1])), it.setScale(); } } else gt && ("right" === j && (it.domain[0] += (gt + pt / 2) / R.w), l.attr("transform", u(h[0], h[1])), it.setScale()); } t .selectAll( "." + A.cbfills + ",." + A.cblines, ) .attr( "transform", o ? u( 0, Math.round( R.h * (1 - it.domain[1]), ), ) : u(Math.round(R.w * it.domain[0]), 0), ), dt.attr( "transform", o ? u(0, Math.round(-R.t)) : u(Math.round(-R.l), 0), ); var y = t .select("." + A.cbfills) .selectAll("rect." + A.cbfill) .attr("style", "") .data(Y); y .enter() .append("rect") .classed(A.cbfill, !0) .style("stroke", "none"), y.exit().remove(); var x = U.map(it.c2p) .map(Math.round) .sort(function (t, e) { return t - e; }); y.each(function (t, a) { var s = [ 0 === a ? U[0] : (Y[a] + Y[a - 1]) / 2, a === Y.length - 1 ? U[1] : (Y[a] + Y[a + 1]) / 2, ] .map(it.c2p) .map(Math.round); o && (s[1] = c.constrain( s[1] + (s[1] > s[0]) ? 1 : -1, x[0], x[1], )); var l = n .select(this) .attr(o ? "x" : "y", Q) .attr(o ? "y" : "x", n.min(s)) .attr( o ? "width" : "height", Math.max(Z, 2), ) .attr( o ? "height" : "width", Math.max(n.max(s) - n.min(s), 2), ); if (e._fillgradient) p.gradient( l, r, e._id, o ? "vertical" : "horizontalreversed", e._fillgradient, "fill", ); else { var u = H(t).replace("e-", ""); l.attr("fill", i(u).toHexString()); } }); var b = t .select("." + A.cblines) .selectAll("path." + A.cbline) .data(B.color && B.width ? W : []); b .enter() .append("path") .classed(A.cbline, !0), b.exit().remove(), b.each(function (t) { var e = Q, r = Math.round(it.c2p(t)) + ((B.width / 2) % 1); n.select(this) .attr( "d", "M" + (o ? e + "," + r : r + "," + e) + (o ? "h" : "v") + Z, ) .call( p.lineGroupStyle, B.width, V(t), B.dash, ); }), dt .selectAll("g." + it._id + "tick,path") .remove(); var _ = Q + Z + (M || 0) / 2 - ("outside" === e.ticks ? 1 : 0), T = s.calcTicks(it), k = s.getTickSigns(it)[2]; return ( s.drawTicks(r, it, { vals: "inside" === it.ticks ? s.clipEnds(it, T) : T, layer: dt, path: s.makeTickPath(it, _, k), transFn: s.makeTransTickFn(it), }), s.drawLabels(r, it, { vals: T, layer: dt, transFn: s.makeTransTickLabelFn(it), labelFns: s.makeLabelFns(it, _), }) ); }, function () { if ((o && !at) || (!o && at)) { var t, i, a = it.position || 0, s = it._offset + it._length / 2; if ("right" === j) (i = s), (t = R.l + R.w * a + 10 + pt * (it.showticklabels ? 1 : 0.5)); else if ( ((t = s), "bottom" === j && (i = R.t + R.h * a + 10 + (-1 === ht.indexOf("inside") ? it.tickfont.size : 0) + (("intside" !== it.ticks && e.ticklen) || 0)), "top" === j) ) { var l = N.text.split("
").length; i = R.t + R.h * a + 10 - Z - w * pt * l; } vt((o ? "h" : "v") + it._id + "title", { avoid: { selection: n .select(r) .selectAll("g." + it._id + "tick"), side: j, offsetTop: o ? 0 : R.t, offsetLeft: o ? R.l : 0, maxShift: o ? D.width : D.height, }, attributes: { x: t, y: i, "text-anchor": "middle", }, transform: { rotate: o ? -90 : 0, offset: 0, }, }); } }, a.previousPromises, function () { var n, s = Z + M / 2; -1 === ht.indexOf("inside") && ((n = p.bBox(dt.node())), (s += o ? n.width : n.height)), (ut = ft.select("text")); var c = 0, f = o && "top" === j, m = !o && "right" === j, g = 0; if ( ut.node() && !ut.classed(A.jsPlaceholder) ) { var y, x = ft .select( ".h" + it._id + "title-math-group", ) .node(); x && ((o && at) || (!o && !at)) ? ((c = (n = p.bBox(x)).width), (y = n.height)) : ((c = (n = p.bBox(ft.node())).right - R.l - (o ? Q : nt)), (y = n.bottom - R.t - (o ? nt : Q)), o || "top" !== j || ((s += n.height), (g = n.height))), m && (ut.attr( "transform", u(c / 2 + pt / 2, 0), ), (c *= 2)), (s = Math.max(s, o ? c : y)); } var b = 2 * (o ? P : I) + s + S + M / 2, w = 0; !o && N.text && "bottom" === C && z <= 0 && ((b += w = b / 2), (g += w)), (D._hColorbarMoveTitle = w), (D._hColorbarMoveCBTitle = g); var F = S + M; t.select("." + A.cbbg) .attr( "x", (o ? Q : nt) - F / 2 - (o ? P : 0), ) .attr( "y", (o ? nt : Q) - (o ? J : I + g - w), ) .attr( o ? "width" : "height", Math.max(b - w, 2), ) .attr( o ? "height" : "width", Math.max(J + F, 2), ) .call(d.fill, E) .call(d.stroke, e.bordercolor) .style("stroke-width", S); var B = m ? Math.max(c - 10, 0) : 0; if ( (t .selectAll("." + A.cboutline) .attr("x", (o ? Q : nt + P) + B) .attr( "y", (o ? nt + I - J : Q) + (f ? mt : 0), ) .attr( o ? "width" : "height", Math.max(Z, 2), ) .attr( o ? "height" : "width", Math.max( J - (o ? 2 * I + mt : 2 * P + B), 2, ), ) .call(d.stroke, e.outlinecolor) .style({ fill: "none", "stroke-width": M, }), t.attr( "transform", u( R.l - (o ? $ * b : 0), R.t - (o ? 0 : (1 - tt) * b - g), ), ), !o && (S || (i(E).getAlpha() && !i.equals(D.paper_bgcolor, E)))) ) { var U = dt.selectAll("text"), V = U[0].length, H = t.select("." + A.cbbg).node(), q = p.bBox(H), G = p.getTranslate(t); U.each(function (t, e) { var r = V - 1; if (0 === e || e === r) { var n, i = p.bBox(this), a = p.getTranslate(this); if (e === r) { var o = i.right + a.x; (n = q.right + G.x + nt - S - 2 + O - o) > 0 && (n = 0); } else if (0 === e) { var s = i.left + a.x; (n = q.left + G.x + nt + S + 2 - s) < 0 && (n = 0); } n && (V < 3 ? this.setAttribute( "transform", "translate(" + n + ",0) " + this.getAttribute( "transform", ), ) : this.setAttribute( "visibility", "hidden", )); } }); } var Y = {}, W = T[L], X = k[L], K = T[C], et = k[C], rt = b - Z; o ? ("pixels" === h ? ((Y.y = z), (Y.t = J * K), (Y.b = J * et)) : ((Y.t = Y.b = 0), (Y.yt = z + l * K), (Y.yb = z - l * et)), "pixels" === _ ? ((Y.x = O), (Y.l = b * W), (Y.r = b * X)) : ((Y.l = rt * W), (Y.r = rt * X), (Y.xl = O - v * W), (Y.xr = O + v * X))) : ("pixels" === h ? ((Y.x = O), (Y.l = J * W), (Y.r = J * X)) : ((Y.l = Y.r = 0), (Y.xl = O + l * W), (Y.xr = O - l * X)), "pixels" === _ ? ((Y.y = 1 - z), (Y.t = b * K), (Y.b = b * et)) : ((Y.t = rt * K), (Y.b = rt * et), (Y.yt = z - v * K), (Y.yb = z + v * et))), a.autoMargin(r, e._id, Y); }, ], r, ); })(r, e, t); v && v.then && (t._promises || []).push(v), t._context.edits.colorbarPosition && (function (t, e, r) { var n, i, a, s = "v" === e.orientation, c = r._fullLayout._size; l.init({ element: t.node(), gd: r, prepFn: function () { (n = t.attr("transform")), h(t); }, moveFn: function (r, o) { t.attr("transform", n + u(r, o)), (i = l.align( (s ? e._uFrac : e._vFrac) + r / c.w, s ? e._thickFrac : e._lenFrac, 0, 1, e.xanchor, )), (a = l.align( (s ? e._vFrac : 1 - e._uFrac) - o / c.h, s ? e._lenFrac : e._thickFrac, 0, 1, e.yanchor, )); var f = l.getCursor( i, a, e.xanchor, e.yanchor, ); h(t, f); }, doneFn: function () { if ((h(t), void 0 !== i && void 0 !== a)) { var n = {}; (n[e._propPrefix + "x"] = i), (n[e._propPrefix + "y"] = a), void 0 !== e._traceIndex ? o.call( "_guiRestyle", r, n, e._traceIndex, ) : o.call("_guiRelayout", r, n); } }, }); })(r, e, t); }), e .exit() .each(function (e) { a.autoMargin(t, e._id); }) .remove(), e.order(); }, }; }, { "../../constants/alignment": 483, "../../lib": 515, "../../lib/extend": 505, "../../lib/setcursor": 536, "../../lib/svg_text_utils": 541, "../../plots/cartesian/axes": 566, "../../plots/cartesian/axis_defaults": 568, "../../plots/cartesian/layout_attributes": 579, "../../plots/cartesian/position_defaults": 582, "../../plots/plots": 628, "../../registry": 647, "../color": 367, "../colorscale/helpers": 378, "../dragelement": 386, "../drawing": 389, "../titles": 476, "./constants": 369, "@plotly/d3": 58, tinycolor2: 313, }, ], 372: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t) { return n.isPlainObject(t.colorbar); }; }, { "../../lib": 515 }, ], 373: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "component", name: "colorbar", attributes: t("./attributes"), supplyDefaults: t("./defaults"), draw: t("./draw").draw, hasColorbar: t("./has_colorbar"), }; }, { "./attributes": 368, "./defaults": 370, "./draw": 371, "./has_colorbar": 372, }, ], 374: [ function (t, e, r) { "use strict"; var n = t("../colorbar/attributes"), i = t("../../lib/regex").counter, a = t("../../lib/sort_object_keys"), o = t("./scales.js").scales; a(o); function s(t) { return "`" + t + "`"; } e.exports = function (t, e) { t = t || ""; var r, a = (e = e || {}).cLetter || "c", l = ("onlyIfNumerical" in e ? e.onlyIfNumerical : Boolean(t), "noScale" in e ? e.noScale : "marker.line" === t), c = "showScaleDflt" in e ? e.showScaleDflt : "z" === a, u = "string" == typeof e.colorscaleDflt ? o[e.colorscaleDflt] : null, f = e.editTypeOverride || "", h = t ? t + "." : ""; "colorAttr" in e ? ((r = e.colorAttr), e.colorAttr) : s(h + (r = { z: "z", c: "color" }[a])); var p = a + "auto", d = a + "min", m = a + "max", g = a + "mid", v = (s(h + p), s(h + d), s(h + m), {}); v[d] = v[m] = void 0; var y = {}; y[p] = !1; var x = {}; return ( "color" === r && ((x.color = { valType: "color", arrayOk: !0, editType: f || "style", }), e.anim && (x.color.anim = !0)), (x[p] = { valType: "boolean", dflt: !0, editType: "calc", impliedEdits: v, }), (x[d] = { valType: "number", dflt: null, editType: f || "plot", impliedEdits: y, }), (x[m] = { valType: "number", dflt: null, editType: f || "plot", impliedEdits: y, }), (x[g] = { valType: "number", dflt: null, editType: "calc", impliedEdits: v, }), (x.colorscale = { valType: "colorscale", editType: "calc", dflt: u, impliedEdits: { autocolorscale: !1 }, }), (x.autocolorscale = { valType: "boolean", dflt: !1 !== e.autoColorDflt, editType: "calc", impliedEdits: { colorscale: void 0 }, }), (x.reversescale = { valType: "boolean", dflt: !1, editType: "plot", }), l || ((x.showscale = { valType: "boolean", dflt: c, editType: "calc", }), (x.colorbar = n)), e.noColorAxis || (x.coloraxis = { valType: "subplotid", regex: i("coloraxis"), dflt: null, editType: "calc", }), x ); }; }, { "../../lib/regex": 532, "../../lib/sort_object_keys": 538, "../colorbar/attributes": 368, "./scales.js": 382, }, ], 375: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("./helpers").extractOpts; e.exports = function (t, e, r) { var o, s = t._fullLayout, l = r.vals, c = r.containerStr, u = c ? i.nestedProperty(e, c).get() : e, f = a(u), h = !1 !== f.auto, p = f.min, d = f.max, m = f.mid, g = function () { return i.aggNums(Math.min, null, l); }, v = function () { return i.aggNums(Math.max, null, l); }; (void 0 === p ? (p = g()) : h && (p = u._colorAx && n(p) ? Math.min(p, g()) : g()), void 0 === d ? (d = v()) : h && (d = u._colorAx && n(d) ? Math.max(d, v()) : v()), h && void 0 !== m && (d - m > m - p ? (p = m - (d - m)) : d - m < m - p && (d = m + (m - p))), p === d && ((p -= 0.5), (d += 0.5)), f._sync("min", p), f._sync("max", d), f.autocolorscale) && ((o = p * d < 0 ? s.colorscale.diverging : p >= 0 ? s.colorscale.sequential : s.colorscale.sequentialminus), f._sync("colorscale", o)); }; }, { "../../lib": 515, "./helpers": 378, "fast-isnumeric": 190 }, ], 376: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./helpers").hasColorscale, a = t("./helpers").extractOpts; e.exports = function (t, e) { function r(t, e) { var r = t["_" + e]; void 0 !== r && (t[e] = r); } function o(t, i) { var o = i.container ? n.nestedProperty(t, i.container).get() : t; if (o) if (o.coloraxis) o._colorAx = e[o.coloraxis]; else { var s = a(o), l = s.auto; (l || void 0 === s.min) && r(o, i.min), (l || void 0 === s.max) && r(o, i.max), s.autocolorscale && r(o, "colorscale"); } } for (var s = 0; s < t.length; s++) { var l = t[s], c = l._module.colorbar; if (c) if (Array.isArray(c)) for (var u = 0; u < c.length; u++) o(l, c[u]); else o(l, c); i(l, "marker.line") && o(l, { container: "marker.line", min: "cmin", max: "cmax", }); } for (var f in e._colorAxes) o(e[f], { min: "cmin", max: "cmax" }); }; }, { "../../lib": 515, "./helpers": 378 }, ], 377: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("../colorbar/has_colorbar"), o = t("../colorbar/defaults"), s = t("./scales").isValid, l = t("../../registry").traceIs; function c(t, e) { var r = e.slice(0, e.length - 1); return e ? i.nestedProperty(t, r).get() || {} : t; } e.exports = function t(e, r, u, f, h) { var p = h.prefix, d = h.cLetter, m = "_module" in r, g = c(e, p), v = c(r, p), y = c(r._template || {}, p) || {}, x = function () { return ( delete e.coloraxis, delete r.coloraxis, t(e, r, u, f, h) ); }; if (m) { var b = u._colorAxes || {}, _ = f(p + "coloraxis"); if (_) { var w = (l(r, "contour") && i.nestedProperty(r, "contours.coloring").get()) || "heatmap", T = b[_]; return void (T ? (T[2].push(x), T[0] !== w && ((T[0] = !1), i.warn( [ "Ignoring coloraxis:", _, "setting", "as it is linked to incompatible colorscales.", ].join(" "), ))) : (b[_] = [w, r, [x]])); } } var k = g[d + "min"], A = g[d + "max"], M = n(k) && n(A) && k < A; f(p + d + "auto", !M) ? f(p + d + "mid") : (f(p + d + "min"), f(p + d + "max")); var S, E, L = g.colorscale, C = y.colorscale; (void 0 !== L && (S = !s(L)), void 0 !== C && (S = !s(C)), f(p + "autocolorscale", S), f(p + "colorscale"), f(p + "reversescale"), "marker.line." !== p) && (p && m && (E = a(g)), f(p + "showscale", E) && (p && y && (v._template = y), o(g, v, u))); }; }, { "../../lib": 515, "../../registry": 647, "../colorbar/defaults": 370, "../colorbar/has_colorbar": 372, "./scales": 382, "fast-isnumeric": 190, }, ], 378: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("tinycolor2"), a = t("fast-isnumeric"), o = t("../../lib"), s = t("../color"), l = t("./scales").isValid; var c = [ "showscale", "autocolorscale", "colorscale", "reversescale", "colorbar", ], u = ["min", "max", "mid", "auto"]; function f(t) { var e, r, n, i = t._colorAx, a = i || t, o = {}; for (r = 0; r < c.length; r++) o[(n = c[r])] = a[n]; if (i) for (e = "c", r = 0; r < u.length; r++) o[(n = u[r])] = a["c" + n]; else { var s; for (r = 0; r < u.length; r++) ((s = "c" + (n = u[r])) in a || (s = "z" + n) in a) && (o[n] = a[s]); e = s.charAt(0); } return ( (o._sync = function (t, r) { var n = -1 !== u.indexOf(t) ? e + t : t; a[n] = a["_" + n] = r; }), o ); } function h(t) { for ( var e = f(t), r = e.min, n = e.max, i = e.reversescale ? p(e.colorscale) : e.colorscale, a = i.length, o = new Array(a), s = new Array(a), l = 0; l < a; l++ ) { var c = i[l]; (o[l] = r + c[0] * (n - r)), (s[l] = c[1]); } return { domain: o, range: s }; } function p(t) { for ( var e = t.length, r = new Array(e), n = e - 1, i = 0; n >= 0; n--, i++ ) { var a = t[n]; r[i] = [1 - a[0], a[1]]; } return r; } function d(t, e) { e = e || {}; for ( var r = t.domain, o = t.range, l = o.length, c = new Array(l), u = 0; u < l; u++ ) { var f = i(o[u]).toRgb(); c[u] = [f.r, f.g, f.b, f.a]; } var h, p = n.scale.linear().domain(r).range(c).clamp(!0), d = e.noNumericCheck, g = e.returnArray; return ( ((h = d && g ? p : d ? function (t) { return m(p(t)); } : g ? function (t) { return a(t) ? p(t) : i(t).isValid() ? t : s.defaultLine; } : function (t) { return a(t) ? m(p(t)) : i(t).isValid() ? t : s.defaultLine; }).domain = p.domain), (h.range = function () { return o; }), h ); } function m(t) { var e = { r: t[0], g: t[1], b: t[2], a: t[3] }; return i(e).toRgbString(); } e.exports = { hasColorscale: function (t, e, r) { var n = e ? o.nestedProperty(t, e).get() || {} : t, i = n[r || "color"], s = !1; if (o.isArrayOrTypedArray(i)) for (var c = 0; c < i.length; c++) if (a(i[c])) { s = !0; break; } return ( o.isPlainObject(n) && (s || !0 === n.showscale || (a(n.cmin) && a(n.cmax)) || l(n.colorscale) || o.isPlainObject(n.colorbar)) ); }, extractOpts: f, extractScale: h, flipScale: p, makeColorScaleFunc: d, makeColorScaleFuncFromTrace: function (t, e) { return d(h(t), e); }, }; }, { "../../lib": 515, "../color": 367, "./scales": 382, "@plotly/d3": 58, "fast-isnumeric": 190, tinycolor2: 313, }, ], 379: [ function (t, e, r) { "use strict"; var n = t("./scales"), i = t("./helpers"); e.exports = { moduleType: "component", name: "colorscale", attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyLayoutDefaults: t("./layout_defaults"), handleDefaults: t("./defaults"), crossTraceDefaults: t("./cross_trace_defaults"), calc: t("./calc"), scales: n.scales, defaultScale: n.defaultScale, getScale: n.get, isValidScale: n.isValid, hasColorscale: i.hasColorscale, extractOpts: i.extractOpts, extractScale: i.extractScale, flipScale: i.flipScale, makeColorScaleFunc: i.makeColorScaleFunc, makeColorScaleFuncFromTrace: i.makeColorScaleFuncFromTrace, }; }, { "./attributes": 374, "./calc": 375, "./cross_trace_defaults": 376, "./defaults": 377, "./helpers": 378, "./layout_attributes": 380, "./layout_defaults": 381, "./scales": 382, }, ], 380: [ function (t, e, r) { "use strict"; var n = t("../../lib/extend").extendFlat, i = t("./attributes"), a = t("./scales").scales; e.exports = { editType: "calc", colorscale: { editType: "calc", sequential: { valType: "colorscale", dflt: a.Reds, editType: "calc", }, sequentialminus: { valType: "colorscale", dflt: a.Blues, editType: "calc", }, diverging: { valType: "colorscale", dflt: a.RdBu, editType: "calc", }, }, coloraxis: n( { _isSubplotObj: !0, editType: "calc" }, i("", { colorAttr: "corresponding trace color array(s)", noColorAxis: !0, showScaleDflt: !0, }), ), }; }, { "../../lib/extend": 505, "./attributes": 374, "./scales": 382, }, ], 381: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plot_api/plot_template"), a = t("./layout_attributes"), o = t("./defaults"); e.exports = function (t, e) { function r(r, i) { return n.coerce(t, e, a, r, i); } r("colorscale.sequential"), r("colorscale.sequentialminus"), r("colorscale.diverging"); var s, l, c = e._colorAxes; function u(t, e) { return n.coerce(s, l, a.coloraxis, t, e); } for (var f in c) { var h = c[f]; if (h[0]) (s = t[f] || {}), ((l = i.newContainer(e, f, "coloraxis"))._name = f), o(s, l, e, u, { prefix: "", cLetter: "c" }); else { for (var p = 0; p < h[2].length; p++) h[2][p](); delete e._colorAxes[f]; } } }; }, { "../../lib": 515, "../../plot_api/plot_template": 555, "./defaults": 377, "./layout_attributes": 380, }, ], 382: [ function (t, e, r) { "use strict"; var n = t("tinycolor2"), i = { Greys: [ [0, "rgb(0,0,0)"], [1, "rgb(255,255,255)"], ], YlGnBu: [ [0, "rgb(8,29,88)"], [0.125, "rgb(37,52,148)"], [0.25, "rgb(34,94,168)"], [0.375, "rgb(29,145,192)"], [0.5, "rgb(65,182,196)"], [0.625, "rgb(127,205,187)"], [0.75, "rgb(199,233,180)"], [0.875, "rgb(237,248,217)"], [1, "rgb(255,255,217)"], ], Greens: [ [0, "rgb(0,68,27)"], [0.125, "rgb(0,109,44)"], [0.25, "rgb(35,139,69)"], [0.375, "rgb(65,171,93)"], [0.5, "rgb(116,196,118)"], [0.625, "rgb(161,217,155)"], [0.75, "rgb(199,233,192)"], [0.875, "rgb(229,245,224)"], [1, "rgb(247,252,245)"], ], YlOrRd: [ [0, "rgb(128,0,38)"], [0.125, "rgb(189,0,38)"], [0.25, "rgb(227,26,28)"], [0.375, "rgb(252,78,42)"], [0.5, "rgb(253,141,60)"], [0.625, "rgb(254,178,76)"], [0.75, "rgb(254,217,118)"], [0.875, "rgb(255,237,160)"], [1, "rgb(255,255,204)"], ], Bluered: [ [0, "rgb(0,0,255)"], [1, "rgb(255,0,0)"], ], RdBu: [ [0, "rgb(5,10,172)"], [0.35, "rgb(106,137,247)"], [0.5, "rgb(190,190,190)"], [0.6, "rgb(220,170,132)"], [0.7, "rgb(230,145,90)"], [1, "rgb(178,10,28)"], ], Reds: [ [0, "rgb(220,220,220)"], [0.2, "rgb(245,195,157)"], [0.4, "rgb(245,160,105)"], [1, "rgb(178,10,28)"], ], Blues: [ [0, "rgb(5,10,172)"], [0.35, "rgb(40,60,190)"], [0.5, "rgb(70,100,245)"], [0.6, "rgb(90,120,245)"], [0.7, "rgb(106,137,247)"], [1, "rgb(220,220,220)"], ], Picnic: [ [0, "rgb(0,0,255)"], [0.1, "rgb(51,153,255)"], [0.2, "rgb(102,204,255)"], [0.3, "rgb(153,204,255)"], [0.4, "rgb(204,204,255)"], [0.5, "rgb(255,255,255)"], [0.6, "rgb(255,204,255)"], [0.7, "rgb(255,153,255)"], [0.8, "rgb(255,102,204)"], [0.9, "rgb(255,102,102)"], [1, "rgb(255,0,0)"], ], Rainbow: [ [0, "rgb(150,0,90)"], [0.125, "rgb(0,0,200)"], [0.25, "rgb(0,25,255)"], [0.375, "rgb(0,152,255)"], [0.5, "rgb(44,255,150)"], [0.625, "rgb(151,255,0)"], [0.75, "rgb(255,234,0)"], [0.875, "rgb(255,111,0)"], [1, "rgb(255,0,0)"], ], Portland: [ [0, "rgb(12,51,131)"], [0.25, "rgb(10,136,186)"], [0.5, "rgb(242,211,56)"], [0.75, "rgb(242,143,56)"], [1, "rgb(217,30,30)"], ], Jet: [ [0, "rgb(0,0,131)"], [0.125, "rgb(0,60,170)"], [0.375, "rgb(5,255,255)"], [0.625, "rgb(255,255,0)"], [0.875, "rgb(250,0,0)"], [1, "rgb(128,0,0)"], ], Hot: [ [0, "rgb(0,0,0)"], [0.3, "rgb(230,0,0)"], [0.6, "rgb(255,210,0)"], [1, "rgb(255,255,255)"], ], Blackbody: [ [0, "rgb(0,0,0)"], [0.2, "rgb(230,0,0)"], [0.4, "rgb(230,210,0)"], [0.7, "rgb(255,255,255)"], [1, "rgb(160,200,255)"], ], Earth: [ [0, "rgb(0,0,130)"], [0.1, "rgb(0,180,180)"], [0.2, "rgb(40,210,40)"], [0.4, "rgb(230,230,50)"], [0.6, "rgb(120,70,20)"], [1, "rgb(255,255,255)"], ], Electric: [ [0, "rgb(0,0,0)"], [0.15, "rgb(30,0,100)"], [0.4, "rgb(120,0,100)"], [0.6, "rgb(160,90,0)"], [0.8, "rgb(230,200,0)"], [1, "rgb(255,250,220)"], ], Viridis: [ [0, "#440154"], [0.06274509803921569, "#48186a"], [0.12549019607843137, "#472d7b"], [0.18823529411764706, "#424086"], [0.25098039215686274, "#3b528b"], [0.3137254901960784, "#33638d"], [0.3764705882352941, "#2c728e"], [0.4392156862745098, "#26828e"], [0.5019607843137255, "#21918c"], [0.5647058823529412, "#1fa088"], [0.6274509803921569, "#28ae80"], [0.6901960784313725, "#3fbc73"], [0.7529411764705882, "#5ec962"], [0.8156862745098039, "#84d44b"], [0.8784313725490196, "#addc30"], [0.9411764705882353, "#d8e219"], [1, "#fde725"], ], Cividis: [ [0, "rgb(0,32,76)"], [0.058824, "rgb(0,42,102)"], [0.117647, "rgb(0,52,110)"], [0.176471, "rgb(39,63,108)"], [0.235294, "rgb(60,74,107)"], [0.294118, "rgb(76,85,107)"], [0.352941, "rgb(91,95,109)"], [0.411765, "rgb(104,106,112)"], [0.470588, "rgb(117,117,117)"], [0.529412, "rgb(131,129,120)"], [0.588235, "rgb(146,140,120)"], [0.647059, "rgb(161,152,118)"], [0.705882, "rgb(176,165,114)"], [0.764706, "rgb(192,177,109)"], [0.823529, "rgb(209,191,102)"], [0.882353, "rgb(225,204,92)"], [0.941176, "rgb(243,219,79)"], [1, "rgb(255,233,69)"], ], }, a = i.RdBu; function o(t) { var e = 0; if (!Array.isArray(t) || t.length < 2) return !1; if (!t[0] || !t[t.length - 1]) return !1; if (0 != +t[0][0] || 1 != +t[t.length - 1][0]) return !1; for (var r = 0; r < t.length; r++) { var i = t[r]; if (2 !== i.length || +i[0] < e || !n(i[1]).isValid()) return !1; e = +i[0]; } return !0; } e.exports = { scales: i, defaultScale: a, get: function (t, e) { if ((e || (e = a), !t)) return e; function r() { try { t = i[t] || JSON.parse(t); } catch (r) { t = e; } } return ( "string" == typeof t && (r(), "string" == typeof t && r()), o(t) ? t : e ); }, isValid: function (t) { return void 0 !== i[t] || o(t); }, }; }, { tinycolor2: 313 }, ], 383: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n, i) { var a = (t - r) / (n - r), o = a + e / (n - r), s = (a + o) / 2; return "left" === i || "bottom" === i ? a : "center" === i || "middle" === i ? s : "right" === i || "top" === i ? o : a < 2 / 3 - s ? a : o > 4 / 3 - s ? o : s; }; }, {}, ], 384: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = [ ["sw-resize", "s-resize", "se-resize"], ["w-resize", "move", "e-resize"], ["nw-resize", "n-resize", "ne-resize"], ]; e.exports = function (t, e, r, a) { return ( (t = "left" === r ? 0 : "center" === r ? 1 : "right" === r ? 2 : n.constrain(Math.floor(3 * t), 0, 2)), (e = "bottom" === a ? 0 : "middle" === a ? 1 : "top" === a ? 2 : n.constrain(Math.floor(3 * e), 0, 2)), i[e][t] ); }; }, { "../../lib": 515 }, ], 385: [ function (t, e, r) { "use strict"; (r.selectMode = function (t) { return "lasso" === t || "select" === t; }), (r.drawMode = function (t) { return ( "drawclosedpath" === t || "drawopenpath" === t || "drawline" === t || "drawrect" === t || "drawcircle" === t ); }), (r.openMode = function (t) { return "drawline" === t || "drawopenpath" === t; }), (r.rectMode = function (t) { return ( "select" === t || "drawline" === t || "drawrect" === t || "drawcircle" === t ); }), (r.freeMode = function (t) { return ( "lasso" === t || "drawclosedpath" === t || "drawopenpath" === t ); }), (r.selectingOrDrawing = function (t) { return r.freeMode(t) || r.rectMode(t); }); }, {}, ], 386: [ function (t, e, r) { "use strict"; var n = t("mouse-event-offset"), i = t("has-hover"), a = t("has-passive-events"), o = t("../../lib").removeElement, s = t("../../plots/cartesian/constants"), l = (e.exports = {}); (l.align = t("./align")), (l.getCursor = t("./cursor")); var c = t("./unhover"); function u() { var t = document.createElement("div"); t.className = "dragcover"; var e = t.style; return ( (e.position = "fixed"), (e.left = 0), (e.right = 0), (e.top = 0), (e.bottom = 0), (e.zIndex = 999999999), (e.background = "none"), document.body.appendChild(t), t ); } function f(t) { return n( t.changedTouches ? t.changedTouches[0] : t, document.body, ); } (l.unhover = c.wrapped), (l.unhoverRaw = c.raw), (l.init = function (t) { var e, r, n, c, h, p, d, m, g = t.gd, v = 1, y = g._context.doubleClickDelay, x = t.element; g._mouseDownTime || (g._mouseDownTime = 0), (x.style.pointerEvents = "all"), (x.onmousedown = _), a ? (x._ontouchstart && x.removeEventListener( "touchstart", x._ontouchstart, ), (x._ontouchstart = _), x.addEventListener("touchstart", _, { passive: !1, })) : (x.ontouchstart = _); var b = t.clampFn || function (t, e, r) { return ( Math.abs(t) < r && (t = 0), Math.abs(e) < r && (e = 0), [t, e] ); }; function _(a) { (g._dragged = !1), (g._dragging = !0); var o = f(a); (e = o[0]), (r = o[1]), (d = a.target), (p = a), (m = 2 === a.buttons || a.ctrlKey), void 0 === a.clientX && void 0 === a.clientY && ((a.clientX = e), (a.clientY = r)), (n = new Date().getTime()) - g._mouseDownTime < y ? (v += 1) : ((v = 1), (g._mouseDownTime = n)), t.prepFn && t.prepFn(a, e, r), i && !m ? ((h = u()).style.cursor = window.getComputedStyle(x).cursor) : i || ((h = document), (c = window.getComputedStyle( document.documentElement, ).cursor), (document.documentElement.style.cursor = window.getComputedStyle(x).cursor)), document.addEventListener("mouseup", T), document.addEventListener("touchend", T), !1 !== t.dragmode && (a.preventDefault(), document.addEventListener("mousemove", w), document.addEventListener("touchmove", w, { passive: !1, })); } function w(n) { n.preventDefault(); var i = f(n), a = t.minDrag || s.MINDRAG, o = b(i[0] - e, i[1] - r, a), c = o[0], u = o[1]; (c || u) && ((g._dragged = !0), l.unhover(g, n)), g._dragged && t.moveFn && !m && ((g._dragdata = { element: x, dx: c, dy: u }), t.moveFn(c, u)); } function T(e) { if ( (delete g._dragdata, !1 !== t.dragmode && (e.preventDefault(), document.removeEventListener("mousemove", w), document.removeEventListener("touchmove", w)), document.removeEventListener("mouseup", T), document.removeEventListener("touchend", T), i ? o(h) : c && ((h.documentElement.style.cursor = c), (c = null)), g._dragging) ) { if ( ((g._dragging = !1), new Date().getTime() - g._mouseDownTime > y && (v = Math.max(v - 1, 1)), g._dragged) ) t.doneFn && t.doneFn(); else if ((t.clickFn && t.clickFn(v, p), !m)) { var r; try { r = new MouseEvent("click", e); } catch (t) { var n = f(e); (r = document.createEvent( "MouseEvents", )).initMouseEvent( "click", e.bubbles, e.cancelable, e.view, e.detail, e.screenX, e.screenY, n[0], n[1], e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget, ); } d.dispatchEvent(r); } (g._dragging = !1), (g._dragged = !1); } else g._dragged = !1; } }), (l.coverSlip = u); }, { "../../lib": 515, "../../plots/cartesian/constants": 573, "./align": 383, "./cursor": 384, "./unhover": 387, "has-hover": 228, "has-passive-events": 229, "mouse-event-offset": 242, }, ], 387: [ function (t, e, r) { "use strict"; var n = t("../../lib/events"), i = t("../../lib/throttle"), a = t("../../lib/dom").getGraphDiv, o = t("../fx/constants"), s = (e.exports = {}); (s.wrapped = function (t, e, r) { (t = a(t))._fullLayout && i.clear(t._fullLayout._uid + o.HOVERID), s.raw(t, e, r); }), (s.raw = function (t, e) { var r = t._fullLayout, i = t._hoverdata; e || (e = {}), (e.target && !t._dragged && !1 === n.triggerHandler(t, "plotly_beforehover", e)) || (r._hoverlayer.selectAll("g").remove(), r._hoverlayer.selectAll("line").remove(), r._hoverlayer.selectAll("circle").remove(), (t._hoverdata = void 0), e.target && i && t.emit("plotly_unhover", { event: e, points: i })); }); }, { "../../lib/dom": 503, "../../lib/events": 504, "../../lib/throttle": 542, "../fx/constants": 401, }, ], 388: [ function (t, e, r) { "use strict"; (r.dash = { valType: "string", values: [ "solid", "dot", "dash", "longdash", "dashdot", "longdashdot", ], dflt: "solid", editType: "style", }), (r.pattern = { shape: { valType: "enumerated", values: ["", "/", "\\", "x", "-", "|", "+", "."], dflt: "", arrayOk: !0, editType: "style", }, fillmode: { valType: "enumerated", values: ["replace", "overlay"], dflt: "replace", editType: "style", }, bgcolor: { valType: "color", arrayOk: !0, editType: "style", }, fgcolor: { valType: "color", arrayOk: !0, editType: "style", }, fgopacity: { valType: "number", editType: "style", min: 0, max: 1, }, size: { valType: "number", min: 0, dflt: 8, arrayOk: !0, editType: "style", }, solidity: { valType: "number", min: 0, max: 1, dflt: 0.3, arrayOk: !0, editType: "style", }, editType: "style", }); }, {}, ], 389: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = i.numberFormat, o = t("fast-isnumeric"), s = t("tinycolor2"), l = t("../../registry"), c = t("../color"), u = t("../colorscale"), f = i.strTranslate, h = t("../../lib/svg_text_utils"), p = t("../../constants/xmlns_namespaces"), d = t("../../constants/alignment").LINE_SPACING, m = t("../../constants/interactions").DESELECTDIM, g = t("../../traces/scatter/subtypes"), v = t("../../traces/scatter/make_bubble_size_func"), y = t("../../components/fx/helpers").appendArrayPointValue, x = (e.exports = {}); function b(t, e, r) { var n = e.fillpattern, i = n && x.getPatternAttr(n.shape, 0, ""); if (i) { var a = x.getPatternAttr(n.bgcolor, 0, null), o = x.getPatternAttr(n.fgcolor, 0, null), s = n.fgopacity, l = x.getPatternAttr(n.size, 0, 8), u = x.getPatternAttr(n.solidity, 0, 0.3), f = e.uid; x.pattern( t, "point", r, f, i, l, u, void 0, n.fillmode, a, o, s, ); } else e.fillcolor && t.call(c.fill, e.fillcolor); } (x.font = function (t, e, r, n) { i.isPlainObject(e) && ((n = e.color), (r = e.size), (e = e.family)), e && t.style("font-family", e), r + 1 && t.style("font-size", r + "px"), n && t.call(c.fill, n); }), (x.setPosition = function (t, e, r) { t.attr("x", e).attr("y", r); }), (x.setSize = function (t, e, r) { t.attr("width", e).attr("height", r); }), (x.setRect = function (t, e, r, n, i) { t.call(x.setPosition, e, r).call(x.setSize, n, i); }), (x.translatePoint = function (t, e, r, n) { var i = r.c2p(t.x), a = n.c2p(t.y); return ( !!(o(i) && o(a) && e.node()) && ("text" === e.node().nodeName ? e.attr("x", i).attr("y", a) : e.attr("transform", f(i, a)), !0) ); }), (x.translatePoints = function (t, e, r) { t.each(function (t) { var i = n.select(this); x.translatePoint(t, i, e, r); }); }), (x.hideOutsideRangePoint = function (t, e, r, n, i, a) { e.attr( "display", r.isPtWithinRange(t, i) && n.isPtWithinRange(t, a) ? null : "none", ); }), (x.hideOutsideRangePoints = function (t, e) { if (e._hasClipOnAxisFalse) { var r = e.xaxis, i = e.yaxis; t.each(function (e) { var a = e[0].trace, o = a.xcalendar, s = a.ycalendar, c = l.traceIs(a, "bar-like") ? ".bartext" : ".point,.textpoint"; t.selectAll(c).each(function (t) { x.hideOutsideRangePoint( t, n.select(this), r, i, o, s, ); }); }); } }), (x.crispRound = function (t, e, r) { return e && o(e) ? t._context.staticPlot ? e : e < 1 ? 1 : Math.round(e) : r || 0; }), (x.singleLineStyle = function (t, e, r, n, i) { e.style("fill", "none"); var a = (((t || [])[0] || {}).trace || {}).line || {}, o = r || a.width || 0, s = i || a.dash || ""; c.stroke(e, n || a.color), x.dashLine(e, s, o); }), (x.lineGroupStyle = function (t, e, r, i) { t.style("fill", "none").each(function (t) { var a = (((t || [])[0] || {}).trace || {}).line || {}, o = e || a.width || 0, s = i || a.dash || ""; n.select(this) .call(c.stroke, r || a.color) .call(x.dashLine, s, o); }); }), (x.dashLine = function (t, e, r) { (r = +r || 0), (e = x.dashStyle(e, r)), t.style({ "stroke-dasharray": e, "stroke-width": r + "px", }); }), (x.dashStyle = function (t, e) { e = +e || 1; var r = Math.max(e, 3); return ( "solid" === t ? (t = "") : "dot" === t ? (t = r + "px," + r + "px") : "dash" === t ? (t = 3 * r + "px," + 3 * r + "px") : "longdash" === t ? (t = 5 * r + "px," + 5 * r + "px") : "dashdot" === t ? (t = 3 * r + "px," + r + "px," + r + "px," + r + "px") : "longdashdot" === t && (t = 5 * r + "px," + 2 * r + "px," + r + "px," + 2 * r + "px"), t ); }), (x.singleFillStyle = function (t, e) { var r = n.select(t.node()); b(t, ((r.data()[0] || [])[0] || {}).trace || {}, e); }), (x.fillGroupStyle = function (t, e) { t.style("stroke-width", 0).each(function (t) { var r = n.select(this); t[0].trace && b(r, t[0].trace, e); }); }); var _ = t("./symbol_defs"); (x.symbolNames = []), (x.symbolFuncs = []), (x.symbolBackOffs = []), (x.symbolNeedLines = {}), (x.symbolNoDot = {}), (x.symbolNoFill = {}), (x.symbolList = []), Object.keys(_).forEach(function (t) { var e = _[t], r = e.n; x.symbolList.push( r, String(r), t, r + 100, String(r + 100), t + "-open", ), (x.symbolNames[r] = t), (x.symbolFuncs[r] = e.f), (x.symbolBackOffs[r] = e.backoff || 0), e.needLine && (x.symbolNeedLines[r] = !0), e.noDot ? (x.symbolNoDot[r] = !0) : x.symbolList.push( r + 200, String(r + 200), t + "-dot", r + 300, String(r + 300), t + "-open-dot", ), e.noFill && (x.symbolNoFill[r] = !0); }); var w = x.symbolNames.length; function T(t, e, r, n) { var i = t % 100; return ( x.symbolFuncs[i](e, r, n) + (t >= 200 ? "M0,0.5L0.5,0L0,-0.5L-0.5,0Z" : "") ); } x.symbolNumber = function (t) { if (o(t)) t = +t; else if ("string" == typeof t) { var e = 0; t.indexOf("-open") > 0 && ((e = 100), (t = t.replace("-open", ""))), t.indexOf("-dot") > 0 && ((e += 200), (t = t.replace("-dot", ""))), (t = x.symbolNames.indexOf(t)) >= 0 && (t += e); } return t % 100 >= w || t >= 400 ? 0 : Math.floor(Math.max(t, 0)); }; var k = { x1: 1, x2: 0, y1: 0, y2: 0 }, A = { x1: 0, x2: 0, y1: 1, y2: 0 }, M = a("~f"), S = { radial: { node: "radialGradient" }, radialreversed: { node: "radialGradient", reversed: !0 }, horizontal: { node: "linearGradient", attrs: k }, horizontalreversed: { node: "linearGradient", attrs: k, reversed: !0, }, vertical: { node: "linearGradient", attrs: A }, verticalreversed: { node: "linearGradient", attrs: A, reversed: !0, }, }; (x.gradient = function (t, e, r, a, o, l) { for ( var u = o.length, f = S[a], h = new Array(u), p = 0; p < u; p++ ) f.reversed ? (h[u - 1 - p] = [M(100 * (1 - o[p][0])), o[p][1]]) : (h[p] = [M(100 * o[p][0]), o[p][1]]); var d = e._fullLayout, m = "g" + d._uid + "-" + r, g = d._defs .select(".gradients") .selectAll("#" + m) .data([a + h.join(";")], i.identity); g.exit().remove(), g .enter() .append(f.node) .each(function () { var t = n.select(this); f.attrs && t.attr(f.attrs), t.attr("id", m); var e = t.selectAll("stop").data(h); e.exit().remove(), e.enter().append("stop"), e.each(function (t) { var e = s(t[1]); n.select(this).attr({ offset: t[0] + "%", "stop-color": c.tinyRGB(e), "stop-opacity": e.getAlpha(), }); }); }), t.style(l, V(m, e)).style(l + "-opacity", null), t.classed("gradient_filled", !0); }), (x.pattern = function (t, e, r, a, o, l, u, f, h, p, d, m) { var g = "legend" === e; f && ("overlay" === h ? ((p = f), (d = c.contrast(p))) : ((p = void 0), (d = f))); var v, y, x, b, _, w, T, k, A, M, S, E = r._fullLayout, L = "p" + E._uid + "-" + a, C = {}, P = s(d), I = c.tinyRGB(P), O = m * P.getAlpha(); switch (o) { case "/": (v = l * Math.sqrt(2)), (y = l * Math.sqrt(2)), (w = "path"), (C = { d: (x = "M-" + v / 4 + "," + y / 4 + "l" + v / 2 + ",-" + y / 2 + "M0," + y + "L" + v + ",0M" + (v / 4) * 3 + "," + (y / 4) * 5 + "l" + v / 2 + ",-" + y / 2), opacity: O, stroke: I, "stroke-width": (b = u * l) + "px", }); break; case "\\": (v = l * Math.sqrt(2)), (y = l * Math.sqrt(2)), (w = "path"), (C = { d: (x = "M" + (v / 4) * 3 + ",-" + y / 4 + "l" + v / 2 + "," + y / 2 + "M0,0L" + v + "," + y + "M-" + v / 4 + "," + (y / 4) * 3 + "l" + v / 2 + "," + y / 2), opacity: O, stroke: I, "stroke-width": (b = u * l) + "px", }); break; case "x": (v = l * Math.sqrt(2)), (y = l * Math.sqrt(2)), (x = "M-" + v / 4 + "," + y / 4 + "l" + v / 2 + ",-" + y / 2 + "M0," + y + "L" + v + ",0M" + (v / 4) * 3 + "," + (y / 4) * 5 + "l" + v / 2 + ",-" + y / 2 + "M" + (v / 4) * 3 + ",-" + y / 4 + "l" + v / 2 + "," + y / 2 + "M0,0L" + v + "," + y + "M-" + v / 4 + "," + (y / 4) * 3 + "l" + v / 2 + "," + y / 2), (b = l - l * Math.sqrt(1 - u)), (w = "path"), (C = { d: x, opacity: O, stroke: I, "stroke-width": b + "px", }); break; case "|": (w = "path"), (w = "path"), (C = { d: (x = "M" + (v = l) / 2 + ",0L" + v / 2 + "," + (y = l)), opacity: O, stroke: I, "stroke-width": (b = u * l) + "px", }); break; case "-": (w = "path"), (w = "path"), (C = { d: (x = "M0," + (y = l) / 2 + "L" + (v = l) + "," + y / 2), opacity: O, stroke: I, "stroke-width": (b = u * l) + "px", }); break; case "+": (w = "path"), (x = "M" + (v = l) / 2 + ",0L" + v / 2 + "," + (y = l) + "M0," + y / 2 + "L" + v + "," + y / 2), (b = l - l * Math.sqrt(1 - u)), (w = "path"), (C = { d: x, opacity: O, stroke: I, "stroke-width": b + "px", }); break; case ".": (v = l), (y = l), u < Math.PI / 4 ? (_ = Math.sqrt((u * l * l) / Math.PI)) : ((T = u), (k = Math.PI / 4), (A = 1), (M = l / 2), (S = l / Math.sqrt(2)), (_ = M + ((S - M) * (T - k)) / (A - k))), (w = "circle"), (C = { cx: v / 2, cy: y / 2, r: _, opacity: O, fill: I, }); } var z = [ o || "noSh", p || "noBg", d || "noFg", l, u, ].join(";"), D = E._defs .select(".patterns") .selectAll("#" + L) .data([z], i.identity); D.exit().remove(), D.enter() .append("pattern") .each(function () { var t = n.select(this); if ( (t.attr({ id: L, width: v + "px", height: y + "px", patternUnits: "userSpaceOnUse", patternTransform: g ? "scale(0.8)" : "", }), p) ) { var e = s(p), r = c.tinyRGB(e), i = e.getAlpha(), a = t.selectAll("rect").data([0]); a.exit().remove(), a .enter() .append("rect") .attr({ width: v + "px", height: y + "px", fill: r, "fill-opacity": i, }); } var o = t.selectAll(w).data([0]); o.exit().remove(), o.enter().append(w).attr(C); }), t.style("fill", V(L, r)).style("fill-opacity", null), t.classed("pattern_filled", !0); }), (x.initGradients = function (t) { var e = t._fullLayout; i .ensureSingle(e._defs, "g", "gradients") .selectAll("linearGradient,radialGradient") .remove(), n .select(t) .selectAll(".gradient_filled") .classed("gradient_filled", !1); }), (x.initPatterns = function (t) { var e = t._fullLayout; i .ensureSingle(e._defs, "g", "patterns") .selectAll("pattern") .remove(), n .select(t) .selectAll(".pattern_filled") .classed("pattern_filled", !1); }), (x.getPatternAttr = function (t, e, r) { return t && i.isArrayOrTypedArray(t) ? e < t.length ? t[e] : r : t; }), (x.pointStyle = function (t, e, r) { if (t.size()) { var i = x.makePointStyleFns(e); t.each(function (t) { x.singlePointStyle(t, n.select(this), e, i, r); }); } }), (x.singlePointStyle = function (t, e, r, n, a) { var o = r.marker, s = o.line; if ( (e.style( "opacity", n.selectedOpacityFn ? n.selectedOpacityFn(t) : void 0 === t.mo ? o.opacity : t.mo, ), n.ms2mrc) ) { var l; (l = "various" === t.ms || "various" === o.size ? 3 : n.ms2mrc(t.ms)), (t.mrc = l), n.selectedSizeFn && (l = t.mrc = n.selectedSizeFn(t)); var u = x.symbolNumber(t.mx || o.symbol) || 0; t.om = u % 200 >= 100; var f = rt(t, r), h = G(t, r); e.attr("d", T(u, l, f, h)); } var p, d, m, g = !1; if (t.so) (m = s.outlierwidth), (d = s.outliercolor), (p = o.outliercolor); else { var v = (s || {}).width; (m = (t.mlw + 1 || v + 1 || (t.trace ? (t.trace.marker.line || {}).width : 0) + 1) - 1 || 0), (d = "mlc" in t ? (t.mlcc = n.lineScale(t.mlc)) : i.isArrayOrTypedArray(s.color) ? c.defaultLine : s.color), i.isArrayOrTypedArray(o.color) && ((p = c.defaultLine), (g = !0)), (p = "mc" in t ? (t.mcc = n.markerScale(t.mc)) : o.color || "rgba(0,0,0,0)"), n.selectedColorFn && (p = n.selectedColorFn(t)); } if (t.om) e.call(c.stroke, p).style({ "stroke-width": (m || 1) + "px", fill: "none", }); else { e.style("stroke-width", (t.isBlank ? 0 : m) + "px"); var y = o.gradient, b = t.mgt; b ? (g = !0) : (b = y && y.type), i.isArrayOrTypedArray(b) && ((b = b[0]), S[b] || (b = 0)); var _ = o.pattern, w = _ && x.getPatternAttr(_.shape, t.i, ""); if (b && "none" !== b) { var k = t.mgc; k ? (g = !0) : (k = y.color); var A = r.uid; g && (A += "-" + t.i), x.gradient( e, a, A, b, [ [0, k], [1, p], ], "fill", ); } else if (w) { var M = x.getPatternAttr(_.bgcolor, t.i, null), E = x.getPatternAttr(_.fgcolor, t.i, null), L = _.fgopacity, C = x.getPatternAttr(_.size, t.i, 8), P = x.getPatternAttr(_.solidity, t.i, 0.3), I = t.mcc || i.isArrayOrTypedArray(_.shape) || i.isArrayOrTypedArray(_.bgcolor) || i.isArrayOrTypedArray(_.size) || i.isArrayOrTypedArray(_.solidity), O = r.uid; I && (O += "-" + t.i), x.pattern( e, "point", a, O, w, C, P, t.mcc, _.fillmode, M, E, L, ); } else c.fill(e, p); m && c.stroke(e, d); } }), (x.makePointStyleFns = function (t) { var e = {}, r = t.marker; return ( (e.markerScale = x.tryColorscale(r, "")), (e.lineScale = x.tryColorscale(r, "line")), l.traceIs(t, "symbols") && (e.ms2mrc = g.isBubble(t) ? v(t) : function () { return (r.size || 6) / 2; }), t.selectedpoints && i.extendFlat(e, x.makeSelectedPointStyleFns(t)), e ); }), (x.makeSelectedPointStyleFns = function (t) { var e = {}, r = t.selected || {}, n = t.unselected || {}, a = t.marker || {}, o = r.marker || {}, s = n.marker || {}, c = a.opacity, u = o.opacity, f = s.opacity, h = void 0 !== u, p = void 0 !== f; (i.isArrayOrTypedArray(c) || h || p) && (e.selectedOpacityFn = function (t) { var e = void 0 === t.mo ? a.opacity : t.mo; return t.selected ? (h ? u : e) : p ? f : m * e; }); var d = a.color, g = o.color, v = s.color; (g || v) && (e.selectedColorFn = function (t) { var e = t.mcc || d; return t.selected ? g || e : v || e; }); var y = a.size, x = o.size, b = s.size, _ = void 0 !== x, w = void 0 !== b; return ( l.traceIs(t, "symbols") && (_ || w) && (e.selectedSizeFn = function (t) { var e = t.mrc || y / 2; return t.selected ? (_ ? x / 2 : e) : w ? b / 2 : e; }), e ); }), (x.makeSelectedTextStyleFns = function (t) { var e = {}, r = t.selected || {}, n = t.unselected || {}, i = t.textfont || {}, a = r.textfont || {}, o = n.textfont || {}, s = i.color, l = a.color, u = o.color; return ( (e.selectedTextColorFn = function (t) { var e = t.tc || s; return t.selected ? l || e : u || (l ? e : c.addOpacity(e, m)); }), e ); }), (x.selectedPointStyle = function (t, e) { if (t.size() && e.selectedpoints) { var r = x.makeSelectedPointStyleFns(e), i = e.marker || {}, a = []; r.selectedOpacityFn && a.push(function (t, e) { t.style("opacity", r.selectedOpacityFn(e)); }), r.selectedColorFn && a.push(function (t, e) { c.fill(t, r.selectedColorFn(e)); }), r.selectedSizeFn && a.push(function (t, n) { var a = n.mx || i.symbol || 0, o = r.selectedSizeFn(n); t.attr( "d", T(x.symbolNumber(a), o, rt(n, e), G(n, e)), ), (n.mrc2 = o); }), a.length && t.each(function (t) { for ( var e = n.select(this), r = 0; r < a.length; r++ ) a[r](e, t); }); } }), (x.tryColorscale = function (t, e) { var r = e ? i.nestedProperty(t, e).get() : t; if (r) { var n = r.color; if ( (r.colorscale || r._colorAx) && i.isArrayOrTypedArray(n) ) return u.makeColorScaleFuncFromTrace(r); } return i.identity; }); var E = { start: 1, end: -1, middle: 0, bottom: 1, top: -1 }; function L(t, e, r, i, a) { var o = n.select(t.node().parentNode), s = -1 !== e.indexOf("top") ? "top" : -1 !== e.indexOf("bottom") ? "bottom" : "middle", l = -1 !== e.indexOf("left") ? "end" : -1 !== e.indexOf("right") ? "start" : "middle", c = i ? i / 0.8 + 1 : 0, u = (h.lineCount(t) - 1) * d + 1, p = E[l] * c, m = 0.75 * r + E[s] * c + ((E[s] - 1) * u * r) / 2; t.attr("text-anchor", l), a || o.attr("transform", f(p, m)); } function C(t, e) { var r = t.ts || e.textfont.size; return o(r) && r > 0 ? r : 0; } (x.textPointStyle = function (t, e, r) { if (t.size()) { var a; if (e.selectedpoints) { var o = x.makeSelectedTextStyleFns(e); a = o.selectedTextColorFn; } var s = e.texttemplate, l = r._fullLayout; t.each(function (t) { var o = n.select(this), c = s ? i.extractOption(t, e, "txt", "texttemplate") : i.extractOption(t, e, "tx", "text"); if (c || 0 === c) { if (s) { var u = e._module.formatLabels, f = u ? u(t, e, l) : {}, p = {}; y(p, e, t.i); var d = e._meta || {}; c = i.texttemplateString( c, f, l._d3locale, p, t, d, ); } var m = t.tp || e.textposition, g = C(t, e), v = a ? a(t) : t.tc || e.textfont.color; o.call(x.font, t.tf || e.textfont.family, g, v) .text(c) .call(h.convertToTspans, r) .call(L, m, g, t.mrc); } else o.remove(); }); } }), (x.selectedTextStyle = function (t, e) { if (t.size() && e.selectedpoints) { var r = x.makeSelectedTextStyleFns(e); t.each(function (t) { var i = n.select(this), a = r.selectedTextColorFn(t), o = t.tp || e.textposition, s = C(t, e); c.fill(i, a); var u = l.traceIs(e, "bar-like"); L(i, o, s, t.mrc2 || t.mrc, u); }); } }); var P, I; function O(t, e, r) { return r && (t = N(t)), e ? D(t[1]) : z(t[0]); } function z(t) { var e = n.round(t, 2); return (P = e), e; } function D(t) { var e = n.round(t, 2); return (I = e), e; } function R(t, e, r, n) { var i = t[0] - e[0], a = t[1] - e[1], o = r[0] - e[0], s = r[1] - e[1], l = Math.pow(i * i + a * a, 0.25), c = Math.pow(o * o + s * s, 0.25), u = (c * c * i - l * l * o) * n, f = (c * c * a - l * l * s) * n, h = 3 * c * (l + c), p = 3 * l * (l + c); return [ [z(e[0] + (h && u / h)), D(e[1] + (h && f / h))], [z(e[0] - (p && u / p)), D(e[1] - (p && f / p))], ]; } (x.smoothopen = function (t, e) { if (t.length < 3) return "M" + t.join("L"); var r, n = "M" + t[0], i = []; for (r = 1; r < t.length - 1; r++) i.push(R(t[r - 1], t[r], t[r + 1], e)); for ( n += "Q" + i[0][0] + " " + t[1], r = 2; r < t.length - 1; r++ ) n += "C" + i[r - 2][1] + " " + i[r - 1][0] + " " + t[r]; return (n += "Q" + i[t.length - 3][1] + " " + t[t.length - 1]); }), (x.smoothclosed = function (t, e) { if (t.length < 3) return "M" + t.join("L") + "Z"; var r, n = "M" + t[0], i = t.length - 1, a = [R(t[i], t[0], t[1], e)]; for (r = 1; r < i; r++) a.push(R(t[r - 1], t[r], t[r + 1], e)); for ( a.push(R(t[i - 1], t[i], t[0], e)), r = 1; r <= i; r++ ) n += "C" + a[r - 1][1] + " " + a[r][0] + " " + t[r]; return (n += "C" + a[i][1] + " " + a[0][0] + " " + t[0] + "Z"); }); var F = { hv: function (t, e, r) { return "H" + z(e[0]) + "V" + O(e, 1, r); }, vh: function (t, e, r) { return "V" + D(e[1]) + "H" + O(e, 0, r); }, hvh: function (t, e, r) { return ( "H" + z((t[0] + e[0]) / 2) + "V" + D(e[1]) + "H" + O(e, 0, r) ); }, vhv: function (t, e, r) { return ( "V" + D((t[1] + e[1]) / 2) + "H" + z(e[0]) + "V" + O(e, 1, r) ); }, }, B = function (t, e, r) { return "L" + O(e, 0, r) + "," + O(e, 1, r); }; function N(t, e) { var r = t.backoff, n = t.trace, a = t.d, o = t.i; if ( r && n && n.marker && n.marker.angle % 360 == 0 && n.line && "spline" !== n.line.shape ) { var s = i.isArrayOrTypedArray(r), l = t, c = e ? e[0] : P || 0, u = e ? e[1] : I || 0, f = l[0], h = l[1], p = f - c, d = h - u, m = Math.atan2(d, p), g = s ? r[o] : r; if ("auto" === g) { var v = l.i; "scatter" === n.type && v--; var y = l.marker; (g = y ? x.symbolBackOffs[x.symbolNumber(y.symbol)] * y.size : 0), (g += x.getMarkerStandoff(a[v], n) || 0); } var b = f - g * Math.cos(m), _ = h - g * Math.sin(m); ((b <= f && b >= c) || (b >= f && b <= c)) && ((_ <= h && _ >= u) || (_ >= h && _ <= u)) && (t = [b, _]); } return t; } (x.steps = function (t) { var e = F[t] || B; return function (t) { for ( var r = "M" + z(t[0][0]) + "," + D(t[0][1]), n = t.length, i = 1; i < n; i++ ) r += e(t[i - 1], t[i], i === n - 1); return r; }; }), (x.applyBackoff = N), (x.makeTester = function () { var t = i.ensureSingleById( n.select("body"), "svg", "js-plotly-tester", function (t) { t.attr(p.svgAttrs).style({ position: "absolute", left: "-10000px", top: "-10000px", width: "9000px", height: "9000px", "z-index": "1", }); }, ), e = i.ensureSingle( t, "path", "js-reference-point", function (t) { t.attr("d", "M0,0H1V1H0Z").style({ "stroke-width": 0, fill: "black", }); }, ); (x.tester = t), (x.testref = e); }), (x.savedBBoxes = {}); var j = 0; function U(t) { var e = t.getAttribute("data-unformatted"); if (null !== e) return ( e + t.getAttribute("data-math") + t.getAttribute("text-anchor") + t.getAttribute("style") ); } function V(t, e) { if (!t) return null; var r = e._context, n = r._exportedPlot ? "" : r._baseUrl || ""; return n ? "url('" + n + "#" + t + "')" : "url(#" + t + ")"; } (x.bBox = function (t, e, r) { var a, o, s; if ((r || (r = U(t)), r)) { if ((a = x.savedBBoxes[r])) return i.extendFlat({}, a); } else if (1 === t.childNodes.length) { var l = t.childNodes[0]; if ((r = U(l))) { var c = +l.getAttribute("x") || 0, u = +l.getAttribute("y") || 0, f = l.getAttribute("transform"); if (!f) { var p = x.bBox(l, !1, r); return ( c && ((p.left += c), (p.right += c)), u && ((p.top += u), (p.bottom += u)), p ); } if ( ((r += "~" + c + "~" + u + "~" + f), (a = x.savedBBoxes[r])) ) return i.extendFlat({}, a); } } e ? (o = t) : ((s = x.tester.node()), (o = t.cloneNode(!0)), s.appendChild(o)), n .select(o) .attr("transform", null) .call(h.positionText, 0, 0); var d = o.getBoundingClientRect(), m = x.testref.node().getBoundingClientRect(); e || s.removeChild(o); var g = { height: d.height, width: d.width, left: d.left - m.left, top: d.top - m.top, right: d.right - m.left, bottom: d.bottom - m.top, }; return ( j >= 1e4 && ((x.savedBBoxes = {}), (j = 0)), r && (x.savedBBoxes[r] = g), j++, i.extendFlat({}, g) ); }), (x.setClipUrl = function (t, e, r) { t.attr("clip-path", V(e, r)); }), (x.getTranslate = function (t) { var e = ( t[t.attr ? "attr" : "getAttribute"]("transform") || "" ) .replace( /.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/, function (t, e, r) { return [e, r].join(" "); }, ) .split(" "); return { x: +e[0] || 0, y: +e[1] || 0 }; }), (x.setTranslate = function (t, e, r) { var n = t.attr ? "attr" : "getAttribute", i = t.attr ? "attr" : "setAttribute", a = t[n]("transform") || ""; return ( (e = e || 0), (r = r || 0), (a = a.replace(/(\btranslate\(.*?\);?)/, "").trim()), (a = (a += f(e, r)).trim()), t[i]("transform", a), a ); }), (x.getScale = function (t) { var e = ( t[t.attr ? "attr" : "getAttribute"]("transform") || "" ) .replace( /.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/, function (t, e, r) { return [e, r].join(" "); }, ) .split(" "); return { x: +e[0] || 1, y: +e[1] || 1 }; }), (x.setScale = function (t, e, r) { var n = t.attr ? "attr" : "getAttribute", i = t.attr ? "attr" : "setAttribute", a = t[n]("transform") || ""; return ( (e = e || 1), (r = r || 1), (a = a.replace(/(\bscale\(.*?\);?)/, "").trim()), (a = (a += "scale(" + e + "," + r + ")").trim()), t[i]("transform", a), a ); }); var H = /\s*sc.*/; x.setPointGroupScale = function (t, e, r) { if (((e = e || 1), (r = r || 1), t)) { var n = 1 === e && 1 === r ? "" : "scale(" + e + "," + r + ")"; t.each(function () { var t = (this.getAttribute("transform") || "").replace( H, "", ); (t = (t += n).trim()), this.setAttribute("transform", t); }); } }; var q = /translate\([^)]*\)\s*$/; function G(t, e) { var r; return ( t && (r = t.mf), void 0 === r && (r = (e.marker && e.marker.standoff) || 0), e._geo || e._xA ? r : -r ); } (x.setTextPointsScale = function (t, e, r) { t && t.each(function () { var t, i = n.select(this), a = i.select("text"); if (a.node()) { var o = parseFloat(a.attr("x") || 0), s = parseFloat(a.attr("y") || 0), l = (i.attr("transform") || "").match(q); (t = 1 === e && 1 === r ? [] : [ f(o, s), "scale(" + e + "," + r + ")", f(-o, -s), ]), l && t.push(l), i.attr("transform", t.join("")); } }); }), (x.getMarkerStandoff = G); var Y, W, Z, X, J, K, Q = Math.atan2, $ = Math.cos, tt = Math.sin; function et(t, e) { var r = e[0], n = e[1]; return [r * $(t) - n * tt(t), r * tt(t) + n * $(t)]; } function rt(t, e) { var r, n, i = t.ma; void 0 === i && (i = e.marker.angle || 0); var a = e.marker.angleref; if ("previous" === a || "north" === a) { if (e._geo) { var s = e._geo.project(t.lonlat); (r = s[0]), (n = s[1]); } else { var l = e._xA, c = e._yA; if (!l || !c) return 90; (r = l.c2p(t.x)), (n = c.c2p(t.y)); } if (e._geo) { var u, f = t.lonlat[0], h = t.lonlat[1], p = e._geo.project([f, h + 1e-5]), d = e._geo.project([f + 1e-5, h]), m = Q(d[1] - n, d[0] - r), g = Q(p[1] - n, p[0] - r); if ("north" === a) u = (i / 180) * Math.PI; else if ("previous" === a) { var v = (f / 180) * Math.PI, y = (h / 180) * Math.PI, x = (Y / 180) * Math.PI, b = (W / 180) * Math.PI, _ = x - v, w = $(b) * tt(_), T = tt(b) * $(y) - $(b) * tt(y) * $(_); (u = -Q(w, T) - Math.PI), (Y = f), (W = h); } var k = et(m, [$(u), 0]), A = et(g, [tt(u), 0]); (i = (Q(k[1] + A[1], k[0] + A[0]) / Math.PI) * 180), "previous" !== a || (K === e.uid && t.i === J + 1) || (i = null); } if ("previous" === a && !e._geo) if (K === e.uid && t.i === J + 1 && o(r) && o(n)) { var M = r - Z, S = n - X, E = (e.line && e.line.shape) || "", L = E.slice(E.length - 1); "h" === L && (S = 0), "v" === L && (M = 0), (i += (Q(S, M) / Math.PI) * 180 + 90); } else i = null; } return (Z = r), (X = n), (J = t.i), (K = e.uid), i; } x.getMarkerAngle = rt; }, { "../../components/fx/helpers": 403, "../../constants/alignment": 483, "../../constants/interactions": 490, "../../constants/xmlns_namespaces": 492, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../registry": 647, "../../traces/scatter/make_bubble_size_func": 953, "../../traces/scatter/subtypes": 961, "../color": 367, "../colorscale": 379, "./symbol_defs": 390, "@plotly/d3": 58, "fast-isnumeric": 190, tinycolor2: 313, }, ], 390: [ function (t, e, r) { "use strict"; var n, i, a, o, s = t("parse-svg-path"), l = t("@plotly/d3").round, c = Math.sqrt(2), u = Math.sqrt(3), f = Math.PI, h = Math.cos, p = Math.sin; function d(t) { return null === t; } function m(t, e, r) { if (!((t && t % 360 != 0) || e)) return r; if (a === t && o === e && n === r) return i; function l(t, r) { var n = h(t), i = p(t), a = r[0], o = r[1] + (e || 0); return [a * n - o * i, a * i + o * n]; } (a = t), (o = e), (n = r); for ( var c = (t / 180) * f, u = 0, d = 0, m = s(r), g = "", v = 0; v < m.length; v++ ) { var y = m[v], x = y[0], b = u, _ = d; if ("M" === x || "L" === x) (u = +y[1]), (d = +y[2]); else if ("m" === x || "l" === x) (u += +y[1]), (d += +y[2]); else if ("H" === x) u = +y[1]; else if ("h" === x) u += +y[1]; else if ("V" === x) d = +y[1]; else if ("v" === x) d += +y[1]; else if ("A" === x) { (u = +y[1]), (d = +y[2]); var w = l(c, [+y[6], +y[7]]); (y[6] = w[0]), (y[7] = w[1]), (y[3] = +y[3] + t); } ("H" !== x && "V" !== x) || (x = "L"), ("h" !== x && "v" !== x) || (x = "l"), ("m" !== x && "l" !== x) || ((u -= b), (d -= _)); var T = l(c, [u, d]); ("H" !== x && "V" !== x) || (x = "L"), ("M" !== x && "L" !== x && "m" !== x && "l" !== x) || ((y[1] = T[0]), (y[2] = T[1])), (y[0] = x), (g += y[0] + y.slice(1).join(",")); } return (i = g), g; } e.exports = { circle: { n: 0, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2), i = "M" + n + ",0A" + n + "," + n + " 0 1,1 0,-" + n + "A" + n + "," + n + " 0 0,1 " + n + ",0Z"; return r ? m(e, r, i) : i; }, }, square: { n: 1, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M" + n + "," + n + "H-" + n + "V-" + n + "H" + n + "Z", ); }, }, diamond: { n: 2, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.3 * t, 2); return m( e, r, "M" + n + ",0L0," + n + "L-" + n + ",0L0,-" + n + "Z", ); }, }, cross: { n: 3, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(0.4 * t, 2), i = l(1.2 * t, 2); return m( e, r, "M" + i + "," + n + "H" + n + "V" + i + "H-" + n + "V" + n + "H-" + i + "V-" + n + "H-" + n + "V-" + i + "H" + n + "V-" + n + "H" + i + "Z", ); }, }, x: { n: 4, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l((0.8 * t) / c, 2), i = "l" + n + "," + n, a = "l" + n + ",-" + n, o = "l-" + n + ",-" + n, s = "l-" + n + "," + n; return m( e, r, "M0," + n + i + a + o + a + o + s + o + s + i + s + i + "Z", ); }, }, "triangle-up": { n: 5, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l((2 * t) / u, 2); return m( e, r, "M-" + n + "," + l(t / 2, 2) + "H" + n + "L0,-" + l(t, 2) + "Z", ); }, }, "triangle-down": { n: 6, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l((2 * t) / u, 2); return m( e, r, "M-" + n + ",-" + l(t / 2, 2) + "H" + n + "L0," + l(t, 2) + "Z", ); }, }, "triangle-left": { n: 7, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l((2 * t) / u, 2); return m( e, r, "M" + l(t / 2, 2) + ",-" + n + "V" + n + "L-" + l(t, 2) + ",0Z", ); }, }, "triangle-right": { n: 8, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l((2 * t) / u, 2); return m( e, r, "M-" + l(t / 2, 2) + ",-" + n + "V" + n + "L" + l(t, 2) + ",0Z", ); }, }, "triangle-ne": { n: 9, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(0.6 * t, 2), i = l(1.2 * t, 2); return m( e, r, "M-" + i + ",-" + n + "H" + n + "V" + i + "Z", ); }, }, "triangle-se": { n: 10, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(0.6 * t, 2), i = l(1.2 * t, 2); return m( e, r, "M" + n + ",-" + i + "V" + n + "H-" + i + "Z", ); }, }, "triangle-sw": { n: 11, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(0.6 * t, 2), i = l(1.2 * t, 2); return m( e, r, "M" + i + "," + n + "H-" + n + "V-" + i + "Z", ); }, }, "triangle-nw": { n: 12, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(0.6 * t, 2), i = l(1.2 * t, 2); return m( e, r, "M-" + n + "," + i + "V-" + n + "H" + i + "Z", ); }, }, pentagon: { n: 13, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(0.951 * t, 2), i = l(0.588 * t, 2), a = l(-t, 2), o = l(-0.309 * t, 2); return m( e, r, "M" + n + "," + o + "L" + i + "," + l(0.809 * t, 2) + "H-" + i + "L-" + n + "," + o + "L0," + a + "Z", ); }, }, hexagon: { n: 14, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2), i = l(t / 2, 2), a = l((t * u) / 2, 2); return m( e, r, "M" + a + ",-" + i + "V" + i + "L0," + n + "L-" + a + "," + i + "V-" + i + "L0,-" + n + "Z", ); }, }, hexagon2: { n: 15, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2), i = l(t / 2, 2), a = l((t * u) / 2, 2); return m( e, r, "M-" + i + "," + a + "H" + i + "L" + n + ",0L" + i + ",-" + a + "H-" + i + "L-" + n + ",0Z", ); }, }, octagon: { n: 16, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(0.924 * t, 2), i = l(0.383 * t, 2); return m( e, r, "M-" + i + ",-" + n + "H" + i + "L" + n + ",-" + i + "V" + i + "L" + i + "," + n + "H-" + i + "L-" + n + "," + i + "V-" + i + "Z", ); }, }, star: { n: 17, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = 1.4 * t, i = l(0.225 * n, 2), a = l(0.951 * n, 2), o = l(0.363 * n, 2), s = l(0.588 * n, 2), c = l(-n, 2), u = l(-0.309 * n, 2), f = l(0.118 * n, 2), h = l(0.809 * n, 2); return m( e, r, "M" + i + "," + u + "H" + a + "L" + o + "," + f + "L" + s + "," + h + "L0," + l(0.382 * n, 2) + "L-" + s + "," + h + "L-" + o + "," + f + "L-" + a + "," + u + "H-" + i + "L0," + c + "Z", ); }, }, hexagram: { n: 18, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(0.66 * t, 2), i = l(0.38 * t, 2), a = l(0.76 * t, 2); return m( e, r, "M-" + a + ",0l-" + i + ",-" + n + "h" + a + "l" + i + ",-" + n + "l" + i + "," + n + "h" + a + "l-" + i + "," + n + "l" + i + "," + n + "h-" + a + "l-" + i + "," + n + "l-" + i + ",-" + n + "h-" + a + "Z", ); }, }, "star-triangle-up": { n: 19, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t * u * 0.8, 2), i = l(0.8 * t, 2), a = l(1.6 * t, 2), o = l(4 * t, 2), s = "A " + o + "," + o + " 0 0 1 "; return m( e, r, "M-" + n + "," + i + s + n + "," + i + s + "0,-" + a + s + "-" + n + "," + i + "Z", ); }, }, "star-triangle-down": { n: 20, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t * u * 0.8, 2), i = l(0.8 * t, 2), a = l(1.6 * t, 2), o = l(4 * t, 2), s = "A " + o + "," + o + " 0 0 1 "; return m( e, r, "M" + n + ",-" + i + s + "-" + n + ",-" + i + s + "0," + a + s + n + ",-" + i + "Z", ); }, }, "star-square": { n: 21, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.1 * t, 2), i = l(2 * t, 2), a = "A " + i + "," + i + " 0 0 1 "; return m( e, r, "M-" + n + ",-" + n + a + "-" + n + "," + n + a + n + "," + n + a + n + ",-" + n + a + "-" + n + ",-" + n + "Z", ); }, }, "star-diamond": { n: 22, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.4 * t, 2), i = l(1.9 * t, 2), a = "A " + i + "," + i + " 0 0 1 "; return m( e, r, "M-" + n + ",0" + a + "0," + n + a + n + ",0" + a + "0,-" + n + a + "-" + n + ",0Z", ); }, }, "diamond-tall": { n: 23, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(0.7 * t, 2), i = l(1.4 * t, 2); return m( e, r, "M0," + i + "L" + n + ",0L0,-" + i + "L-" + n + ",0Z", ); }, }, "diamond-wide": { n: 24, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.4 * t, 2), i = l(0.7 * t, 2); return m( e, r, "M0," + i + "L" + n + ",0L0,-" + i + "L-" + n + ",0Z", ); }, }, hourglass: { n: 25, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M" + n + "," + n + "H-" + n + "L" + n + ",-" + n + "H-" + n + "Z", ); }, noDot: !0, }, bowtie: { n: 26, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M" + n + "," + n + "V-" + n + "L-" + n + "," + n + "V-" + n + "Z", ); }, noDot: !0, }, "circle-cross": { n: 27, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M0," + n + "V-" + n + "M" + n + ",0H-" + n + "M" + n + ",0A" + n + "," + n + " 0 1,1 0,-" + n + "A" + n + "," + n + " 0 0,1 " + n + ",0Z", ); }, needLine: !0, noDot: !0, }, "circle-x": { n: 28, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2), i = l(t / c, 2); return m( e, r, "M" + i + "," + i + "L-" + i + ",-" + i + "M" + i + ",-" + i + "L-" + i + "," + i + "M" + n + ",0A" + n + "," + n + " 0 1,1 0,-" + n + "A" + n + "," + n + " 0 0,1 " + n + ",0Z", ); }, needLine: !0, noDot: !0, }, "square-cross": { n: 29, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M0," + n + "V-" + n + "M" + n + ",0H-" + n + "M" + n + "," + n + "H-" + n + "V-" + n + "H" + n + "Z", ); }, needLine: !0, noDot: !0, }, "square-x": { n: 30, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M" + n + "," + n + "L-" + n + ",-" + n + "M" + n + ",-" + n + "L-" + n + "," + n + "M" + n + "," + n + "H-" + n + "V-" + n + "H" + n + "Z", ); }, needLine: !0, noDot: !0, }, "diamond-cross": { n: 31, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.3 * t, 2); return m( e, r, "M" + n + ",0L0," + n + "L-" + n + ",0L0,-" + n + "ZM0,-" + n + "V" + n + "M-" + n + ",0H" + n, ); }, needLine: !0, noDot: !0, }, "diamond-x": { n: 32, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.3 * t, 2), i = l(0.65 * t, 2); return m( e, r, "M" + n + ",0L0," + n + "L-" + n + ",0L0,-" + n + "ZM-" + i + ",-" + i + "L" + i + "," + i + "M-" + i + "," + i + "L" + i + ",-" + i, ); }, needLine: !0, noDot: !0, }, "cross-thin": { n: 33, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.4 * t, 2); return m( e, r, "M0," + n + "V-" + n + "M" + n + ",0H-" + n, ); }, needLine: !0, noDot: !0, noFill: !0, }, "x-thin": { n: 34, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M" + n + "," + n + "L-" + n + ",-" + n + "M" + n + ",-" + n + "L-" + n + "," + n, ); }, needLine: !0, noDot: !0, noFill: !0, }, asterisk: { n: 35, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.2 * t, 2), i = l(0.85 * t, 2); return m( e, r, "M0," + n + "V-" + n + "M" + n + ",0H-" + n + "M" + i + "," + i + "L-" + i + ",-" + i + "M" + i + ",-" + i + "L-" + i + "," + i, ); }, needLine: !0, noDot: !0, noFill: !0, }, hash: { n: 36, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t / 2, 2), i = l(t, 2); return m( e, r, "M" + n + "," + i + "V-" + i + "M" + (n - i) + ",-" + i + "V" + i + "M" + i + "," + n + "H-" + i + "M-" + i + "," + (n - i) + "H" + i, ); }, needLine: !0, noFill: !0, }, "y-up": { n: 37, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.2 * t, 2), i = l(1.6 * t, 2), a = l(0.8 * t, 2); return m( e, r, "M-" + n + "," + a + "L0,0M" + n + "," + a + "L0,0M0,-" + i + "L0,0", ); }, needLine: !0, noDot: !0, noFill: !0, }, "y-down": { n: 38, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.2 * t, 2), i = l(1.6 * t, 2), a = l(0.8 * t, 2); return m( e, r, "M-" + n + ",-" + a + "L0,0M" + n + ",-" + a + "L0,0M0," + i + "L0,0", ); }, needLine: !0, noDot: !0, noFill: !0, }, "y-left": { n: 39, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.2 * t, 2), i = l(1.6 * t, 2), a = l(0.8 * t, 2); return m( e, r, "M" + a + "," + n + "L0,0M" + a + ",-" + n + "L0,0M-" + i + ",0L0,0", ); }, needLine: !0, noDot: !0, noFill: !0, }, "y-right": { n: 40, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.2 * t, 2), i = l(1.6 * t, 2), a = l(0.8 * t, 2); return m( e, r, "M-" + a + "," + n + "L0,0M-" + a + ",-" + n + "L0,0M" + i + ",0L0,0", ); }, needLine: !0, noDot: !0, noFill: !0, }, "line-ew": { n: 41, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.4 * t, 2); return m(e, r, "M" + n + ",0H-" + n); }, needLine: !0, noDot: !0, noFill: !0, }, "line-ns": { n: 42, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(1.4 * t, 2); return m(e, r, "M0," + n + "V-" + n); }, needLine: !0, noDot: !0, noFill: !0, }, "line-ne": { n: 43, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m(e, r, "M" + n + ",-" + n + "L-" + n + "," + n); }, needLine: !0, noDot: !0, noFill: !0, }, "line-nw": { n: 44, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m(e, r, "M" + n + "," + n + "L-" + n + ",-" + n); }, needLine: !0, noDot: !0, noFill: !0, }, "arrow-up": { n: 45, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M0,0L-" + n + "," + l(2 * t, 2) + "H" + n + "Z", ); }, backoff: 1, noDot: !0, }, "arrow-down": { n: 46, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M0,0L-" + n + ",-" + l(2 * t, 2) + "H" + n + "Z", ); }, noDot: !0, }, "arrow-left": { n: 47, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(2 * t, 2), i = l(t, 2); return m(e, r, "M0,0L" + n + ",-" + i + "V" + i + "Z"); }, noDot: !0, }, "arrow-right": { n: 48, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(2 * t, 2), i = l(t, 2); return m(e, r, "M0,0L-" + n + ",-" + i + "V" + i + "Z"); }, noDot: !0, }, "arrow-bar-up": { n: 49, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M-" + n + ",0H" + n + "M0,0L-" + n + "," + l(2 * t, 2) + "H" + n + "Z", ); }, backoff: 1, needLine: !0, noDot: !0, }, "arrow-bar-down": { n: 50, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(t, 2); return m( e, r, "M-" + n + ",0H" + n + "M0,0L-" + n + ",-" + l(2 * t, 2) + "H" + n + "Z", ); }, needLine: !0, noDot: !0, }, "arrow-bar-left": { n: 51, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(2 * t, 2), i = l(t, 2); return m( e, r, "M0,-" + i + "V" + i + "M0,0L" + n + ",-" + i + "V" + i + "Z", ); }, needLine: !0, noDot: !0, }, "arrow-bar-right": { n: 52, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = l(2 * t, 2), i = l(t, 2); return m( e, r, "M0,-" + i + "V" + i + "M0,0L-" + n + ",-" + i + "V" + i + "Z", ); }, needLine: !0, noDot: !0, }, arrow: { n: 53, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = f / 2.5, i = 2 * t * h(n), a = 2 * t * p(n); return m( e, r, "M0,0L" + -i + "," + a + "L" + i + "," + a + "Z", ); }, backoff: 0.9, noDot: !0, }, "arrow-wide": { n: 54, f: function (t, e, r) { if (d(e)) return "M0,0Z"; var n = f / 4, i = 2 * t * h(n), a = 2 * t * p(n); return m( e, r, "M0,0L" + -i + "," + a + "A " + 2 * t + "," + 2 * t + " 0 0 1 " + i + "," + a + "Z", ); }, backoff: 0.4, noDot: !0, }, }; }, { "@plotly/d3": 58, "parse-svg-path": 250 }, ], 391: [ function (t, e, r) { "use strict"; e.exports = { visible: { valType: "boolean", editType: "calc" }, type: { valType: "enumerated", values: ["percent", "constant", "sqrt", "data"], editType: "calc", }, symmetric: { valType: "boolean", editType: "calc" }, array: { valType: "data_array", editType: "calc" }, arrayminus: { valType: "data_array", editType: "calc" }, value: { valType: "number", min: 0, dflt: 10, editType: "calc", }, valueminus: { valType: "number", min: 0, dflt: 10, editType: "calc", }, traceref: { valType: "integer", min: 0, dflt: 0, editType: "style", }, tracerefminus: { valType: "integer", min: 0, dflt: 0, editType: "style", }, copy_ystyle: { valType: "boolean", editType: "plot" }, copy_zstyle: { valType: "boolean", editType: "style" }, color: { valType: "color", editType: "style" }, thickness: { valType: "number", min: 0, dflt: 2, editType: "style", }, width: { valType: "number", min: 0, editType: "plot" }, editType: "calc", _deprecated: { opacity: { valType: "number", editType: "style" }, }, }; }, {}, ], 392: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../registry"), a = t("../../plots/cartesian/axes"), o = t("../../lib"), s = t("./compute_error"); function l(t, e, r, i) { var l = e["error_" + i] || {}, c = []; if (l.visible && -1 !== ["linear", "log"].indexOf(r.type)) { for (var u = s(l), f = 0; f < t.length; f++) { var h = t[f], p = h.i; if (void 0 === p) p = f; else if (null === p) continue; var d = h[i]; if (n(r.c2l(d))) { var m = u(d, p); if (n(m[0]) && n(m[1])) { var g = (h[i + "s"] = d - m[0]), v = (h[i + "h"] = d + m[1]); c.push(g, v); } } } var y = r._id, x = e._extremes[y], b = a.findExtremes( r, c, o.extendFlat( { tozero: x.opts.tozero }, { padded: !0 }, ), ); (x.min = x.min.concat(b.min)), (x.max = x.max.concat(b.max)); } } e.exports = function (t) { for (var e = t.calcdata, r = 0; r < e.length; r++) { var n = e[r], o = n[0].trace; if (!0 === o.visible && i.traceIs(o, "errorBarsOK")) { var s = a.getFromId(t, o.xaxis), c = a.getFromId(t, o.yaxis); l(n, o, s, "x"), l(n, o, c, "y"); } } }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "../../registry": 647, "./compute_error": 393, "fast-isnumeric": 190, }, ], 393: [ function (t, e, r) { "use strict"; function n(t, e) { return "percent" === t ? function (t) { return Math.abs((t * e) / 100); } : "constant" === t ? function () { return Math.abs(e); } : "sqrt" === t ? function (t) { return Math.sqrt(Math.abs(t)); } : void 0; } e.exports = function (t) { var e = t.type, r = t.symmetric; if ("data" === e) { var i = t.array || []; if (r) return function (t, e) { var r = +i[e]; return [r, r]; }; var a = t.arrayminus || []; return function (t, e) { var r = +i[e], n = +a[e]; return isNaN(r) && isNaN(n) ? [NaN, NaN] : [n || 0, r || 0]; }; } var o = n(e, t.value), s = n(e, t.valueminus); return r || void 0 === t.valueminus ? function (t) { var e = o(t); return [e, e]; } : function (t) { return [s(t), o(t)]; }; }; }, {}, ], 394: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../registry"), a = t("../../lib"), o = t("../../plot_api/plot_template"), s = t("./attributes"); e.exports = function (t, e, r, l) { var c = "error_" + l.axis, u = o.newContainer(e, c), f = t[c] || {}; function h(t, e) { return a.coerce(f, u, s, t, e); } if ( !1 !== h( "visible", void 0 !== f.array || void 0 !== f.value || "sqrt" === f.type, ) ) { var p = h("type", "array" in f ? "data" : "percent"), d = !0; "sqrt" !== p && (d = h( "symmetric", !(("data" === p ? "arrayminus" : "valueminus") in f), )), "data" === p ? (h("array"), h("traceref"), d || (h("arrayminus"), h("tracerefminus"))) : ("percent" !== p && "constant" !== p) || (h("value"), d || h("valueminus")); var m = "copy_" + l.inherit + "style"; if (l.inherit) (e["error_" + l.inherit] || {}).visible && h(m, !(f.color || n(f.thickness) || n(f.width))); (l.inherit && u[m]) || (h("color", r), h("thickness"), h("width", i.traceIs(e, "gl3d") ? 0 : 4)); } }; }, { "../../lib": 515, "../../plot_api/plot_template": 555, "../../registry": 647, "./attributes": 391, "fast-isnumeric": 190, }, ], 395: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plot_api/edit_types").overrideAll, a = t("./attributes"), o = { error_x: n.extendFlat({}, a), error_y: n.extendFlat({}, a), }; delete o.error_x.copy_zstyle, delete o.error_y.copy_zstyle, delete o.error_y.copy_ystyle; var s = { error_x: n.extendFlat({}, a), error_y: n.extendFlat({}, a), error_z: n.extendFlat({}, a), }; delete s.error_x.copy_ystyle, delete s.error_y.copy_ystyle, delete s.error_z.copy_ystyle, delete s.error_z.copy_zstyle, (e.exports = { moduleType: "component", name: "errorbars", schema: { traces: { scatter: o, bar: o, histogram: o, scatter3d: i(s, "calc", "nested"), scattergl: i(o, "calc", "nested"), }, }, supplyDefaults: t("./defaults"), calc: t("./calc"), makeComputeError: t("./compute_error"), plot: t("./plot"), style: t("./style"), hoverInfo: function (t, e, r) { (e.error_y || {}).visible && ((r.yerr = t.yh - t.y), e.error_y.symmetric || (r.yerrneg = t.y - t.ys)); (e.error_x || {}).visible && ((r.xerr = t.xh - t.x), e.error_x.symmetric || (r.xerrneg = t.x - t.xs)); }, }); }, { "../../lib": 515, "../../plot_api/edit_types": 548, "./attributes": 391, "./calc": 392, "./compute_error": 393, "./defaults": 394, "./plot": 396, "./style": 397, }, ], 396: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("fast-isnumeric"), a = t("../drawing"), o = t("../../traces/scatter/subtypes"); e.exports = function (t, e, r, s) { var l = r.xaxis, c = r.yaxis, u = s && s.duration > 0; e.each(function (e) { var f, h = e[0].trace, p = h.error_x || {}, d = h.error_y || {}; h.ids && (f = function (t) { return t.id; }); var m = o.hasMarkers(h) && h.marker.maxdisplayed > 0; d.visible || p.visible || (e = []); var g = n.select(this).selectAll("g.errorbar").data(e, f); if ((g.exit().remove(), e.length)) { p.visible || g.selectAll("path.xerror").remove(), d.visible || g.selectAll("path.yerror").remove(), g.style("opacity", 1); var v = g.enter().append("g").classed("errorbar", !0); u && v .style("opacity", 0) .transition() .duration(s.duration) .style("opacity", 1), a.setClipUrl(g, r.layerClipId, t), g.each(function (t) { var e = n.select(this), r = (function (t, e, r) { var n = { x: e.c2p(t.x), y: r.c2p(t.y) }; void 0 !== t.yh && ((n.yh = r.c2p(t.yh)), (n.ys = r.c2p(t.ys)), i(n.ys) || ((n.noYS = !0), (n.ys = r.c2p(t.ys, !0)))); void 0 !== t.xh && ((n.xh = e.c2p(t.xh)), (n.xs = e.c2p(t.xs)), i(n.xs) || ((n.noXS = !0), (n.xs = e.c2p(t.xs, !0)))); return n; })(t, l, c); if (!m || t.vis) { var a, o = e.select("path.yerror"); if (d.visible && i(r.x) && i(r.yh) && i(r.ys)) { var f = d.width; (a = "M" + (r.x - f) + "," + r.yh + "h" + 2 * f + "m-" + f + ",0V" + r.ys), r.noYS || (a += "m-" + f + ",0h" + 2 * f), !o.size() ? (o = e .append("path") .style( "vector-effect", "non-scaling-stroke", ) .classed("yerror", !0)) : u && (o = o .transition() .duration(s.duration) .ease(s.easing)), o.attr("d", a); } else o.remove(); var h = e.select("path.xerror"); if (p.visible && i(r.y) && i(r.xh) && i(r.xs)) { var g = (p.copy_ystyle ? d : p).width; (a = "M" + r.xh + "," + (r.y - g) + "v" + 2 * g + "m0,-" + g + "H" + r.xs), r.noXS || (a += "m0,-" + g + "v" + 2 * g), !h.size() ? (h = e .append("path") .style( "vector-effect", "non-scaling-stroke", ) .classed("xerror", !0)) : u && (h = h .transition() .duration(s.duration) .ease(s.easing)), h.attr("d", a); } else h.remove(); } }); } }); }; }, { "../../traces/scatter/subtypes": 961, "../drawing": 389, "@plotly/d3": 58, "fast-isnumeric": 190, }, ], 397: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../color"); e.exports = function (t) { t.each(function (t) { var e = t[0].trace, r = e.error_y || {}, a = e.error_x || {}, o = n.select(this); o .selectAll("path.yerror") .style("stroke-width", r.thickness + "px") .call(i.stroke, r.color), a.copy_ystyle && (a = r), o .selectAll("path.xerror") .style("stroke-width", a.thickness + "px") .call(i.stroke, a.color); }); }; }, { "../color": 367, "@plotly/d3": 58 }, ], 398: [ function (t, e, r) { "use strict"; var n = t("../../plots/font_attributes"), i = t("./layout_attributes").hoverlabel, a = t("../../lib/extend").extendFlat; e.exports = { hoverlabel: { bgcolor: a({}, i.bgcolor, { arrayOk: !0 }), bordercolor: a({}, i.bordercolor, { arrayOk: !0 }), font: n({ arrayOk: !0, editType: "none" }), align: a({}, i.align, { arrayOk: !0 }), namelength: a({}, i.namelength, { arrayOk: !0 }), editType: "none", }, }; }, { "../../lib/extend": 505, "../../plots/font_attributes": 594, "./layout_attributes": 408, }, ], 399: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../registry"); function a(t, e, r, i) { (i = i || n.identity), Array.isArray(t) && (e[0][r] = i(t)); } e.exports = function (t) { var e = t.calcdata, r = t._fullLayout; function o(t) { return function (e) { return n.coerceHoverinfo( { hoverinfo: e }, { _module: t._module }, r, ); }; } for (var s = 0; s < e.length; s++) { var l = e[s], c = l[0].trace; if (!i.traceIs(c, "pie-like")) { var u = i.traceIs(c, "2dMap") ? a : n.fillArray; u(c.hoverinfo, l, "hi", o(c)), c.hovertemplate && u(c.hovertemplate, l, "ht"), c.hoverlabel && (u(c.hoverlabel.bgcolor, l, "hbg"), u(c.hoverlabel.bordercolor, l, "hbc"), u(c.hoverlabel.font.size, l, "hts"), u(c.hoverlabel.font.color, l, "htc"), u(c.hoverlabel.font.family, l, "htf"), u(c.hoverlabel.namelength, l, "hnl"), u(c.hoverlabel.align, l, "hta")); } } }; }, { "../../lib": 515, "../../registry": 647 }, ], 400: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("./hover").hover; e.exports = function (t, e, r) { var a = n.getComponentMethod("annotations", "onClick")( t, t._hoverdata, ); function o() { t.emit("plotly_click", { points: t._hoverdata, event: e, }); } void 0 !== r && i(t, e, r, !0), t._hoverdata && e && e.target && (a && a.then ? a.then(o) : o(), e.stopImmediatePropagation && e.stopImmediatePropagation()); }; }, { "../../registry": 647, "./hover": 404 }, ], 401: [ function (t, e, r) { "use strict"; e.exports = { YANGLE: 60, HOVERARROWSIZE: 6, HOVERTEXTPAD: 3, HOVERFONTSIZE: 13, HOVERFONT: "Arial, sans-serif", HOVERMINTIME: 50, HOVERID: "-hover", }; }, {}, ], 402: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("./hoverlabel_defaults"); e.exports = function (t, e, r, o) { var s = n.extendFlat({}, o.hoverlabel); e.hovertemplate && (s.namelength = -1), a( t, e, function (r, a) { return n.coerce(t, e, i, r, a); }, s, ); }; }, { "../../lib": 515, "./attributes": 398, "./hoverlabel_defaults": 405, }, ], 403: [ function (t, e, r) { "use strict"; var n = t("../../lib"); (r.getSubplot = function (t) { return t.subplot || t.xaxis + t.yaxis || t.geo; }), (r.isTraceInSubplots = function (t, e) { if ("splom" === t.type) { for ( var n = t.xaxes || [], i = t.yaxes || [], a = 0; a < n.length; a++ ) for (var o = 0; o < i.length; o++) if (-1 !== e.indexOf(n[a] + i[o])) return !0; return !1; } return -1 !== e.indexOf(r.getSubplot(t)); }), (r.flat = function (t, e) { for ( var r = new Array(t.length), n = 0; n < t.length; n++ ) r[n] = e; return r; }), (r.p2c = function (t, e) { for ( var r = new Array(t.length), n = 0; n < t.length; n++ ) r[n] = t[n].p2c(e); return r; }), (r.getDistanceFunction = function (t, e, n, i) { return "closest" === t ? i || r.quadrature(e, n) : "x" === t.charAt(0) ? e : n; }), (r.getClosest = function (t, e, r) { if (!1 !== r.index) r.index >= 0 && r.index < t.length ? (r.distance = 0) : (r.index = !1); else for (var n = 0; n < t.length; n++) { var i = e(t[n]); i <= r.distance && ((r.index = n), (r.distance = i)); } return r; }), (r.inbox = function (t, e, r) { return t * e < 0 || 0 === t ? r : 1 / 0; }), (r.quadrature = function (t, e) { return function (r) { var n = t(r), i = e(r); return Math.sqrt(n * n + i * i); }; }), (r.makeEventData = function (t, e, n) { var i = "index" in t ? t.index : t.pointNumber, a = { data: e._input, fullData: e, curveNumber: e.index, pointNumber: i, }; if (e._indexToPoints) { var o = e._indexToPoints[i]; 1 === o.length ? (a.pointIndex = o[0]) : (a.pointIndices = o); } else a.pointIndex = i; return ( e._module.eventData ? (a = e._module.eventData(a, t, e, n, i)) : ("xVal" in t ? (a.x = t.xVal) : "x" in t && (a.x = t.x), "yVal" in t ? (a.y = t.yVal) : "y" in t && (a.y = t.y), t.xa && (a.xaxis = t.xa), t.ya && (a.yaxis = t.ya), void 0 !== t.zLabelVal && (a.z = t.zLabelVal)), r.appendArrayPointValue(a, e, i), a ); }), (r.appendArrayPointValue = function (t, e, r) { var i = e._arrayAttrs; if (i) for (var s = 0; s < i.length; s++) { var l = i[s], c = a(l); if (void 0 === t[c]) { var u = o(n.nestedProperty(e, l).get(), r); void 0 !== u && (t[c] = u); } } }), (r.appendArrayMultiPointValues = function (t, e, r) { var i = e._arrayAttrs; if (i) for (var s = 0; s < i.length; s++) { var l = i[s], c = a(l); if (void 0 === t[c]) { for ( var u = n.nestedProperty(e, l).get(), f = new Array(r.length), h = 0; h < r.length; h++ ) f[h] = o(u, r[h]); t[c] = f; } } }); var i = { ids: "id", locations: "location", labels: "label", values: "value", "marker.colors": "color", parents: "parent", }; function a(t) { return i[t] || t; } function o(t, e) { return Array.isArray(e) ? Array.isArray(t) && Array.isArray(t[e[0]]) ? t[e[0]][e[1]] : void 0 : t[e]; } var s = { x: !0, y: !0 }, l = { "x unified": !0, "y unified": !0 }; (r.isUnifiedHover = function (t) { return "string" == typeof t && !!l[t]; }), (r.isXYhover = function (t) { return "string" == typeof t && !!s[t]; }); }, { "../../lib": 515 }, ], 404: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("fast-isnumeric"), a = t("tinycolor2"), o = t("../../lib"), s = o.strTranslate, l = o.strRotate, c = t("../../lib/events"), u = t("../../lib/svg_text_utils"), f = t("../../lib/override_cursor"), h = t("../drawing"), p = t("../color"), d = t("../dragelement"), m = t("../../plots/cartesian/axes"), g = t("../../registry"), v = t("./helpers"), y = t("./constants"), x = t("../legend/defaults"), b = t("../legend/draw"), _ = y.YANGLE, w = (Math.PI * _) / 180, T = 1 / Math.sin(w), k = Math.cos(w), A = Math.sin(w), M = y.HOVERARROWSIZE, S = y.HOVERTEXTPAD, E = { box: !0, ohlc: !0, violin: !0, candlestick: !0 }, L = { scatter: !0, scattergl: !0, splom: !0 }; function C(t) { return [ t.trace.index, t.index, t.x0, t.y0, t.name, t.attr, t.xa ? t.xa._id : "", t.ya ? t.ya._id : "", ].join(","); } (r.hover = function (t, e, r, a) { t = o.getGraphDiv(t); var s = e.target; o.throttle( t._fullLayout._uid + y.HOVERID, y.HOVERMINTIME, function () { !(function (t, e, r, a, s) { r || (r = "xy"); var l = Array.isArray(r) ? r : [r], u = t._fullLayout, h = u._plots || [], m = h[r], y = u._has("cartesian"); if (m) { var x = m.overlays.map(function (t) { return t.id; }); l = l.concat(x); } for ( var b = l.length, _ = new Array(b), w = new Array(b), k = !1, A = 0; A < b; A++ ) { var M = l[A]; if (h[M]) (k = !0), (_[A] = h[M].xaxis), (w[A] = h[M].yaxis); else { if (!u[M] || !u[M]._subplot) return void o.warn( "Unrecognized subplot: " + M, ); var S = u[M]._subplot; (_[A] = S.xaxis), (w[A] = S.yaxis); } } var P = e.hovermode || u.hovermode; P && !k && (P = "closest"); if ( -1 === [ "x", "y", "closest", "x unified", "y unified", ].indexOf(P) || !t.calcdata || t.querySelector(".zoombox") || t._dragging ) return d.unhoverRaw(t, e); var O = u.hoverdistance; -1 === O && (O = 1 / 0); var B = u.spikedistance; -1 === B && (B = 1 / 0); var V, H, q, G, Y, W, Z, X, J, K, Q, $, tt, et = [], rt = [], nt = { hLinePoint: null, vLinePoint: null }, it = !1; if (Array.isArray(e)) for (P = "array", q = 0; q < e.length; q++) (Y = t.calcdata[e[q].curveNumber || 0]) && ((W = Y[0].trace), "skip" !== Y[0].trace.hoverinfo && (rt.push(Y), "h" === W.orientation && (it = !0))); else { for (G = 0; G < t.calcdata.length; G++) (Y = t.calcdata[G]), "skip" !== (W = Y[0].trace).hoverinfo && v.isTraceInSubplots(W, l) && (rt.push(Y), "h" === W.orientation && (it = !0)); var at, ot; if (!s) (at = "xpx" in e ? e.xpx : _[0]._length / 2), (ot = "ypx" in e ? e.ypx : w[0]._length / 2); else { if ( !1 === c.triggerHandler(t, "plotly_beforehover", e) ) return; var st = s.getBoundingClientRect(); (at = e.clientX - st.left), (ot = e.clientY - st.top), u._calcInverseTransform(t); var lt = o.apply3DTransform(u._invTransform)( at, ot, ); if ( ((at = lt[0]), (ot = lt[1]), at < 0 || at > _[0]._length || ot < 0 || ot > w[0]._length) ) return d.unhoverRaw(t, e); } if ( ((e.pointerX = at + _[0]._offset), (e.pointerY = ot + w[0]._offset), (V = "xval" in e ? v.flat(l, e.xval) : v.p2c(_, at)), (H = "yval" in e ? v.flat(l, e.yval) : v.p2c(w, ot)), !i(V[0]) || !i(H[0])) ) return ( o.warn("Fx.hover failed", e, t), d.unhoverRaw(t, e) ); } var ct = 1 / 0; function ut(t, r) { for (G = 0; G < rt.length; G++) if ( (Y = rt[G]) && Y[0] && Y[0].trace && !0 === (W = Y[0].trace).visible && 0 !== W._length && -1 === ["carpet", "contourcarpet"].indexOf( W._module.name, ) ) { if ( ("splom" === W.type ? (Z = l[(X = 0)]) : ((Z = v.getSubplot(W)), (X = l.indexOf(Z))), (J = P), v.isUnifiedHover(J) && (J = J.charAt(0)), ($ = { cd: Y, trace: W, xa: _[X], ya: w[X], maxHoverDistance: O, maxSpikeDistance: B, index: !1, distance: Math.min(ct, O), spikeDistance: 1 / 0, xSpike: void 0, ySpike: void 0, color: p.defaultLine, name: W.name, x0: void 0, x1: void 0, y0: void 0, y1: void 0, xLabelVal: void 0, yLabelVal: void 0, zLabelVal: void 0, text: void 0, }), u[Z] && ($.subplot = u[Z]._subplot), u._splomScenes && u._splomScenes[W.uid] && ($.scene = u._splomScenes[W.uid]), (tt = et.length), "array" === J) ) { var n = e[G]; "pointNumber" in n ? (($.index = n.pointNumber), (J = "closest")) : ((J = ""), "xval" in n && ((K = n.xval), (J = "x")), "yval" in n && ((Q = n.yval), (J = J ? "closest" : "y"))); } else void 0 !== t && void 0 !== r ? ((K = t), (Q = r)) : ((K = V[X]), (Q = H[X])); if (0 !== O) if (W._module && W._module.hoverPoints) { var a = W._module.hoverPoints($, K, Q, J, { finiteRange: !0, hoverLayer: u._hoverlayer, }); if (a) for (var s, c = 0; c < a.length; c++) (s = a[c]), i(s.x0) && i(s.y0) && et.push(D(s, P)); } else o.log( "Unrecognized trace type in hover:", W, ); if ( ("closest" === P && et.length > tt && (et.splice(0, tt), (ct = et[0].distance)), y && 0 !== B && 0 === et.length) ) { ($.distance = B), ($.index = !1); var f = W._module.hoverPoints( $, K, Q, "closest", { hoverLayer: u._hoverlayer }, ); if ( (f && (f = f.filter(function (t) { return t.spikeDistance <= B; })), f && f.length) ) { var h, d = f.filter(function (t) { return ( t.xa.showspikes && "hovered data" !== t.xa.spikesnap ); }); if (d.length) { var m = d[0]; i(m.x0) && i(m.y0) && ((h = ht(m)), (!nt.vLinePoint || nt.vLinePoint.spikeDistance > h.spikeDistance) && (nt.vLinePoint = h)); } var g = f.filter(function (t) { return ( t.ya.showspikes && "hovered data" !== t.ya.spikesnap ); }); if (g.length) { var x = g[0]; i(x.x0) && i(x.y0) && ((h = ht(x)), (!nt.hLinePoint || nt.hLinePoint.spikeDistance > h.spikeDistance) && (nt.hLinePoint = h)); } } } } } function ft(t, e, r) { for ( var n, i = null, a = 1 / 0, o = 0; o < t.length; o++ ) (n = t[o].spikeDistance), r && 0 === o && (n = -1 / 0), n <= a && n <= e && ((i = t[o]), (a = n)); return i; } function ht(t) { return t ? { xa: t.xa, ya: t.ya, x: void 0 !== t.xSpike ? t.xSpike : (t.x0 + t.x1) / 2, y: void 0 !== t.ySpike ? t.ySpike : (t.y0 + t.y1) / 2, distance: t.distance, spikeDistance: t.spikeDistance, curveNumber: t.trace.index, color: t.color, pointNumber: t.index, } : null; } ut(); var pt = { fullLayout: u, container: u._hoverlayer, event: e, }, dt = t._spikepoints, mt = { vLinePoint: nt.vLinePoint, hLinePoint: nt.hLinePoint, }; t._spikepoints = mt; var gt = function () { et.sort(function (t, e) { return t.distance - e.distance; }), (et = (function (t, e) { for ( var r = e.charAt(0), n = [], i = [], a = [], o = 0; o < t.length; o++ ) { var s = t[o]; g.traceIs(s.trace, "bar-like") || g.traceIs(s.trace, "box-violin") ? a.push(s) : s.trace[r + "period"] ? i.push(s) : n.push(s); } return n.concat(i).concat(a); })(et, P)); }; gt(); var vt = P.charAt(0), yt = ("x" === vt || "y" === vt) && et[0] && L[et[0].trace.type]; if (y && 0 !== B && 0 !== et.length) { var xt = ft( et.filter(function (t) { return t.ya.showspikes; }), B, yt, ); nt.hLinePoint = ht(xt); var bt = ft( et.filter(function (t) { return t.xa.showspikes; }), B, yt, ); nt.vLinePoint = ht(bt); } if (0 === et.length) { var _t = d.unhoverRaw(t, e); return ( !y || (null === nt.hLinePoint && null === nt.vLinePoint) || (F(dt) && R(t, nt, pt)), _t ); } y && F(dt) && R(t, nt, pt); if ( v.isXYhover(J) && 0 !== et[0].length && "splom" !== et[0].trace.type ) { var wt = et[0], Tt = (et = E[wt.trace.type] ? et.filter(function (t) { return t.trace.index === wt.trace.index; }) : [wt]).length, kt = N("x", wt, u), At = N("y", wt, u); ut(kt, At); var Mt, St = [], Et = {}, Lt = 0, Ct = function (t) { var e = E[t.trace.type] ? C(t) : t.trace.index; if (Et[e]) { var r = Et[e] - 1, n = St[r]; r > 0 && Math.abs(t.distance) < Math.abs(n.distance) && (St[r] = t); } else Lt++, (Et[e] = Lt), St.push(t); }; for (Mt = 0; Mt < Tt; Mt++) Ct(et[Mt]); for (Mt = et.length - 1; Mt > Tt - 1; Mt--) Ct(et[Mt]); (et = St), gt(); } var Pt = t._hoverdata, It = [], Ot = j(t), zt = U(t); for (q = 0; q < et.length; q++) { var Dt = et[q], Rt = v.makeEventData(Dt, Dt.trace, Dt.cd); if (!1 !== Dt.hovertemplate) { var Ft = !1; Dt.cd[Dt.index] && Dt.cd[Dt.index].ht && (Ft = Dt.cd[Dt.index].ht), (Dt.hovertemplate = Ft || Dt.trace.hovertemplate || !1); } if (Dt.xa && Dt.ya) { var Bt = Dt.x0 + Dt.xa._offset, Nt = Dt.x1 + Dt.xa._offset, jt = Dt.y0 + Dt.ya._offset, Ut = Dt.y1 + Dt.ya._offset, Vt = Math.min(Bt, Nt), Ht = Math.max(Bt, Nt), qt = Math.min(jt, Ut), Gt = Math.max(jt, Ut); Rt.bbox = { x0: Vt + zt, x1: Ht + zt, y0: qt + Ot, y1: Gt + Ot, }; } (Dt.eventData = [Rt]), It.push(Rt); } t._hoverdata = It; var Yt = ("y" === P && (rt.length > 1 || et.length > 1)) || ("closest" === P && it && et.length > 1), Wt = p.combine( u.plot_bgcolor || p.background, u.paper_bgcolor, ), Zt = I(et, { gd: t, hovermode: P, rotateLabels: Yt, bgColor: Wt, container: u._hoverlayer, outerContainer: u._paper.node(), commonLabelOpts: u.hoverlabel, hoverdistance: u.hoverdistance, }); v.isUnifiedHover(P) || (!(function (t, e, r) { var n, i, a, o, s, l, c, u = 0, f = 1, h = t.size(), p = new Array(h), d = 0; function m(t) { var e = t[0], r = t[t.length - 1]; if ( ((i = e.pmin - e.pos - e.dp + e.size), (a = r.pos + r.dp + r.size - e.pmax), i > 0.01) ) { for (s = t.length - 1; s >= 0; s--) t[s].dp += i; n = !1; } if (!(a < 0.01)) { if (i < -0.01) { for (s = t.length - 1; s >= 0; s--) t[s].dp -= a; n = !1; } if (n) { var c = 0; for (o = 0; o < t.length; o++) (l = t[o]).pos + l.dp + l.size > e.pmax && c++; for ( o = t.length - 1; o >= 0 && !(c <= 0); o-- ) (l = t[o]).pos > e.pmax - 1 && ((l.del = !0), c--); for (o = 0; o < t.length && !(c <= 0); o++) if ((l = t[o]).pos < e.pmin + 1) for ( l.del = !0, c--, a = 2 * l.size, s = t.length - 1; s >= 0; s-- ) t[s].dp -= a; for ( o = t.length - 1; o >= 0 && !(c <= 0); o-- ) (l = t[o]).pos + l.dp + l.size > e.pmax && ((l.del = !0), c--); } } } t.each(function (t) { var n = t[e], i = "x" === n._id.charAt(0), a = n.range; 0 === d && a && a[0] > a[1] !== i && (f = -1), (p[d++] = [ { datum: t, traceIndex: t.trace.index, dp: 0, pos: t.pos, posref: t.posref, size: (t.by * (i ? T : 1)) / 2, pmin: 0, pmax: i ? r.width : r.height, }, ]); }), p.sort(function (t, e) { return ( t[0].posref - e[0].posref || f * (e[0].traceIndex - t[0].traceIndex) ); }); for (; !n && u <= h; ) { for (u++, n = !0, o = 0; o < p.length - 1; ) { var g = p[o], v = p[o + 1], y = g[g.length - 1], x = v[0]; if ( (i = y.pos + y.dp + y.size - x.pos - x.dp + x.size) > 0.01 && y.pmin === x.pmin && y.pmax === x.pmax ) { for (s = v.length - 1; s >= 0; s--) v[s].dp += i; for ( g.push.apply(g, v), p.splice(o + 1, 1), c = 0, s = g.length - 1; s >= 0; s-- ) c += g[s].dp; for ( a = c / g.length, s = g.length - 1; s >= 0; s-- ) g[s].dp -= a; n = !1; } else o++; } p.forEach(m); } for (o = p.length - 1; o >= 0; o--) { var b = p[o]; for (s = b.length - 1; s >= 0; s--) { var _ = b[s], w = _.datum; (w.offset = _.dp), (w.del = _.del); } } })(Zt, Yt ? "xa" : "ya", u), z(Zt, Yt, u._invScaleX, u._invScaleY)); if (s && s.tagName) { var Xt = g.getComponentMethod( "annotations", "hasClickToShow", )(t, It); f(n.select(s), Xt ? "pointer" : ""); } if ( !s || a || !(function (t, e, r) { if (!r || r.length !== t._hoverdata.length) return !0; for (var n = r.length - 1; n >= 0; n--) { var i = r[n], a = t._hoverdata[n]; if ( i.curveNumber !== a.curveNumber || String(i.pointNumber) !== String(a.pointNumber) || String(i.pointNumbers) !== String(a.pointNumbers) ) return !0; } return !1; })(t, 0, Pt) ) return; Pt && t.emit("plotly_unhover", { event: e, points: Pt }); t.emit("plotly_hover", { event: e, points: t._hoverdata, xaxes: _, yaxes: w, xvals: V, yvals: H, }); })(t, e, r, a, s); }, ); }), (r.loneHover = function (t, e) { var r = !0; Array.isArray(t) || ((r = !1), (t = [t])); var i = e.gd, a = j(i), o = U(i), s = I( t.map(function (t) { var r = t._x0 || t.x0 || t.x || 0, n = t._x1 || t.x1 || t.x || 0, s = t._y0 || t.y0 || t.y || 0, l = t._y1 || t.y1 || t.y || 0, c = t.eventData; if (c) { var u = Math.min(r, n), f = Math.max(r, n), h = Math.min(s, l), d = Math.max(s, l), m = t.trace; if (g.traceIs(m, "gl3d")) { var v = i._fullLayout[m.scene]._scene.container, y = v.offsetLeft, x = v.offsetTop; (u += y), (f += y), (h += x), (d += x); } (c.bbox = { x0: u + o, x1: f + o, y0: h + a, y1: d + a, }), e.inOut_bbox && e.inOut_bbox.push(c.bbox); } else c = !1; return { color: t.color || p.defaultLine, x0: t.x0 || t.x || 0, x1: t.x1 || t.x || 0, y0: t.y0 || t.y || 0, y1: t.y1 || t.y || 0, xLabel: t.xLabel, yLabel: t.yLabel, zLabel: t.zLabel, text: t.text, name: t.name, idealAlign: t.idealAlign, borderColor: t.borderColor, fontFamily: t.fontFamily, fontSize: t.fontSize, fontColor: t.fontColor, nameLength: t.nameLength, textAlign: t.textAlign, trace: t.trace || { index: 0, hoverinfo: "" }, xa: { _offset: 0 }, ya: { _offset: 0 }, index: 0, hovertemplate: t.hovertemplate || !1, hovertemplateLabels: t.hovertemplateLabels || !1, eventData: c, }; }), { gd: i, hovermode: "closest", rotateLabels: !1, bgColor: e.bgColor || p.background, container: n.select(e.container), outerContainer: e.outerContainer || e.container, }, ), l = 0, c = 0; return ( s .sort(function (t, e) { return t.y0 - e.y0; }) .each(function (t, r) { var n = t.y0 - t.by / 2; (t.offset = n - 5 < l ? l - n + 5 : 0), (l = n + t.by + t.offset), r === e.anchorIndex && (c = t.offset); }) .each(function (t) { t.offset -= c; }), z( s, !1, i._fullLayout._invScaleX, i._fullLayout._invScaleY, ), r ? s : s.node() ); }); var P = /([\s\S]*)<\/extra>/; function I(t, e) { var r = e.gd, i = r._fullLayout, a = e.hovermode, c = e.rotateLabels, f = e.bgColor, d = e.container, m = e.outerContainer, w = e.commonLabelOpts || {}; if (0 === t.length) return [[]]; var T = e.fontFamily || y.HOVERFONT, k = e.fontSize || y.HOVERFONTSIZE, A = t[0], E = A.xa, L = A.ya, P = a.charAt(0), I = A[P + "Label"], z = V(r, m), D = z.top, R = z.width, F = z.height, B = void 0 !== I && A.distance <= e.hoverdistance && ("x" === a || "y" === a); if (B) { var N, j, U = !0; for (N = 0; N < t.length; N++) if ( (U && void 0 === t[N].zLabel && (U = !1), (j = t[N].hoverinfo || t[N].trace.hoverinfo)) ) { var H = Array.isArray(j) ? j : j.split("+"); if (-1 === H.indexOf("all") && -1 === H.indexOf(a)) { B = !1; break; } } U && (B = !1); } var q = d.selectAll("g.axistext").data(B ? [0] : []); if ( (q.enter().append("g").classed("axistext", !0), q.exit().remove(), q.each(function () { var t = n.select(this), e = o.ensureSingle(t, "path", "", function (t) { t.style({ "stroke-width": "1px" }); }), l = o.ensureSingle(t, "text", "", function (t) { t.attr("data-notex", 1); }), c = w.bgcolor || p.defaultLine, f = w.bordercolor || p.contrast(c), d = p.contrast(c), m = { family: w.font.family || T, size: w.font.size || k, color: w.font.color || d, }; e.style({ fill: c, stroke: f }), l .text(I) .call(h.font, m) .call(u.positionText, 0, 0) .call(u.convertToTspans, r), t.attr("transform", ""); var g, v, y = V(r, l.node()); if ("x" === a) { var x = "top" === E.side ? "-" : ""; l .attr("text-anchor", "middle") .call( u.positionText, 0, "top" === E.side ? D - y.bottom - M - S : D - y.top + M + S, ), (g = E._offset + (A.x0 + A.x1) / 2), (v = L._offset + ("top" === E.side ? 0 : L._length)); var b = y.width / 2 + S; g < b ? ((g = b), e.attr( "d", "M-" + (b - M) + ",0L-" + (b - 2 * M) + "," + x + M + "H" + (S + y.width / 2) + "v" + x + (2 * S + y.height) + "H-" + b + "V" + x + M + "Z", )) : g > i.width - b ? ((g = i.width - b), e.attr( "d", "M" + (b - M) + ",0L" + b + "," + x + M + "v" + x + (2 * S + y.height) + "H-" + b + "V" + x + M + "H" + (b - 2 * M) + "Z", )) : e.attr( "d", "M0,0L" + M + "," + x + M + "H" + (S + y.width / 2) + "v" + x + (2 * S + y.height) + "H-" + (S + y.width / 2) + "V" + x + M + "H-" + M + "Z", ); } else { var _, C, P; "right" === L.side ? ((_ = "start"), (C = 1), (P = ""), (g = E._offset + E._length)) : ((_ = "end"), (C = -1), (P = "-"), (g = E._offset)), (v = L._offset + (A.y0 + A.y1) / 2), l.attr("text-anchor", _), e.attr( "d", "M0,0L" + P + M + "," + M + "V" + (S + y.height / 2) + "h" + P + (2 * S + y.width) + "V-" + (S + y.height / 2) + "H" + P + M + "V-" + M + "Z", ); var O, z = y.height / 2, R = D - y.top - z, F = "clip" + i._uid + "commonlabel" + L._id; if (g < y.width + 2 * S + M) { O = "M-" + (M + S) + "-" + z + "h-" + (y.width - S) + "V" + z + "h" + (y.width - S) + "Z"; var B = y.width - g + S; u.positionText(l, B, R), "end" === _ && l.selectAll("tspan").each(function () { var t = n.select(this), e = h.tester .append("text") .text(t.text()) .call(h.font, m), i = V(r, e.node()); Math.round(i.width) < Math.round(y.width) && t.attr("x", B - i.width), e.remove(); }); } else u.positionText(l, C * (S + M), R), (O = null); var N = i._topclips .selectAll("#" + F) .data(O ? [0] : []); N.enter() .append("clipPath") .attr("id", F) .append("path"), N.exit().remove(), N.select("path").attr("d", O), h.setClipUrl(l, O ? F : null, r); } t.attr("transform", s(g, v)); }), v.isUnifiedHover(a)) ) { d.selectAll("g.hovertext").remove(); var G = t.filter(function (t) { return "none" !== t.hoverinfo; }); if (0 === G.length) return; var Y = i.hoverlabel, W = Y.font, Z = { showlegend: !0, legend: { title: { text: I, font: W }, font: W, bgcolor: Y.bgcolor, bordercolor: Y.bordercolor, borderwidth: 1, tracegroupgap: 7, traceorder: i.legend ? i.legend.traceorder : void 0, orientation: "v", }, }, X = { font: W }; x(Z, X, r._fullData); var J = X.legend; J.entries = []; for (var K = 0; K < G.length; K++) { var Q = G[K]; if ("none" !== Q.hoverinfo) { var $ = O(Q, !0, a, i, I), tt = $[0], et = $[1]; (Q.name = et), (Q.text = "" !== et ? et + " : " + tt : tt); var rt = Q.cd[Q.index]; rt && (rt.mc && (Q.mc = rt.mc), rt.mcc && (Q.mc = rt.mcc), rt.mlc && (Q.mlc = rt.mlc), rt.mlcc && (Q.mlc = rt.mlcc), rt.mlw && (Q.mlw = rt.mlw), rt.mrc && (Q.mrc = rt.mrc), rt.dir && (Q.dir = rt.dir)), (Q._distinct = !0), J.entries.push([Q]); } } J.entries.sort(function (t, e) { return t[0].trace.index - e[0].trace.index; }), (J.layer = d), (J._inHover = !0), (J._groupTitleFont = Y.grouptitlefont), b(r, J); var nt, it, at, ot, st = d.select("g.legend"), lt = V(r, st.node()), ct = lt.width + 2 * S, ut = lt.height + 2 * S, ft = G[0], ht = (ft.x0 + ft.x1) / 2, pt = (ft.y0 + ft.y1) / 2, dt = !( g.traceIs(ft.trace, "bar-like") || g.traceIs(ft.trace, "box-violin") ); "y" === P ? dt ? ((it = pt - S), (nt = pt + S)) : ((it = Math.min.apply( null, G.map(function (t) { return Math.min(t.y0, t.y1); }), )), (nt = Math.max.apply( null, G.map(function (t) { return Math.max(t.y0, t.y1); }), ))) : (it = nt = o.mean( G.map(function (t) { return (t.y0 + t.y1) / 2; }), ) - ut / 2), "x" === P ? dt ? ((at = ht + S), (ot = ht - S)) : ((at = Math.max.apply( null, G.map(function (t) { return Math.max(t.x0, t.x1); }), )), (ot = Math.min.apply( null, G.map(function (t) { return Math.min(t.x0, t.x1); }), ))) : (at = ot = o.mean( G.map(function (t) { return (t.x0 + t.x1) / 2; }), ) - ct / 2); var mt, gt, vt = E._offset, yt = L._offset; return ( (ot += vt - ct), (it += yt - ut), (mt = (at += vt) + ct < R && at >= 0 ? at : ot + ct < R && ot >= 0 ? ot : vt + ct < R ? vt : at - ht < ht - ot + ct ? R - ct : 0), (mt += S), (gt = (nt += yt) + ut < F && nt >= 0 ? nt : it + ut < F && it >= 0 ? it : yt + ut < F ? yt : nt - pt < pt - it + ut ? F - ut : 0), (gt += S), st.attr("transform", s(mt - 1, gt - 1)), st ); } var xt = d.selectAll("g.hovertext").data(t, function (t) { return C(t); }); return ( xt .enter() .append("g") .classed("hovertext", !0) .each(function () { var t = n.select(this); t.append("rect").call(p.fill, p.addOpacity(f, 0.8)), t.append("text").classed("name", !0), t.append("path").style("stroke-width", "1px"), t .append("text") .classed("nums", !0) .call(h.font, T, k); }), xt.exit().remove(), xt.each(function (t) { var e = n.select(this).attr("transform", ""), o = t.color; Array.isArray(o) && (o = o[t.eventData[0].pointNumber]); var d = t.bgcolor || o, m = p.combine(p.opacity(d) ? d : p.defaultLine, f), g = p.combine(p.opacity(o) ? o : p.defaultLine, f), v = t.borderColor || p.contrast(m), y = O(t, B, a, i, I, e), x = y[0], b = y[1], w = e .select("text.nums") .call( h.font, t.fontFamily || T, t.fontSize || k, t.fontColor || v, ) .text(x) .attr("data-notex", 1) .call(u.positionText, 0, 0) .call(u.convertToTspans, r), A = e.select("text.name"), E = 0, L = 0; if (b && b !== x) { A.call(h.font, t.fontFamily || T, t.fontSize || k, g) .text(b) .attr("data-notex", 1) .call(u.positionText, 0, 0) .call(u.convertToTspans, r); var C = V(r, A.node()); (E = C.width + 2 * S), (L = C.height + 2 * S); } else A.remove(), e.select("rect").remove(); e.select("path").style({ fill: m, stroke: v }); var P = t.xa._offset + (t.x0 + t.x1) / 2, z = t.ya._offset + (t.y0 + t.y1) / 2, N = Math.abs(t.x1 - t.x0), j = Math.abs(t.y1 - t.y0), U = V(r, w.node()), H = U.width / i._invScaleX, q = U.height / i._invScaleY; (t.ty0 = (D - U.top) / i._invScaleY), (t.bx = H + 2 * S), (t.by = Math.max(q + 2 * S, L)), (t.anchor = "start"), (t.txwidth = H), (t.tx2width = E), (t.offset = 0); var G, Y, W = (H + M + S + E) * i._invScaleX; if (c) (t.pos = P), (G = z + j / 2 + W <= F), (Y = z - j / 2 - W >= 0), ("top" !== t.idealAlign && G) || !Y ? G ? ((z += j / 2), (t.anchor = "start")) : (t.anchor = "middle") : ((z -= j / 2), (t.anchor = "end")); else if ( ((t.pos = z), (G = P + N / 2 + W <= R), (Y = P - N / 2 - W >= 0), ("left" !== t.idealAlign && G) || !Y) ) if (G) (P += N / 2), (t.anchor = "start"); else { t.anchor = "middle"; var Z = W / 2, X = P + Z - R, J = P - Z; X > 0 && (P -= X), J < 0 && (P += -J); } else (P -= N / 2), (t.anchor = "end"); w.attr("text-anchor", t.anchor), E && A.attr("text-anchor", t.anchor), e.attr("transform", s(P, z) + (c ? l(_) : "")); }), xt ); } function O(t, e, r, n, i, a) { var s = "", l = ""; void 0 !== t.nameOverride && (t.name = t.nameOverride), t.name && (t.trace._meta && (t.name = o.templateString(t.name, t.trace._meta)), (s = B(t.name, t.nameLength))); var c = r.charAt(0), u = "x" === c ? "y" : "x"; void 0 !== t.zLabel ? (void 0 !== t.xLabel && (l += "x: " + t.xLabel + "
"), void 0 !== t.yLabel && (l += "y: " + t.yLabel + "
"), "choropleth" !== t.trace.type && "choroplethmapbox" !== t.trace.type && (l += (l ? "z: " : "") + t.zLabel)) : e && t[c + "Label"] === i ? (l = t[u + "Label"] || "") : void 0 === t.xLabel ? void 0 !== t.yLabel && "scattercarpet" !== t.trace.type && (l = t.yLabel) : (l = void 0 === t.yLabel ? t.xLabel : "(" + t.xLabel + ", " + t.yLabel + ")"), (!t.text && 0 !== t.text) || Array.isArray(t.text) || (l += (l ? "
" : "") + t.text), void 0 !== t.extraText && (l += (l ? "
" : "") + t.extraText), a && "" === l && !t.hovertemplate && ("" === s && a.remove(), (l = s)); var f = t.hovertemplate || !1; if (f) { var h = t.hovertemplateLabels || t; t[c + "Label"] !== i && ((h[c + "other"] = h[c + "Val"]), (h[c + "otherLabel"] = h[c + "Label"])), (l = (l = o.hovertemplateString( f, h, n._d3locale, t.eventData[0] || {}, t.trace._meta, )).replace(P, function (e, r) { return (s = B(r, t.nameLength)), ""; })); } return [l, s]; } function z(t, e, r, i) { var a = function (t) { return t * r; }, o = function (t) { return t * i; }; t.each(function (t) { var r = n.select(this); if (t.del) return r.remove(); var i = r.select("text.nums"), s = t.anchor, l = "end" === s ? -1 : 1, c = { start: 1, end: -1, middle: 0 }[s], f = c * (M + S), p = f + c * (t.txwidth + S), d = 0, m = t.offset, g = "middle" === s; g && ((f -= t.tx2width / 2), (p += t.txwidth / 2 + S)), e && ((m *= -A), (d = t.offset * k)), r .select("path") .attr( "d", g ? "M-" + a(t.bx / 2 + t.tx2width / 2) + "," + o(m - t.by / 2) + "h" + a(t.bx) + "v" + o(t.by) + "h-" + a(t.bx) + "Z" : "M0,0L" + a(l * M + d) + "," + o(M + m) + "v" + o(t.by / 2 - M) + "h" + a(l * t.bx) + "v-" + o(t.by) + "H" + a(l * M + d) + "V" + o(m - M) + "Z", ); var v = d + f, y = m + t.ty0 - t.by / 2 + S, x = t.textAlign || "auto"; "auto" !== x && ("left" === x && "start" !== s ? (i.attr("text-anchor", "start"), (v = g ? -t.bx / 2 - t.tx2width / 2 + S : -t.bx - S)) : "right" === x && "end" !== s && (i.attr("text-anchor", "end"), (v = g ? t.bx / 2 - t.tx2width / 2 - S : t.bx + S))), i.call(u.positionText, a(v), o(y)), t.tx2width && (r .select("text.name") .call( u.positionText, a(p + c * S + d), o(m + t.ty0 - t.by / 2 + S), ), r .select("rect") .call( h.setRect, a(p + ((c - 1) * t.tx2width) / 2 + d), o(m - t.by / 2 - 1), a(t.tx2width), o(t.by + 2), )); }); } function D(t, e) { var r = t.index, n = t.trace || {}, a = t.cd[0], s = t.cd[r] || {}; function l(t) { return t || (i(t) && 0 === t); } var c = Array.isArray(r) ? function (t, e) { var i = o.castOption(a, r, t); return l(i) ? i : o.extractOption({}, n, "", e); } : function (t, e) { return o.extractOption(s, n, t, e); }; function u(e, r, n) { var i = c(r, n); l(i) && (t[e] = i); } if ( (u("hoverinfo", "hi", "hoverinfo"), u("bgcolor", "hbg", "hoverlabel.bgcolor"), u("borderColor", "hbc", "hoverlabel.bordercolor"), u("fontFamily", "htf", "hoverlabel.font.family"), u("fontSize", "hts", "hoverlabel.font.size"), u("fontColor", "htc", "hoverlabel.font.color"), u("nameLength", "hnl", "hoverlabel.namelength"), u("textAlign", "hta", "hoverlabel.align"), (t.posref = "y" === e || ("closest" === e && "h" === n.orientation) ? t.xa._offset + (t.x0 + t.x1) / 2 : t.ya._offset + (t.y0 + t.y1) / 2), (t.x0 = o.constrain(t.x0, 0, t.xa._length)), (t.x1 = o.constrain(t.x1, 0, t.xa._length)), (t.y0 = o.constrain(t.y0, 0, t.ya._length)), (t.y1 = o.constrain(t.y1, 0, t.ya._length)), void 0 !== t.xLabelVal && ((t.xLabel = "xLabel" in t ? t.xLabel : m.hoverLabelText( t.xa, t.xLabelVal, n.xhoverformat, )), (t.xVal = t.xa.c2d(t.xLabelVal))), void 0 !== t.yLabelVal && ((t.yLabel = "yLabel" in t ? t.yLabel : m.hoverLabelText( t.ya, t.yLabelVal, n.yhoverformat, )), (t.yVal = t.ya.c2d(t.yLabelVal))), void 0 !== t.zLabelVal && void 0 === t.zLabel && (t.zLabel = String(t.zLabelVal)), !(isNaN(t.xerr) || ("log" === t.xa.type && t.xerr <= 0))) ) { var f = m.tickText(t.xa, t.xa.c2l(t.xerr), "hover").text; void 0 !== t.xerrneg ? (t.xLabel += " +" + f + " / -" + m.tickText(t.xa, t.xa.c2l(t.xerrneg), "hover").text) : (t.xLabel += " \xb1 " + f), "x" === e && (t.distance += 1); } if ( !(isNaN(t.yerr) || ("log" === t.ya.type && t.yerr <= 0)) ) { var h = m.tickText(t.ya, t.ya.c2l(t.yerr), "hover").text; void 0 !== t.yerrneg ? (t.yLabel += " +" + h + " / -" + m.tickText(t.ya, t.ya.c2l(t.yerrneg), "hover").text) : (t.yLabel += " \xb1 " + h), "y" === e && (t.distance += 1); } var p = t.hoverinfo || t.trace.hoverinfo; return ( p && "all" !== p && (-1 === (p = Array.isArray(p) ? p : p.split("+")).indexOf( "x", ) && (t.xLabel = void 0), -1 === p.indexOf("y") && (t.yLabel = void 0), -1 === p.indexOf("z") && (t.zLabel = void 0), -1 === p.indexOf("text") && (t.text = void 0), -1 === p.indexOf("name") && (t.name = void 0)), t ); } function R(t, e, r) { var n, i, o = r.container, s = r.fullLayout, l = s._size, c = r.event, u = !!e.hLinePoint, f = !!e.vLinePoint; if ((o.selectAll(".spikeline").remove(), f || u)) { var d = p.combine(s.plot_bgcolor, s.paper_bgcolor); if (u) { var g, v, y = e.hLinePoint; (n = y && y.xa), "cursor" === (i = y && y.ya).spikesnap ? ((g = c.pointerX), (v = c.pointerY)) : ((g = n._offset + y.x), (v = i._offset + y.y)); var x, b, _ = a.readability(y.color, d) < 1.5 ? p.contrast(d) : y.color, w = i.spikemode, T = i.spikethickness, k = i.spikecolor || _, A = m.getPxPosition(t, i); if ( -1 !== w.indexOf("toaxis") || -1 !== w.indexOf("across") ) { if ( (-1 !== w.indexOf("toaxis") && ((x = A), (b = g)), -1 !== w.indexOf("across")) ) { var M = i._counterDomainMin, S = i._counterDomainMax; "free" === i.anchor && ((M = Math.min(M, i.position)), (S = Math.max(S, i.position))), (x = l.l + M * l.w), (b = l.l + S * l.w); } o .insert("line", ":first-child") .attr({ x1: x, x2: b, y1: v, y2: v, "stroke-width": T, stroke: k, "stroke-dasharray": h.dashStyle(i.spikedash, T), }) .classed("spikeline", !0) .classed("crisp", !0), o .insert("line", ":first-child") .attr({ x1: x, x2: b, y1: v, y2: v, "stroke-width": T + 2, stroke: d, }) .classed("spikeline", !0) .classed("crisp", !0); } -1 !== w.indexOf("marker") && o .insert("circle", ":first-child") .attr({ cx: A + ("right" !== i.side ? T : -T), cy: v, r: T, fill: k, }) .classed("spikeline", !0); } if (f) { var E, L, C = e.vLinePoint; (n = C && C.xa), (i = C && C.ya), "cursor" === n.spikesnap ? ((E = c.pointerX), (L = c.pointerY)) : ((E = n._offset + C.x), (L = i._offset + C.y)); var P, I, O = a.readability(C.color, d) < 1.5 ? p.contrast(d) : C.color, z = n.spikemode, D = n.spikethickness, R = n.spikecolor || O, F = m.getPxPosition(t, n); if ( -1 !== z.indexOf("toaxis") || -1 !== z.indexOf("across") ) { if ( (-1 !== z.indexOf("toaxis") && ((P = F), (I = L)), -1 !== z.indexOf("across")) ) { var B = n._counterDomainMin, N = n._counterDomainMax; "free" === n.anchor && ((B = Math.min(B, n.position)), (N = Math.max(N, n.position))), (P = l.t + (1 - N) * l.h), (I = l.t + (1 - B) * l.h); } o .insert("line", ":first-child") .attr({ x1: E, x2: E, y1: P, y2: I, "stroke-width": D, stroke: R, "stroke-dasharray": h.dashStyle(n.spikedash, D), }) .classed("spikeline", !0) .classed("crisp", !0), o .insert("line", ":first-child") .attr({ x1: E, x2: E, y1: P, y2: I, "stroke-width": D + 2, stroke: d, }) .classed("spikeline", !0) .classed("crisp", !0); } -1 !== z.indexOf("marker") && o .insert("circle", ":first-child") .attr({ cx: E, cy: F - ("top" !== n.side ? D : -D), r: D, fill: R, }) .classed("spikeline", !0); } } } function F(t, e) { return ( !e || e.vLinePoint !== t._spikepoints.vLinePoint || e.hLinePoint !== t._spikepoints.hLinePoint ); } function B(t, e) { return u.plainText(t || "", { len: e, allowedTags: ["br", "sub", "sup", "b", "i", "em"], }); } function N(t, e, r) { var n = e[t + "a"], i = e[t + "Val"], a = e.cd[0]; if ("category" === n.type) i = n._categoriesMap[i]; else if ("date" === n.type) { var o = e.trace[t + "periodalignment"]; if (o) { var s = e.cd[e.index], l = s[t + "Start"]; void 0 === l && (l = s[t]); var c = s[t + "End"]; void 0 === c && (c = s[t]); var u = c - l; "end" === o ? (i += u) : "middle" === o && (i += u / 2); } i = n.d2c(i); } return ( a && a.t && a.t.posLetter === n._id && (("group" !== r.boxmode && "group" !== r.violinmode) || (i += a.t.dPos)), i ); } function j(t) { return t.offsetTop + t.clientTop; } function U(t) { return t.offsetLeft + t.clientLeft; } function V(t, e) { var r = t._fullLayout, n = e.getBoundingClientRect(), i = n.x, a = n.y, s = i + n.width, l = a + n.height, c = o.apply3DTransform(r._invTransform)(i, a), u = o.apply3DTransform(r._invTransform)(s, l), f = c[0], h = c[1], p = u[0], d = u[1]; return { x: f, y: h, width: p - f, height: d - h, top: Math.min(h, d), left: Math.min(f, p), right: Math.max(f, p), bottom: Math.max(h, d), }; } }, { "../../lib": 515, "../../lib/events": 504, "../../lib/override_cursor": 526, "../../lib/svg_text_utils": 541, "../../plots/cartesian/axes": 566, "../../registry": 647, "../color": 367, "../dragelement": 386, "../drawing": 389, "../legend/defaults": 419, "../legend/draw": 420, "./constants": 401, "./helpers": 403, "@plotly/d3": 58, "fast-isnumeric": 190, tinycolor2: 313, }, ], 405: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../color"), a = t("./helpers").isUnifiedHover; e.exports = function (t, e, r, o) { o = o || {}; var s = e.legend; function l(t) { o.font[t] || (o.font[t] = s ? e.legend.font[t] : e.font[t]); } e && a(e.hovermode) && (o.font || (o.font = {}), l("size"), l("family"), l("color"), s ? (o.bgcolor || (o.bgcolor = i.combine( e.legend.bgcolor, e.paper_bgcolor, )), o.bordercolor || (o.bordercolor = e.legend.bordercolor)) : o.bgcolor || (o.bgcolor = e.paper_bgcolor)), r("hoverlabel.bgcolor", o.bgcolor), r("hoverlabel.bordercolor", o.bordercolor), r("hoverlabel.namelength", o.namelength), n.coerceFont(r, "hoverlabel.font", o.font), r("hoverlabel.align", o.align); }; }, { "../../lib": 515, "../color": 367, "./helpers": 403 }, ], 406: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"); e.exports = function (t, e) { function r(r, a) { return void 0 !== e[r] ? e[r] : n.coerce(t, e, i, r, a); } return r("clickmode"), r("hovermode"); }; }, { "../../lib": 515, "./layout_attributes": 408 }, ], 407: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../dragelement"), o = t("./helpers"), s = t("./layout_attributes"), l = t("./hover"); e.exports = { moduleType: "component", name: "fx", constants: t("./constants"), schema: { layout: s }, attributes: t("./attributes"), layoutAttributes: s, supplyLayoutGlobalDefaults: t("./layout_global_defaults"), supplyDefaults: t("./defaults"), supplyLayoutDefaults: t("./layout_defaults"), calc: t("./calc"), getDistanceFunction: o.getDistanceFunction, getClosest: o.getClosest, inbox: o.inbox, quadrature: o.quadrature, appendArrayPointValue: o.appendArrayPointValue, castHoverOption: function (t, e, r) { return i.castOption(t, e, "hoverlabel." + r); }, castHoverinfo: function (t, e, r) { return i.castOption(t, r, "hoverinfo", function (r) { return i.coerceHoverinfo( { hoverinfo: r }, { _module: t._module }, e, ); }); }, hover: l.hover, unhover: a.unhover, loneHover: l.loneHover, loneUnhover: function (t) { var e = i.isD3Selection(t) ? t : n.select(t); e.selectAll("g.hovertext").remove(), e.selectAll(".spikeline").remove(); }, click: t("./click"), }; }, { "../../lib": 515, "../dragelement": 386, "./attributes": 398, "./calc": 399, "./click": 400, "./constants": 401, "./defaults": 402, "./helpers": 403, "./hover": 404, "./layout_attributes": 408, "./layout_defaults": 409, "./layout_global_defaults": 410, "@plotly/d3": 58, }, ], 408: [ function (t, e, r) { "use strict"; var n = t("./constants"), i = t("../../plots/font_attributes"), a = i({ editType: "none" }); (a.family.dflt = n.HOVERFONT), (a.size.dflt = n.HOVERFONTSIZE), (e.exports = { clickmode: { valType: "flaglist", flags: ["event", "select"], dflt: "event", editType: "plot", extras: ["none"], }, dragmode: { valType: "enumerated", values: [ "zoom", "pan", "select", "lasso", "drawclosedpath", "drawopenpath", "drawline", "drawrect", "drawcircle", "orbit", "turntable", !1, ], dflt: "zoom", editType: "modebar", }, hovermode: { valType: "enumerated", values: [ "x", "y", "closest", !1, "x unified", "y unified", ], dflt: "closest", editType: "modebar", }, hoverdistance: { valType: "integer", min: -1, dflt: 20, editType: "none", }, spikedistance: { valType: "integer", min: -1, dflt: -1, editType: "none", }, hoverlabel: { bgcolor: { valType: "color", editType: "none" }, bordercolor: { valType: "color", editType: "none" }, font: a, grouptitlefont: i({ editType: "none" }), align: { valType: "enumerated", values: ["left", "right", "auto"], dflt: "auto", editType: "none", }, namelength: { valType: "integer", min: -1, dflt: 15, editType: "none", }, editType: "none", }, selectdirection: { valType: "enumerated", values: ["h", "v", "d", "any"], dflt: "any", editType: "none", }, }); }, { "../../plots/font_attributes": 594, "./constants": 401 }, ], 409: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"), a = t("./hovermode_defaults"), o = t("./hoverlabel_defaults"); e.exports = function (t, e) { function r(r, a) { return n.coerce(t, e, i, r, a); } a(t, e) && (r("hoverdistance"), r("spikedistance")), "select" === r("dragmode") && r("selectdirection"); var s = e._has("mapbox"), l = e._has("geo"), c = e._basePlotModules.length; "zoom" === e.dragmode && (((s || l) && 1 === c) || (s && l && 2 === c)) && (e.dragmode = "pan"), o(t, e, r), n.coerceFont( r, "hoverlabel.grouptitlefont", e.hoverlabel.font, ); }; }, { "../../lib": 515, "./hoverlabel_defaults": 405, "./hovermode_defaults": 406, "./layout_attributes": 408, }, ], 410: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./hoverlabel_defaults"), a = t("./layout_attributes"); e.exports = function (t, e) { i(t, e, function (r, i) { return n.coerce(t, e, a, r, i); }); }; }, { "../../lib": 515, "./hoverlabel_defaults": 405, "./layout_attributes": 408, }, ], 411: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../lib/regex").counter, a = t("../../plots/domain").attributes, o = t("../../plots/cartesian/constants").idRegex, s = t("../../plot_api/plot_template"), l = { rows: { valType: "integer", min: 1, editType: "plot" }, roworder: { valType: "enumerated", values: ["top to bottom", "bottom to top"], dflt: "top to bottom", editType: "plot", }, columns: { valType: "integer", min: 1, editType: "plot" }, subplots: { valType: "info_array", freeLength: !0, dimensions: 2, items: { valType: "enumerated", values: [i("xy").toString(), ""], editType: "plot", }, editType: "plot", }, xaxes: { valType: "info_array", freeLength: !0, items: { valType: "enumerated", values: [o.x.toString(), ""], editType: "plot", }, editType: "plot", }, yaxes: { valType: "info_array", freeLength: !0, items: { valType: "enumerated", values: [o.y.toString(), ""], editType: "plot", }, editType: "plot", }, pattern: { valType: "enumerated", values: ["independent", "coupled"], dflt: "coupled", editType: "plot", }, xgap: { valType: "number", min: 0, max: 1, editType: "plot", }, ygap: { valType: "number", min: 0, max: 1, editType: "plot", }, domain: a( { name: "grid", editType: "plot", noGridCell: !0 }, {}, ), xside: { valType: "enumerated", values: ["bottom", "bottom plot", "top plot", "top"], dflt: "bottom plot", editType: "plot", }, yside: { valType: "enumerated", values: ["left", "left plot", "right plot", "right"], dflt: "left plot", editType: "plot", }, editType: "plot", }; function c(t, e, r) { var n = e[r + "axes"], i = Object.keys((t._splomAxes || {})[r] || {}); return Array.isArray(n) ? n : i.length ? i : void 0; } function u(t, e, r, n, i, a) { var o = e(t + "gap", r), s = e("domain." + t); e(t + "side", n); for ( var l = new Array(i), c = s[0], u = (s[1] - c) / (i - o), f = u * (1 - o), h = 0; h < i; h++ ) { var p = c + u * h; l[a ? i - 1 - h : h] = [p, p + f]; } return l; } function f(t, e, r, n, i) { var a, o = new Array(r); function s(t, r) { -1 !== e.indexOf(r) && void 0 === n[r] ? ((o[t] = r), (n[r] = t)) : (o[t] = ""); } if (Array.isArray(t)) for (a = 0; a < r; a++) s(a, t[a]); else for (s(0, i), a = 1; a < r; a++) s(a, i + (a + 1)); return o; } e.exports = { moduleType: "component", name: "grid", schema: { layout: { grid: l } }, layoutAttributes: l, sizeDefaults: function (t, e) { var r = t.grid || {}, i = c(e, r, "x"), a = c(e, r, "y"); if (t.grid || i || a) { var o, f, h = Array.isArray(r.subplots) && Array.isArray(r.subplots[0]), p = Array.isArray(i), d = Array.isArray(a), m = p && i !== r.xaxes && d && a !== r.yaxes; h ? ((o = r.subplots.length), (f = r.subplots[0].length)) : (d && (o = a.length), p && (f = i.length)); var g = s.newContainer(e, "grid"), v = k("rows", o), y = k("columns", f); if (v * y > 1) { if (!h && !p && !d) "independent" === k("pattern") && (h = !0); g._hasSubplotGrid = h; var x, b, _ = "top to bottom" === k("roworder"), w = h ? 0.2 : 0.1, T = h ? 0.3 : 0.1; m && e._splomGridDflt && ((x = e._splomGridDflt.xside), (b = e._splomGridDflt.yside)), (g._domains = { x: u("x", k, w, x, y), y: u("y", k, T, b, v, _), }); } else delete e.grid; } function k(t, e) { return n.coerce(r, g, l, t, e); } }, contentDefaults: function (t, e) { var r = e.grid; if (r && r._domains) { var n, i, a, o, s, l, u, h = t.grid || {}, p = e._subplots, d = r._hasSubplotGrid, m = r.rows, g = r.columns, v = "independent" === r.pattern, y = (r._axisMap = {}); if (d) { var x = h.subplots || []; l = r.subplots = new Array(m); var b = 1; for (n = 0; n < m; n++) { var _ = (l[n] = new Array(g)), w = x[n] || []; for (i = 0; i < g; i++) if ( (v ? ((s = 1 === b ? "xy" : "x" + b + "y" + b), b++) : (s = w[i]), (_[i] = ""), -1 !== p.cartesian.indexOf(s)) ) { if ( ((u = s.indexOf("y")), (a = s.slice(0, u)), (o = s.slice(u)), (void 0 !== y[a] && y[a] !== i) || (void 0 !== y[o] && y[o] !== n)) ) continue; (_[i] = s), (y[a] = i), (y[o] = n); } } } else { var T = c(e, h, "x"), k = c(e, h, "y"); (r.xaxes = f(T, p.xaxis, g, y, "x")), (r.yaxes = f(k, p.yaxis, m, y, "y")); } var A = (r._anchors = {}), M = "top to bottom" === r.roworder; for (var S in y) { var E, L, C, P = S.charAt(0), I = r[P + "side"]; if (I.length < 8) A[S] = "free"; else if ("x" === P) { if ( (("t" === I.charAt(0)) === M ? ((E = 0), (L = 1), (C = m)) : ((E = m - 1), (L = -1), (C = -1)), d) ) { var O = y[S]; for (n = E; n !== C; n += L) if ( (s = l[n][O]) && ((u = s.indexOf("y")), s.slice(0, u) === S) ) { A[S] = s.slice(u); break; } } else for (n = E; n !== C; n += L) if ( ((o = r.yaxes[n]), -1 !== p.cartesian.indexOf(S + o)) ) { A[S] = o; break; } } else if ( ("l" === I.charAt(0) ? ((E = 0), (L = 1), (C = g)) : ((E = g - 1), (L = -1), (C = -1)), d) ) { var z = y[S]; for (n = E; n !== C; n += L) if ( (s = l[z][n]) && ((u = s.indexOf("y")), s.slice(u) === S) ) { A[S] = s.slice(0, u); break; } } else for (n = E; n !== C; n += L) if ( ((a = r.xaxes[n]), -1 !== p.cartesian.indexOf(a + S)) ) { A[S] = a; break; } } } }, }; }, { "../../lib": 515, "../../lib/regex": 532, "../../plot_api/plot_template": 555, "../../plots/cartesian/constants": 573, "../../plots/domain": 593, }, ], 412: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/constants"), i = t("../../plot_api/plot_template").templatedArray; t("../../constants/axis_placeable_objects"); e.exports = i("image", { visible: { valType: "boolean", dflt: !0, editType: "arraydraw", }, source: { valType: "string", editType: "arraydraw" }, layer: { valType: "enumerated", values: ["below", "above"], dflt: "above", editType: "arraydraw", }, sizex: { valType: "number", dflt: 0, editType: "arraydraw", }, sizey: { valType: "number", dflt: 0, editType: "arraydraw", }, sizing: { valType: "enumerated", values: ["fill", "contain", "stretch"], dflt: "contain", editType: "arraydraw", }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, editType: "arraydraw", }, x: { valType: "any", dflt: 0, editType: "arraydraw" }, y: { valType: "any", dflt: 0, editType: "arraydraw" }, xanchor: { valType: "enumerated", values: ["left", "center", "right"], dflt: "left", editType: "arraydraw", }, yanchor: { valType: "enumerated", values: ["top", "middle", "bottom"], dflt: "top", editType: "arraydraw", }, xref: { valType: "enumerated", values: ["paper", n.idRegex.x.toString()], dflt: "paper", editType: "arraydraw", }, yref: { valType: "enumerated", values: ["paper", n.idRegex.y.toString()], dflt: "paper", editType: "arraydraw", }, editType: "arraydraw", }); }, { "../../constants/axis_placeable_objects": 484, "../../plot_api/plot_template": 555, "../../plots/cartesian/constants": 573, }, ], 413: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib/to_log_range"); e.exports = function (t, e, r, a) { e = e || {}; var o = "log" === r && "linear" === e.type, s = "linear" === r && "log" === e.type; if (o || s) for ( var l, c, u = t._fullLayout.images, f = e._id.charAt(0), h = 0; h < u.length; h++ ) if ( ((c = "images[" + h + "]."), (l = u[h])[f + "ref"] === e._id) ) { var p = l[f], d = l["size" + f], m = null, g = null; if (o) { m = i(p, e.range); var v = d / Math.pow(10, m) / 2; g = (2 * Math.log(v + Math.sqrt(1 + v * v))) / Math.LN10; } else g = (m = Math.pow(10, p)) * (Math.pow(10, d / 2) - Math.pow(10, -d / 2)); n(m) ? n(g) || (g = null) : ((m = null), (g = null)), a(c + f, m), a(c + "size" + f, g); } }; }, { "../../lib/to_log_range": 543, "fast-isnumeric": 190 }, ], 414: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"), a = t("../../plots/array_container_defaults"), o = t("./attributes"); function s(t, e, r) { function a(r, i) { return n.coerce(t, e, o, r, i); } var s = a("source"); if (!a("visible", !!s)) return e; a("layer"), a("xanchor"), a("yanchor"), a("sizex"), a("sizey"), a("sizing"), a("opacity"); for ( var l = { _fullLayout: r }, c = ["x", "y"], u = 0; u < 2; u++ ) { var f = c[u], h = i.coerceRef(t, e, l, f, "paper", void 0); if ("paper" !== h) i.getFromId(l, h)._imgIndices.push(e._index); i.coercePosition(e, l, a, h, f, 0); } return e; } e.exports = function (t, e) { a(t, e, { name: "images", handleItemDefaults: s }); }; }, { "../../lib": 515, "../../plots/array_container_defaults": 561, "../../plots/cartesian/axes": 566, "./attributes": 412, }, ], 415: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../drawing"), a = t("../../plots/cartesian/axes"), o = t("../../plots/cartesian/axis_ids"), s = t("../../constants/xmlns_namespaces"); e.exports = function (t) { var e, r, l = t._fullLayout, c = [], u = {}, f = []; for (r = 0; r < l.images.length; r++) { var h = l.images[r]; if (h.visible) if ( "below" === h.layer && "paper" !== h.xref && "paper" !== h.yref ) { e = o.ref2id(h.xref) + o.ref2id(h.yref); var p = l._plots[e]; if (!p) { f.push(h); continue; } p.mainplot && (e = p.mainplot.id), u[e] || (u[e] = []), u[e].push(h); } else "above" === h.layer ? c.push(h) : f.push(h); } var d = { left: { sizing: "xMin", offset: 0 }, center: { sizing: "xMid", offset: -0.5 }, right: { sizing: "xMax", offset: -1 }, }, m = { top: { sizing: "YMin", offset: 0 }, middle: { sizing: "YMid", offset: -0.5 }, bottom: { sizing: "YMax", offset: -1 }, }; function g(e) { var r = n.select(this); if (this._imgSrc !== e.source) if ( (r.attr("xmlns", s.svg), e.source && "data:" === e.source.slice(0, 5)) ) r.attr("xlink:href", e.source), (this._imgSrc = e.source); else { var i = new Promise( function (t) { var n = new Image(); function i() { r.remove(), t(); } (this.img = n), n.setAttribute("crossOrigin", "anonymous"), (n.onerror = i), (n.onload = function () { var e = document.createElement("canvas"); (e.width = this.width), (e.height = this.height), e .getContext("2d", { willReadFrequently: !0, }) .drawImage(this, 0, 0); var n = e.toDataURL("image/png"); r.attr("xlink:href", n), t(); }), r.on("error", i), (n.src = e.source), (this._imgSrc = e.source); }.bind(this), ); t._promises.push(i); } } function v(e) { var r, o, s = n.select(this), c = a.getFromId(t, e.xref), u = a.getFromId(t, e.yref), f = "domain" === a.getRefType(e.xref), h = "domain" === a.getRefType(e.yref), p = l._size; (r = void 0 !== c ? "string" == typeof e.xref && f ? c._length * e.sizex : Math.abs(c.l2p(e.sizex) - c.l2p(0)) : e.sizex * p.w), (o = void 0 !== u ? "string" == typeof e.yref && h ? u._length * e.sizey : Math.abs(u.l2p(e.sizey) - u.l2p(0)) : e.sizey * p.h); var g, v, y = r * d[e.xanchor].offset, x = o * m[e.yanchor].offset, b = d[e.xanchor].sizing + m[e.yanchor].sizing; switch ( ((g = void 0 !== c ? "string" == typeof e.xref && f ? c._length * e.x + c._offset : c.r2p(e.x) + c._offset : e.x * p.w + p.l), (g += y), (v = void 0 !== u ? "string" == typeof e.yref && h ? u._length * (1 - e.y) + u._offset : u.r2p(e.y) + u._offset : p.h - e.y * p.h + p.t), (v += x), e.sizing) ) { case "fill": b += " slice"; break; case "stretch": b = "none"; } s.attr({ x: g, y: v, width: r, height: o, preserveAspectRatio: b, opacity: e.opacity, }); var _ = (c && "domain" !== a.getRefType(e.xref) ? c._id : "") + (u && "domain" !== a.getRefType(e.yref) ? u._id : ""); i.setClipUrl(s, _ ? "clip" + l._uid + _ : null, t); } var y = l._imageLowerLayer.selectAll("image").data(f), x = l._imageUpperLayer.selectAll("image").data(c); y.enter().append("image"), x.enter().append("image"), y.exit().remove(), x.exit().remove(), y.each(function (t) { g.bind(this)(t), v.bind(this)(t); }), x.each(function (t) { g.bind(this)(t), v.bind(this)(t); }); var b = Object.keys(l._plots); for (r = 0; r < b.length; r++) { e = b[r]; var _ = l._plots[e]; if (_.imagelayer) { var w = _.imagelayer .selectAll("image") .data(u[e] || []); w.enter().append("image"), w.exit().remove(), w.each(function (t) { g.bind(this)(t), v.bind(this)(t); }); } } }; }, { "../../constants/xmlns_namespaces": 492, "../../plots/cartesian/axes": 566, "../../plots/cartesian/axis_ids": 570, "../drawing": 389, "@plotly/d3": 58, }, ], 416: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "component", name: "images", layoutAttributes: t("./attributes"), supplyLayoutDefaults: t("./defaults"), includeBasePlot: t( "../../plots/cartesian/include_components", )("images"), draw: t("./draw"), convertCoords: t("./convert_coords"), }; }, { "../../plots/cartesian/include_components": 577, "./attributes": 412, "./convert_coords": 413, "./defaults": 414, "./draw": 415, }, ], 417: [ function (t, e, r) { "use strict"; var n = t("../../plots/font_attributes"), i = t("../color/attributes"); e.exports = { bgcolor: { valType: "color", editType: "legend" }, bordercolor: { valType: "color", dflt: i.defaultLine, editType: "legend", }, borderwidth: { valType: "number", min: 0, dflt: 0, editType: "legend", }, font: n({ editType: "legend" }), grouptitlefont: n({ editType: "legend" }), orientation: { valType: "enumerated", values: ["v", "h"], dflt: "v", editType: "legend", }, traceorder: { valType: "flaglist", flags: ["reversed", "grouped"], extras: ["normal"], editType: "legend", }, tracegroupgap: { valType: "number", min: 0, dflt: 10, editType: "legend", }, entrywidth: { valType: "number", min: 0, editType: "legend", }, entrywidthmode: { valType: "enumerated", values: ["fraction", "pixels"], dflt: "pixels", editType: "legend", }, itemsizing: { valType: "enumerated", values: ["trace", "constant"], dflt: "trace", editType: "legend", }, itemwidth: { valType: "number", min: 30, dflt: 30, editType: "legend", }, itemclick: { valType: "enumerated", values: ["toggle", "toggleothers", !1], dflt: "toggle", editType: "legend", }, itemdoubleclick: { valType: "enumerated", values: ["toggle", "toggleothers", !1], dflt: "toggleothers", editType: "legend", }, groupclick: { valType: "enumerated", values: ["toggleitem", "togglegroup"], dflt: "togglegroup", editType: "legend", }, x: { valType: "number", min: -2, max: 3, editType: "legend", }, xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "left", editType: "legend", }, y: { valType: "number", min: -2, max: 3, editType: "legend", }, yanchor: { valType: "enumerated", values: ["auto", "top", "middle", "bottom"], editType: "legend", }, uirevision: { valType: "any", editType: "none" }, valign: { valType: "enumerated", values: ["top", "middle", "bottom"], dflt: "middle", editType: "legend", }, title: { text: { valType: "string", dflt: "", editType: "legend" }, font: n({ editType: "legend" }), side: { valType: "enumerated", values: ["top", "left", "top left"], editType: "legend", }, editType: "legend", }, editType: "legend", }; }, { "../../plots/font_attributes": 594, "../color/attributes": 366, }, ], 418: [ function (t, e, r) { "use strict"; e.exports = { scrollBarWidth: 6, scrollBarMinHeight: 20, scrollBarColor: "#808BA4", scrollBarMargin: 4, scrollBarEnterAttrs: { rx: 20, ry: 3, width: 0, height: 0 }, titlePad: 2, itemGap: 5, }; }, {}, ], 419: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"), a = t("../../plot_api/plot_template"), o = t("../../plots/attributes"), s = t("./attributes"), l = t("../../plots/layout_attributes"), c = t("./helpers"); e.exports = function (t, e, r) { var u, f = t.legend || {}, h = a.newContainer(e, "legend"); function p(t, e) { return i.coerce(f, h, s, t, e); } for ( var d = function (t, e) { var r = u._input, n = u; return i.coerce(r, n, o, t, e); }, m = e.font || {}, g = i.coerceFont( p, "grouptitlefont", i.extendFlat({}, m, { size: Math.round(1.1 * m.size), }), ), v = 0, y = !1, x = "normal", b = 0; b < r.length; b++ ) (u = r[b]).visible && ((u.showlegend || (u._dfltShowLegend && !( u._module && u._module.attributes && u._module.attributes.showlegend && !1 === u._module.attributes.showlegend.dflt ))) && (v++, u.showlegend && ((y = !0), (n.traceIs(u, "pie-like") || !0 === u._input.showlegend) && v++), i.coerceFont(d, "legendgrouptitle.font", g)), ((n.traceIs(u, "bar") && "stack" === e.barmode) || -1 !== ["tonextx", "tonexty"].indexOf(u.fill)) && (x = c.isGrouped({ traceorder: x }) ? "grouped+reversed" : "reversed"), void 0 !== u.legendgroup && "" !== u.legendgroup && (x = c.isReversed({ traceorder: x }) ? "reversed+grouped" : "grouped")); var _ = i.coerce(t, e, l, "showlegend", y && v > 1); if ( (!1 === _ && (e.legend = void 0), (!1 !== _ || f.uirevision) && (p("uirevision", e.uirevision), !1 !== _)) ) { p("bgcolor", e.paper_bgcolor), p("bordercolor"), p("borderwidth"); var w, T, k, A = i.coerceFont(p, "font", e.font), M = "h" === p("orientation"); if ( (M ? ((w = 0), n.getComponentMethod( "rangeslider", "isVisible", )(t.xaxis) ? ((T = 1.1), (k = "bottom")) : ((T = -0.1), (k = "top"))) : ((w = 1.02), (T = 1), (k = "auto")), p("traceorder", x), c.isGrouped(e.legend) && p("tracegroupgap"), p("entrywidth"), p("entrywidthmode"), p("itemsizing"), p("itemwidth"), p("itemclick"), p("itemdoubleclick"), p("groupclick"), p("x", w), p("xanchor"), p("y", T), p("yanchor", k), p("valign"), i.noneOrAll(f, h, ["x", "y"]), p("title.text")) ) { p("title.side", M ? "left" : "top"); var S = i.extendFlat({}, A, { size: i.bigFont(A.size), }); i.coerceFont(p, "title.font", S); } } }; }, { "../../lib": 515, "../../plot_api/plot_template": 555, "../../plots/attributes": 562, "../../plots/layout_attributes": 619, "../../registry": 647, "./attributes": 417, "./helpers": 423, }, ], 420: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../plots/plots"), o = t("../../registry"), s = t("../../lib/events"), l = t("../dragelement"), c = t("../drawing"), u = t("../color"), f = t("../../lib/svg_text_utils"), h = t("./handle_click"), p = t("./constants"), d = t("../../constants/alignment"), m = d.LINE_SPACING, g = d.FROM_TL, v = d.FROM_BR, y = t("./get_legend_data"), x = t("./style"), b = t("./helpers"); function _(t, e, r) { var n = t[0], i = n.width, a = e.entrywidthmode, o = n.trace.legendwidth || e.entrywidth; return "fraction" === a ? e._maxWidth * o : r + (o || i); } function w(t, e, r, n, i) { var a = r.data()[0][0].trace, l = { event: i, node: r.node(), curveNumber: a.index, expandedIndex: a._expandedIndex, data: t.data, layout: t.layout, frames: t._transitionData._frames, config: t._context, fullData: t._fullData, fullLayout: t._fullLayout, }; if ( (a._group && (l.group = a._group), o.traceIs(a, "pie-like") && (l.label = r.datum()[0].label), !1 !== s.triggerHandler(t, "plotly_legendclick", l)) ) if (1 === n) e._clickTimeout = setTimeout(function () { t._fullLayout && h(r, t, n); }, t._context.doubleClickDelay); else if (2 === n) { e._clickTimeout && clearTimeout(e._clickTimeout), (t._legendMouseDownTime = 0), !1 !== s.triggerHandler( t, "plotly_legenddoubleclick", l, ) && h(r, t, n); } } function T(t, e, r) { var n, a, s = t.data()[0][0], l = s.trace, u = o.traceIs(l, "pie-like"), h = !r._inHover && e._context.edits.legendText && !u, d = r._maxNameLength; s.groupTitle ? ((n = s.groupTitle.text), (a = s.groupTitle.font)) : ((a = r.font), r.entries ? (n = s.text) : ((n = u ? s.label : l.name), l._meta && (n = i.templateString(n, l._meta)))); var m = i.ensureSingle(t, "text", "legendtext"); m.attr("text-anchor", "start") .call(c.font, a) .text(h ? k(n, d) : n); var g = r.itemwidth + 2 * p.itemGap; f.positionText(m, g, 0), h ? m .call(f.makeEditable, { gd: e, text: n }) .call(M, t, e, r) .on("edit", function (n) { this.text(k(n, d)).call(M, t, e, r); var a = s.trace._fullInput || {}, c = {}; if (o.hasTransform(a, "groupby")) { var u = o.getTransformIndices(a, "groupby"), f = u[u.length - 1], h = i.keyedContainer( a, "transforms[" + f + "].styles", "target", "value.name", ); h.set(s.trace._group, n), (c = h.constructUpdate()); } else c.name = n; return o.call("_guiRestyle", e, c, l.index); }) : M(m, t, e, r); } function k(t, e) { var r = Math.max(4, e); if (t && t.trim().length >= r / 2) return t; for (var n = r - (t = t || "").length; n > 0; n--) t += " "; return t; } function A(t, e) { var r, a = e._context.doubleClickDelay, o = 1, s = i.ensureSingle( t, "rect", "legendtoggle", function (t) { e._context.staticPlot || t .style("cursor", "pointer") .attr("pointer-events", "all"), t.call(u.fill, "rgba(0,0,0,0)"); }, ); e._context.staticPlot || (s.on("mousedown", function () { (r = new Date().getTime()) - e._legendMouseDownTime < a ? (o += 1) : ((o = 1), (e._legendMouseDownTime = r)); }), s.on("mouseup", function () { if (!e._dragged && !e._editing) { var r = e._fullLayout.legend; new Date().getTime() - e._legendMouseDownTime > a && (o = Math.max(o - 1, 1)), w(e, r, t, o, n.event); } })); } function M(t, e, r, n, i) { n._inHover && t.attr("data-notex", !0), f.convertToTspans(t, r, function () { !(function (t, e, r, n) { var i = t.data()[0][0]; if (!r._inHover && i && !i.trace.showlegend) return void t.remove(); var a = t.select("g[class*=math-group]"), o = a.node(); r || (r = e._fullLayout.legend); var s, l = r.borderwidth; s = 1 === n ? r.title.font : i.groupTitle ? i.groupTitle.font : r.font; var u, h, d = s.size * m; if (o) { var g = c.bBox(o); (u = g.height), (h = g.width), 1 === n ? c.setTranslate(a, l, l + 0.75 * u) : c.setTranslate(a, 0, 0.25 * u); } else { var v = t.select( 1 === n ? ".legendtitletext" : ".legendtext", ), y = f.lineCount(v), x = v.node(); if ( ((u = d * y), (h = x ? c.bBox(x).width : 0), 1 === n) ) "left" === r.title.side && (h += 2 * p.itemGap), f.positionText(v, l + p.titlePad, l + d); else { var b = 2 * p.itemGap + r.itemwidth; i.groupTitle && ((b = p.itemGap), (h -= r.itemwidth)), f.positionText(v, b, -d * ((y - 1) / 2 - 0.3)); } } 1 === n ? ((r._titleWidth = h), (r._titleHeight = u)) : ((i.lineHeight = d), (i.height = Math.max(u, 16) + 3), (i.width = h)); })(e, r, n, i); }); } function S(t) { return i.isRightAnchor(t) ? "right" : i.isCenterAnchor(t) ? "center" : "left"; } function E(t) { return i.isBottomAnchor(t) ? "bottom" : i.isMiddleAnchor(t) ? "middle" : "top"; } e.exports = function (t, e) { return ( e || (e = t._fullLayout.legend || {}), (function (t, e) { var r, s, f = t._fullLayout, h = "legend" + f._uid, d = e._inHover; d ? ((r = e.layer), (h += "-hover")) : (r = f._infolayer); if (!r) return; t._legendMouseDownTime || (t._legendMouseDownTime = 0); if (d) { if (!e.entries) return; s = y(e.entries, e); } else { if (!t.calcdata) return; s = f.showlegend && y(t.calcdata, e); } var m = f.hiddenlabels || []; if (!(d || (f.showlegend && s.length))) return ( r.selectAll(".legend").remove(), f._topdefs.select("#" + h).remove(), a.autoMargin(t, "legend") ); var k = i.ensureSingle(r, "g", "legend", function (t) { d || t.attr("pointer-events", "all"); }), L = i.ensureSingleById( f._topdefs, "clipPath", h, function (t) { t.append("rect"); }, ), C = i.ensureSingle(k, "rect", "bg", function (t) { t.attr("shape-rendering", "crispEdges"); }); C.call(u.stroke, e.bordercolor) .call(u.fill, e.bgcolor) .style("stroke-width", e.borderwidth + "px"); var P = i.ensureSingle(k, "g", "scrollbox"), I = e.title; if ( ((e._titleWidth = 0), (e._titleHeight = 0), I.text) ) { var O = i.ensureSingle(P, "text", "legendtitletext"); O.attr("text-anchor", "start") .call(c.font, I.font) .text(I.text), M(O, P, t, e, 1); } else P.selectAll(".legendtitletext").remove(); var z = i.ensureSingle( k, "rect", "scrollbar", function (t) { t.attr(p.scrollBarEnterAttrs).call( u.fill, p.scrollBarColor, ); }, ), D = P.selectAll("g.groups").data(s); D.enter().append("g").attr("class", "groups"), D.exit().remove(); var R = D.selectAll("g.traces").data(i.identity); R.enter().append("g").attr("class", "traces"), R.exit().remove(), R.style("opacity", function (t) { var e = t[0].trace; return o.traceIs(e, "pie-like") ? -1 !== m.indexOf(t[0].label) ? 0.5 : 1 : "legendonly" === e.visible ? 0.5 : 1; }) .each(function () { n.select(this).call(T, t, e); }) .call(x, t, e) .each(function () { d || n.select(this).call(A, t); }), i.syncOrAsync( [ a.previousPromises, function () { return (function (t, e, r, i) { var a = t._fullLayout; i || (i = a.legend); var o = a._size, s = b.isVertical(i), l = b.isGrouped(i), u = "fraction" === i.entrywidthmode, f = i.borderwidth, h = 2 * f, d = p.itemGap, m = i.itemwidth + 2 * d, g = 2 * (f + d), v = E(i), y = i.y < 0 || (0 === i.y && "top" === v), x = i.y > 1 || (1 === i.y && "bottom" === v), w = i.tracegroupgap, T = {}; i._maxHeight = Math.max( y || x ? a.height / 2 : o.h, 30, ); var k = 0; (i._width = 0), (i._height = 0); var A = (function (t) { var e = 0, r = 0, n = t.title.side; n && (-1 !== n.indexOf("left") && (e = t._titleWidth), -1 !== n.indexOf("top") && (r = t._titleHeight)); return [e, r]; })(i); if (s) r.each(function (t) { var e = t[0].height; c.setTranslate( this, f + A[0], f + A[1] + i._height + e / 2 + d, ), (i._height += e), (i._width = Math.max( i._width, t[0].width, )); }), (k = m + i._width), (i._width += d + m + h), (i._height += g), l && (e.each(function (t, e) { c.setTranslate( this, 0, e * i.tracegroupgap, ); }), (i._height += (i._lgroupsLength - 1) * i.tracegroupgap)); else { var M = S(i), L = i.x < 0 || (0 === i.x && "right" === M), C = i.x > 1 || (1 === i.x && "left" === M), P = x || y, I = a.width / 2; i._maxWidth = Math.max( L ? P && "left" === M ? o.l + o.w : I : C ? P && "right" === M ? o.r + o.w : I : o.w, 2 * m, ); var O = 0, z = 0; r.each(function (t) { var e = _(t, i, m); (O = Math.max(O, e)), (z += e); }), (k = null); var D = 0; if (l) { var R = 0, F = 0, B = 0; e.each(function () { var t = 0, e = 0; n.select(this) .selectAll("g.traces") .each(function (r) { var n = _(r, i, m), a = r[0].height; c.setTranslate( this, A[0], A[1] + f + d + a / 2 + e, ), (e += a), (t = Math.max(t, n)), (T[r[0].trace.legendgroup] = t); }); var r = t + d; F > 0 && r + f + F > i._maxWidth ? ((D = Math.max(D, F)), (F = 0), (B += R + w), (R = e)) : (R = Math.max(R, e)), c.setTranslate(this, F, B), (F += r); }), (i._width = Math.max(D, F) + f), (i._height = B + R + g); } else { var N = r.size(), j = z + h + (N - 1) * d < i._maxWidth, U = 0, V = 0, H = 0, q = 0; r.each(function (t) { var e = t[0].height, r = _(t, i, m), n = j ? r : O; u || (n += d), n + f + V - d >= i._maxWidth && ((D = Math.max(D, q)), (V = 0), (H += U), (i._height += U), (U = 0)), c.setTranslate( this, A[0] + f + V, A[1] + f + H + e / 2 + d, ), (q = V + r + d), (V += n), (U = Math.max(U, e)); }), j ? ((i._width = V + h), (i._height = U + g)) : ((i._width = Math.max(D, q) + h), (i._height += U + g)); } } (i._width = Math.ceil( Math.max( i._width + A[0], i._titleWidth + 2 * (f + p.titlePad), ), )), (i._height = Math.ceil( Math.max( i._height + A[1], i._titleHeight + 2 * (f + p.itemGap), ), )), (i._effHeight = Math.min( i._height, i._maxHeight, )); var G = t._context.edits, Y = G.legendText || G.legendPosition; r.each(function (t) { var e = n .select(this) .select(".legendtoggle"), r = t[0].height, a = t[0].trace.legendgroup, o = _(t, i, m); l && "" !== a && (o = T[a]); var f = Y ? m : k || o; s || u || (f += d / 2), c.setRect(e, 0, -r / 2, f, r); }); })(t, D, R, e); }, function () { var s, u, m, y, x = f._size, b = e.borderwidth; if (!d) { if ( (function (t) { var e = t._fullLayout.legend, r = S(e), n = E(e); return a.autoMargin(t, "legend", { x: e.x, y: e.y, l: e._width * g[r], r: e._width * v[r], b: e._effHeight * v[n], t: e._effHeight * g[n], }); })(t) ) return; var _ = x.l + x.w * e.x - g[S(e)] * e._width, T = x.t + x.h * (1 - e.y) - g[E(e)] * e._effHeight; if (f.margin.autoexpand) { var A = _, M = T; (_ = i.constrain(_, 0, f.width - e._width)), (T = i.constrain( T, 0, f.height - e._effHeight, )), _ !== A && i.log( "Constrain legend.x to make legend fit inside graph", ), T !== M && i.log( "Constrain legend.y to make legend fit inside graph", ); } c.setTranslate(k, _, T); } if ( (z.on(".drag", null), k.on("wheel", null), d || e._height <= e._maxHeight || t._context.staticPlot) ) { var I = e._effHeight; d && (I = e._height), C.attr({ width: e._width - b, height: I - b, x: b / 2, y: b / 2, }), c.setTranslate(P, 0, 0), L.select("rect").attr({ width: e._width - 2 * b, height: I - 2 * b, x: b, y: b, }), c.setClipUrl(P, h, t), c.setRect(z, 0, 0, 0, 0), delete e._scrollY; } else { var O, D, R, F = Math.max( p.scrollBarMinHeight, (e._effHeight * e._effHeight) / e._height, ), B = e._effHeight - F - 2 * p.scrollBarMargin, N = e._height - e._effHeight, j = B / N, U = Math.min(e._scrollY || 0, N); C.attr({ width: e._width - 2 * b + p.scrollBarWidth + p.scrollBarMargin, height: e._effHeight - b, x: b / 2, y: b / 2, }), L.select("rect").attr({ width: e._width - 2 * b + p.scrollBarWidth + p.scrollBarMargin, height: e._effHeight - 2 * b, x: b, y: b + U, }), c.setClipUrl(P, h, t), q(U, F, j), k.on("wheel", function () { q( (U = i.constrain( e._scrollY + (n.event.deltaY / B) * N, 0, N, )), F, j, ), 0 !== U && U !== N && n.event.preventDefault(); }); var V = n.behavior .drag() .on("dragstart", function () { var t = n.event.sourceEvent; (O = "touchstart" === t.type ? t.changedTouches[0].clientY : t.clientY), (R = U); }) .on("drag", function () { var t = n.event.sourceEvent; 2 === t.buttons || t.ctrlKey || ((D = "touchmove" === t.type ? t.changedTouches[0].clientY : t.clientY), q( (U = (function (t, e, r) { var n = (r - e) / j + t; return i.constrain(n, 0, N); })(R, O, D)), F, j, )); }); z.call(V); var H = n.behavior .drag() .on("dragstart", function () { var t = n.event.sourceEvent; "touchstart" === t.type && ((O = t.changedTouches[0].clientY), (R = U)); }) .on("drag", function () { var t = n.event.sourceEvent; "touchmove" === t.type && ((D = t.changedTouches[0].clientY), q( (U = (function (t, e, r) { var n = (e - r) / j + t; return i.constrain(n, 0, N); })(R, O, D)), F, j, )); }); P.call(H); } function q(r, n, i) { (e._scrollY = t._fullLayout.legend._scrollY = r), c.setTranslate(P, 0, -r), c.setRect( z, e._width, p.scrollBarMargin + r * i, p.scrollBarWidth, n, ), L.select("rect").attr("y", b + r); } t._context.edits.legendPosition && (k.classed("cursor-move", !0), l.init({ element: k.node(), gd: t, prepFn: function () { var t = c.getTranslate(k); (m = t.x), (y = t.y); }, moveFn: function (t, r) { var n = m + t, i = y + r; c.setTranslate(k, n, i), (s = l.align( n, 0, x.l, x.l + x.w, e.xanchor, )), (u = l.align( i, 0, x.t + x.h, x.t, e.yanchor, )); }, doneFn: function () { void 0 !== s && void 0 !== u && o.call("_guiRelayout", t, { "legend.x": s, "legend.y": u, }); }, clickFn: function (e, n) { var i = r .selectAll("g.traces") .filter(function () { var t = this.getBoundingClientRect(); return ( n.clientX >= t.left && n.clientX <= t.right && n.clientY >= t.top && n.clientY <= t.bottom ); }); i.size() > 0 && w(t, k, i, e, n); }, })); }, ], t, ); })(t, e) ); }; }, { "../../constants/alignment": 483, "../../lib": 515, "../../lib/events": 504, "../../lib/svg_text_utils": 541, "../../plots/plots": 628, "../../registry": 647, "../color": 367, "../dragelement": 386, "../drawing": 389, "./constants": 418, "./get_legend_data": 421, "./handle_click": 422, "./helpers": 423, "./style": 425, "@plotly/d3": 58, }, ], 421: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("./helpers"); e.exports = function (t, e) { var r, a, o = e._inHover, s = i.isGrouped(e), l = i.isReversed(e), c = {}, u = [], f = !1, h = {}, p = 0, d = 0; function m(t, r) { if ("" !== t && i.isGrouped(e)) -1 === u.indexOf(t) ? (u.push(t), (f = !0), (c[t] = [r])) : c[t].push(r); else { var n = "~~i" + p; u.push(n), (c[n] = [r]), p++; } } for (r = 0; r < t.length; r++) { var g = t[r], v = g[0], y = v.trace, x = y.legendgroup; if (o || (y.visible && y.showlegend)) if (n.traceIs(y, "pie-like")) for (h[x] || (h[x] = {}), a = 0; a < g.length; a++) { var b = g[a].label; h[x][b] || (m(x, { label: b, color: g[a].color, i: g[a].i, trace: y, pts: g[a].pts, }), (h[x][b] = !0), (d = Math.max(d, (b || "").length))); } else m(x, v), (d = Math.max(d, (y.name || "").length)); } if (!u.length) return []; var _ = !f || !s, w = []; for (r = 0; r < u.length; r++) { var T = c[u[r]]; _ ? w.push(T[0]) : w.push(T); } for (_ && (w = [w]), r = 0; r < w.length; r++) { var k = 1 / 0; for (a = 0; a < w[r].length; a++) { var A = w[r][a].trace.legendrank; k > A && (k = A); } (w[r][0]._groupMinRank = k), (w[r][0]._preGroupSort = r); } var M = function (t, e) { return ( t.trace.legendrank - e.trace.legendrank || t._preSort - e._preSort ); }; for ( w.forEach(function (t, e) { t[0]._preGroupSort = e; }), w.sort(function (t, e) { return ( t[0]._groupMinRank - e[0]._groupMinRank || t[0]._preGroupSort - e[0]._preGroupSort ); }), r = 0; r < w.length; r++ ) { w[r].forEach(function (t, e) { t._preSort = e; }), w[r].sort(M); var S = w[r][0].trace, E = null; for (a = 0; a < w[r].length; a++) { var L = w[r][a].trace.legendgrouptitle; if (L && L.text) { (E = L), o && (L.font = e._groupTitleFont); break; } } if ((l && w[r].reverse(), E)) { var C = !1; for (a = 0; a < w[r].length; a++) if (n.traceIs(w[r][a].trace, "pie-like")) { C = !0; break; } w[r].unshift({ i: -1, groupTitle: E, noClick: C, trace: { showlegend: S.showlegend, legendgroup: S.legendgroup, visible: "toggleitem" === e.groupclick || S.visible, }, }); } for (a = 0; a < w[r].length; a++) w[r][a] = [w[r][a]]; } return ( (e._lgroupsLength = w.length), (e._maxNameLength = d), w ); }; }, { "../../registry": 647, "./helpers": 423 }, ], 422: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../registry"), a = !0; e.exports = function (t, e, r) { var o = e._fullLayout; if (!e._dragged && !e._editing) { var s, l = o.legend.itemclick, c = o.legend.itemdoubleclick, u = o.legend.groupclick; if ( (1 === r && "toggle" === l && "toggleothers" === c && a && e.data && e._context.showTips ? (n.notifier( n._( e, "Double-click on legend to isolate one trace", ), "long", ), (a = !1)) : (a = !1), 1 === r ? (s = l) : 2 === r && (s = c), s) ) { var f = "togglegroup" === u, h = o.hiddenlabels ? o.hiddenlabels.slice() : [], p = t.data()[0][0]; if (!p.groupTitle || !p.noClick) { var d, m, g, v, y, x = e._fullData, b = p.trace, _ = b.legendgroup, w = {}, T = [], k = [], A = []; if (i.traceIs(b, "pie-like")) { var M = p.label, S = h.indexOf(M); "toggle" === s ? -1 === S ? h.push(M) : h.splice(S, 1) : "toggleothers" === s && ((h = []), e.calcdata[0].forEach(function (t) { M !== t.label && h.push(t.label); }), e._fullLayout.hiddenlabels && e._fullLayout.hiddenlabels.length === h.length && -1 === S && (h = [])), i.call("_guiRelayout", e, "hiddenlabels", h); } else { var E, L = _ && _.length, C = []; if (L) for (d = 0; d < x.length; d++) (E = x[d]).visible && E.legendgroup === _ && C.push(d); if ("toggle" === s) { var P; switch (b.visible) { case !0: P = "legendonly"; break; case !1: P = !1; break; case "legendonly": P = !0; } if (L) if (f) for (d = 0; d < x.length; d++) !1 !== x[d].visible && x[d].legendgroup === _ && j(x[d], P); else j(b, P); else j(b, P); } else if ("toggleothers" === s) { var I, O, z, D, R = !0; for (d = 0; d < x.length; d++) if ( ((I = x[d] === b), (z = !0 !== x[d].showlegend), !( I || z || (O = L && x[d].legendgroup === _) || !0 !== x[d].visible || i.traceIs(x[d], "notLegendIsolatable") )) ) { R = !1; break; } for (d = 0; d < x.length; d++) if ( !1 !== x[d].visible && !i.traceIs(x[d], "notLegendIsolatable") ) switch (b.visible) { case "legendonly": j(x[d], !0); break; case !0: (D = !!R || "legendonly"), (I = x[d] === b), (z = !0 !== x[d].showlegend && !x[d].legendgroup), (O = I || (L && x[d].legendgroup === _)), j(x[d], !(!O && !z) || D); } } for (d = 0; d < k.length; d++) if ((g = k[d])) { var F = g.constructUpdate(), B = Object.keys(F); for (m = 0; m < B.length; m++) (v = B[m]), ((w[v] = w[v] || [])[A[d]] = F[v]); } for (y = Object.keys(w), d = 0; d < y.length; d++) for (v = y[d], m = 0; m < T.length; m++) w[v].hasOwnProperty(m) || (w[v][m] = void 0); i.call("_guiRestyle", e, w, T); } } } } function N(t, e, r) { var n = T.indexOf(t), i = w[e]; return ( i || (i = w[e] = []), -1 === T.indexOf(t) && (T.push(t), (n = T.length - 1)), (i[n] = r), n ); } function j(t, e) { if (!p.groupTitle || f) { var r = t._fullInput; if (i.hasTransform(r, "groupby")) { var a = k[r.index]; if (!a) { var o = i.getTransformIndices(r, "groupby"), s = o[o.length - 1]; (a = n.keyedContainer( r, "transforms[" + s + "].styles", "target", "value.visible", )), (k[r.index] = a); } var l = a.get(t._group); void 0 === l && (l = !0), !1 !== l && a.set(t._group, e), (A[r.index] = N( r.index, "visible", !1 !== r.visible, )); } else { var c = !1 !== r.visible && e; N(r.index, "visible", c); } } } }; }, { "../../lib": 515, "../../registry": 647 }, ], 423: [ function (t, e, r) { "use strict"; (r.isGrouped = function (t) { return -1 !== (t.traceorder || "").indexOf("grouped"); }), (r.isVertical = function (t) { return "h" !== t.orientation; }), (r.isReversed = function (t) { return -1 !== (t.traceorder || "").indexOf("reversed"); }); }, {}, ], 424: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "component", name: "legend", layoutAttributes: t("./attributes"), supplyLayoutDefaults: t("./defaults"), draw: t("./draw"), style: t("./style"), }; }, { "./attributes": 417, "./defaults": 419, "./draw": 420, "./style": 425, }, ], 425: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../registry"), a = t("../../lib"), o = a.strTranslate, s = t("../drawing"), l = t("../color"), c = t("../colorscale/helpers").extractOpts, u = t("../../traces/scatter/subtypes"), f = t("../../traces/pie/style_one"), h = t("../../traces/pie/helpers").castOption, p = t("./constants"); function d(t, e) { return ( (e ? "radial" : "horizontal") + (t ? "" : "reversed") ); } function m(t) { var e = t[0].trace, r = e.contours, n = u.hasLines(e), i = u.hasMarkers(e), a = e.visible && e.fill && "none" !== e.fill, o = !1, s = !1; if (r) { var l = r.coloring; "lines" === l ? (o = !0) : (n = "none" === l || "heatmap" === l || r.showlines), "constraint" === r.type ? (a = "=" !== r._operation) : ("fill" !== l && "heatmap" !== l) || (s = !0); } return { showMarker: i, showLine: n, showFill: a, showGradientLine: o, showGradientFill: s, anyLine: n || o, anyFill: a || s, }; } function g(t, e, r) { return t && a.isArrayOrTypedArray(t) ? e : t > r ? r : t; } e.exports = function (t, e, r) { var v = e._fullLayout; r || (r = v.legend); var y = "constant" === r.itemsizing, x = r.itemwidth, b = (x + 2 * p.itemGap) / 2, _ = o(b, 0), w = function (t, e, r, n) { var i; if (t + 1) i = t; else { if (!(e && e.width > 0)) return 0; i = e.width; } return y ? n : Math.min(i, r); }; function T(t, a, o) { var u = t[0].trace, f = u.marker || {}, h = f.line || {}, p = o ? u.visible && u.type === o : i.traceIs(u, "bar"), d = n .select(a) .select("g.legendpoints") .selectAll("path.legend" + o) .data(p ? [t] : []); d .enter() .append("path") .classed("legend" + o, !0) .attr("d", "M6,6H-6V-6H6Z") .attr("transform", _), d.exit().remove(), d.each(function (t) { var i = n.select(this), a = t[0], o = w(a.mlw, f.line, 5, 2); i.style("stroke-width", o + "px"); var p = a.mcc; if (!r._inHover && "mc" in a) { var d = c(f), m = d.mid; void 0 === m && (m = (d.max + d.min) / 2), (p = s.tryColorscale(f, "")(m)); } var v = p || a.mc || f.color, y = f.pattern, x = y && s.getPatternAttr(y.shape, 0, ""); if (x) { var b = s.getPatternAttr(y.bgcolor, 0, null), _ = s.getPatternAttr(y.fgcolor, 0, null), T = y.fgopacity, k = g(y.size, 8, 10), A = g(y.solidity, 0.5, 1), M = "legend-" + u.uid; i.call( s.pattern, "legend", e, M, x, k, A, p, y.fillmode, b, _, T, ); } else i.call(l.fill, v); o && l.stroke(i, a.mlc || h.color); }); } function k(t, e, r) { var o = t[0], s = o.trace, l = r ? s.visible && s.type === r : i.traceIs(s, r), c = n .select(e) .select("g.legendpoints") .selectAll("path.legend" + r) .data(l ? [t] : []); if ( (c .enter() .append("path") .classed("legend" + r, !0) .attr("d", "M6,6H-6V-6H6Z") .attr("transform", _), c.exit().remove(), c.size()) ) { var u = (s.marker || {}).line, p = w(h(u.width, o.pts), u, 5, 2), d = a.minExtend(s, { marker: { line: { width: p } }, }); d.marker.line.color = u.color; var m = a.minExtend(o, { trace: d }); f(c, m, d); } } t.each(function (t) { var e = n.select(this), i = a.ensureSingle(e, "g", "layers"); i.style("opacity", t[0].trace.opacity); var s = r.valign, l = t[0].lineHeight, c = t[0].height; if ("middle" !== s && l && c) { var u = { top: 1, bottom: -1 }[s] * (0.5 * (l - c + 3)); i.attr("transform", o(0, u)); } else i.attr("transform", null); i .selectAll("g.legendfill") .data([t]) .enter() .append("g") .classed("legendfill", !0), i .selectAll("g.legendlines") .data([t]) .enter() .append("g") .classed("legendlines", !0); var f = i.selectAll("g.legendsymbols").data([t]); f.enter().append("g").classed("legendsymbols", !0), f .selectAll("g.legendpoints") .data([t]) .enter() .append("g") .classed("legendpoints", !0); }) .each(function (t) { var r, i = t[0].trace, o = []; if (i.visible) switch (i.type) { case "histogram2d": case "heatmap": (o = [["M-15,-2V4H15V-2Z"]]), (r = !0); break; case "choropleth": case "choroplethmapbox": (o = [["M-6,-6V6H6V-6Z"]]), (r = !0); break; case "densitymapbox": (o = [ ["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"], ]), (r = "radial"); break; case "cone": (o = [ ["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"], ["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"], ["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"], ]), (r = !1); break; case "streamtube": (o = [ ["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"], [ "M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z", ], ["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"], ]), (r = !1); break; case "surface": (o = [ ["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"], ["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"], ]), (r = !0); break; case "mesh3d": (o = [ ["M-6,6H0L-6,-6Z"], ["M6,6H0L6,-6Z"], ["M-6,-6H6L0,6Z"], ]), (r = !1); break; case "volume": (o = [ ["M-6,6H0L-6,-6Z"], ["M6,6H0L6,-6Z"], ["M-6,-6H6L0,6Z"], ]), (r = !0); break; case "isosurface": (o = [ ["M-6,6H0L-6,-6Z"], ["M6,6H0L6,-6Z"], ["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"], ]), (r = !1); } var u = n .select(this) .select("g.legendpoints") .selectAll("path.legend3dandfriends") .data(o); u .enter() .append("path") .classed("legend3dandfriends", !0) .attr("transform", _) .style("stroke-miterlimit", 1), u.exit().remove(), u.each(function (t, o) { var u, f = n.select(this), h = c(i), p = h.colorscale, m = h.reversescale; if (p) { if (!r) { var g = p.length; u = 0 === o ? p[m ? g - 1 : 0][1] : 1 === o ? p[m ? 0 : g - 1][1] : p[Math.floor((g - 1) / 2)][1]; } } else { var v = i.vertexcolor || i.facecolor || i.color; u = a.isArrayOrTypedArray(v) ? v[o] || v[0] : v; } f.attr("d", t[0]), u ? f.call(l.fill, u) : f.call(function (t) { if (t.size()) { var n = "legendfill-" + i.uid; s.gradient( t, e, n, d(m, "radial" === r), p, "fill", ); } }); }); }) .each(function (t) { var e = t[0].trace, r = "waterfall" === e.type; if (t[0]._distinct && r) { var i = t[0].trace[t[0].dir].marker; return ( (t[0].mc = i.color), (t[0].mlw = i.line.width), (t[0].mlc = i.line.color), T(t, this, "waterfall") ); } var a = []; e.visible && r && (a = t[0].hasTotals ? [ ["increasing", "M-6,-6V6H0Z"], ["totals", "M6,6H0L-6,-6H-0Z"], ["decreasing", "M6,6V-6H0Z"], ] : [ ["increasing", "M-6,-6V6H6Z"], ["decreasing", "M6,6V-6H-6Z"], ]); var o = n .select(this) .select("g.legendpoints") .selectAll("path.legendwaterfall") .data(a); o .enter() .append("path") .classed("legendwaterfall", !0) .attr("transform", _) .style("stroke-miterlimit", 1), o.exit().remove(), o.each(function (t) { var r = n.select(this), i = e[t[0]].marker, a = w(void 0, i.line, 5, 2); r .attr("d", t[1]) .style("stroke-width", a + "px") .call(l.fill, i.color), a && r.call(l.stroke, i.line.color); }); }) .each(function (t) { T(t, this, "funnel"); }) .each(function (t) { T(t, this); }) .each(function (t) { var r = t[0].trace, o = n .select(this) .select("g.legendpoints") .selectAll("path.legendbox") .data( r.visible && i.traceIs(r, "box-violin") ? [t] : [], ); o .enter() .append("path") .classed("legendbox", !0) .attr("d", "M6,6H-6V-6H6Z") .attr("transform", _), o.exit().remove(), o.each(function () { var t = n.select(this); if ( ("all" !== r.boxpoints && "all" !== r.points) || 0 !== l.opacity(r.fillcolor) || 0 !== l.opacity((r.line || {}).color) ) { var i = w(void 0, r.line, 5, 2); t .style("stroke-width", i + "px") .call(l.fill, r.fillcolor), i && l.stroke(t, r.line.color); } else { var c = a.minExtend(r, { marker: { size: y ? 12 : a.constrain(r.marker.size, 2, 16), sizeref: 1, sizemin: 1, sizemode: "diameter", }, }); o.call(s.pointStyle, c, e); } }); }) .each(function (t) { k(t, this, "funnelarea"); }) .each(function (t) { k(t, this, "pie"); }) .each(function (t) { var r, i, o = m(t), l = o.showFill, f = o.showLine, h = o.showGradientLine, p = o.showGradientFill, g = o.anyFill, v = o.anyLine, y = t[0], b = y.trace, _ = c(b), T = _.colorscale, k = _.reversescale, A = u.hasMarkers(b) || !g ? "M5,0" : v ? "M5,-2" : "M5,-3", M = n.select(this), S = M.select(".legendfill") .selectAll("path") .data(l || p ? [t] : []); if ( (S.enter().append("path").classed("js-fill", !0), S.exit().remove(), S.attr("d", A + "h" + x + "v6h-" + x + "z").call( function (t) { if (t.size()) if (l) s.fillGroupStyle(t, e); else { var r = "legendfill-" + b.uid; s.gradient(t, e, r, d(k), T, "fill"); } }, ), f || h) ) { var E = w(void 0, b.line, 10, 5); (i = a.minExtend(b, { line: { width: E } })), (r = [a.minExtend(y, { trace: i })]); } var L = M.select(".legendlines") .selectAll("path") .data(f || h ? [r] : []); L.enter().append("path").classed("js-line", !0), L.exit().remove(), L.attr( "d", A + (h ? "l" + x + ",0.0001" : "h" + x), ).call( f ? s.lineGroupStyle : function (t) { if (t.size()) { var r = "legendline-" + b.uid; s.lineGroupStyle(t), s.gradient(t, e, r, d(k), T, "stroke"); } }, ); }) .each(function (t) { var r, i, o = m(t), l = o.anyFill, c = o.anyLine, f = o.showLine, h = o.showMarker, p = t[0], d = p.trace, g = !h && !c && !l && u.hasText(d); function v(t, e, r, n) { var i = a.nestedProperty(d, t).get(), o = a.isArrayOrTypedArray(i) && e ? e(i) : i; if ((y && o && void 0 !== n && (o = n), r)) { if (o < r[0]) return r[0]; if (o > r[1]) return r[1]; } return o; } function x(t) { return p._distinct && p.index && t[p.index] ? t[p.index] : t[0]; } if (h || g || f) { var b = {}, w = {}; if (h) { (b.mc = v("marker.color", x)), (b.mx = v("marker.symbol", x)), (b.mo = v("marker.opacity", a.mean, [0.2, 1])), (b.mlc = v("marker.line.color", x)), (b.mlw = v( "marker.line.width", a.mean, [0, 5], 2, )), (w.marker = { sizeref: 1, sizemin: 1, sizemode: "diameter", }); var T = v("marker.size", a.mean, [2, 16], 12); (b.ms = T), (w.marker.size = T); } f && (w.line = { width: v("line.width", x, [0, 10], 5), }), g && ((b.tx = "Aa"), (b.tp = v("textposition", x)), (b.ts = 10), (b.tc = v("textfont.color", x)), (b.tf = v("textfont.family", x))), (r = [a.minExtend(p, b)]), ((i = a.minExtend(d, w)).selectedpoints = null), (i.texttemplate = null); } var k = n.select(this).select("g.legendpoints"), A = k.selectAll("path.scatterpts").data(h ? r : []); A.enter() .insert("path", ":first-child") .classed("scatterpts", !0) .attr("transform", _), A.exit().remove(), A.call(s.pointStyle, i, e), h && (r[0].mrc = 3); var M = k.selectAll("g.pointtext").data(g ? r : []); M.enter() .append("g") .classed("pointtext", !0) .append("text") .attr("transform", _), M.exit().remove(), M.selectAll("text").call(s.textPointStyle, i, e); }) .each(function (t) { var e = t[0].trace, r = n .select(this) .select("g.legendpoints") .selectAll("path.legendcandle") .data( e.visible && "candlestick" === e.type ? [t, t] : [], ); r .enter() .append("path") .classed("legendcandle", !0) .attr("d", function (t, e) { return e ? "M-15,0H-8M-8,6V-6H8Z" : "M15,0H8M8,-6V6H-8Z"; }) .attr("transform", _) .style("stroke-miterlimit", 1), r.exit().remove(), r.each(function (t, r) { var i = n.select(this), a = e[r ? "increasing" : "decreasing"], o = w(void 0, a.line, 5, 2); i .style("stroke-width", o + "px") .call(l.fill, a.fillcolor), o && l.stroke(i, a.line.color); }); }) .each(function (t) { var e = t[0].trace, r = n .select(this) .select("g.legendpoints") .selectAll("path.legendohlc") .data(e.visible && "ohlc" === e.type ? [t, t] : []); r .enter() .append("path") .classed("legendohlc", !0) .attr("d", function (t, e) { return e ? "M-15,0H0M-8,-6V0" : "M15,0H0M8,6V0"; }) .attr("transform", _) .style("stroke-miterlimit", 1), r.exit().remove(), r.each(function (t, r) { var i = n.select(this), a = e[r ? "increasing" : "decreasing"], o = w(void 0, a.line, 5, 2); i .style("fill", "none") .call(s.dashLine, a.line.dash, o), o && l.stroke(i, a.line.color); }); }); }; }, { "../../lib": 515, "../../registry": 647, "../../traces/pie/helpers": 915, "../../traces/pie/style_one": 921, "../../traces/scatter/subtypes": 961, "../color": 367, "../colorscale/helpers": 378, "../drawing": 389, "./constants": 418, "@plotly/d3": 58, }, ], 426: [ function (t, e, r) { "use strict"; t("./constants"); e.exports = { editType: "modebar", orientation: { valType: "enumerated", values: ["v", "h"], dflt: "h", editType: "modebar", }, bgcolor: { valType: "color", editType: "modebar" }, color: { valType: "color", editType: "modebar" }, activecolor: { valType: "color", editType: "modebar" }, uirevision: { valType: "any", editType: "none" }, add: { valType: "string", arrayOk: !0, dflt: "", editType: "modebar", }, remove: { valType: "string", arrayOk: !0, dflt: "", editType: "modebar", }, }; }, { "./constants": 428 }, ], 427: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../plots/plots"), a = t("../../plots/cartesian/axis_ids"), o = t("../../fonts/ploticon"), s = t("../shapes/draw").eraseActiveShape, l = t("../../lib"), c = l._, u = (e.exports = {}); function f(t, e) { var r, i, o = e.currentTarget, s = o.getAttribute("data-attr"), l = o.getAttribute("data-val") || !0, c = t._fullLayout, u = {}, f = a.list(t, null, !0), h = c._cartesianSpikesEnabled; if ("zoom" === s) { var p, d = "in" === l ? 0.5 : 2, m = (1 + d) / 2, g = (1 - d) / 2; for (i = 0; i < f.length; i++) if (!(r = f[i]).fixedrange) if (((p = r._name), "auto" === l)) u[p + ".autorange"] = !0; else if ("reset" === l) { if (void 0 === r._rangeInitial) u[p + ".autorange"] = !0; else { var v = r._rangeInitial.slice(); (u[p + ".range[0]"] = v[0]), (u[p + ".range[1]"] = v[1]); } void 0 !== r._showSpikeInitial && ((u[p + ".showspikes"] = r._showSpikeInitial), "on" !== h || r._showSpikeInitial || (h = "off")); } else { var y = [r.r2l(r.range[0]), r.r2l(r.range[1])], x = [m * y[0] + g * y[1], m * y[1] + g * y[0]]; (u[p + ".range[0]"] = r.l2r(x[0])), (u[p + ".range[1]"] = r.l2r(x[1])); } } else "hovermode" !== s || ("x" !== l && "y" !== l) || ((l = c._isHoriz ? "y" : "x"), o.setAttribute("data-val", l)), (u[s] = l); (c._cartesianSpikesEnabled = h), n.call("_guiRelayout", t, u); } function h(t, e) { for ( var r = e.currentTarget, i = r.getAttribute("data-attr"), a = r.getAttribute("data-val") || !0, o = t._fullLayout._subplots.gl3d || [], s = {}, l = i.split("."), c = 0; c < o.length; c++ ) s[o[c] + "." + l[1]] = a; var u = "pan" === a ? a : "zoom"; (s.dragmode = u), n.call("_guiRelayout", t, s); } function p(t, e) { for ( var r = e.currentTarget.getAttribute("data-attr"), i = "resetLastSave" === r, a = "resetDefault" === r, o = t._fullLayout, s = o._subplots.gl3d || [], l = {}, c = 0; c < s.length; c++ ) { var u, f = s[c], h = f + ".camera", p = f + ".aspectratio", d = f + ".aspectmode", m = o[f]._scene; i ? ((l[h + ".up"] = m.viewInitial.up), (l[h + ".eye"] = m.viewInitial.eye), (l[h + ".center"] = m.viewInitial.center), (u = !0)) : a && ((l[h + ".up"] = null), (l[h + ".eye"] = null), (l[h + ".center"] = null), (u = !0)), u && ((l[p + ".x"] = m.viewInitial.aspectratio.x), (l[p + ".y"] = m.viewInitial.aspectratio.y), (l[p + ".z"] = m.viewInitial.aspectratio.z), (l[d] = m.viewInitial.aspectmode)); } n.call("_guiRelayout", t, l); } function d(t, e) { var r = e.currentTarget, n = r._previousVal, i = t._fullLayout, a = i._subplots.gl3d || [], o = ["xaxis", "yaxis", "zaxis"], s = {}, l = {}; if (n) (l = n), (r._previousVal = null); else { for (var c = 0; c < a.length; c++) { var u = a[c], f = i[u], h = u + ".hovermode"; (s[h] = f.hovermode), (l[h] = !1); for (var p = 0; p < 3; p++) { var d = o[p], m = u + "." + d + ".showspikes"; (l[m] = !1), (s[m] = f[d].showspikes); } } r._previousVal = s; } return l; } function m(t, e) { for ( var r = e.currentTarget, i = r.getAttribute("data-attr"), a = r.getAttribute("data-val") || !0, o = t._fullLayout, s = o._subplots.geo || [], l = 0; l < s.length; l++ ) { var c = s[l], u = o[c]; if ("zoom" === i) { var f = u.projection.scale, h = "in" === a ? 2 * f : 0.5 * f; n.call("_guiRelayout", t, c + ".projection.scale", h); } } "reset" === i && x(t, "geo"); } function g(t) { var e = t._fullLayout; return ( !e.hovermode && (e._has("cartesian") ? e._isHoriz ? "y" : "x" : "closest") ); } function v(t) { var e = g(t); n.call("_guiRelayout", t, "hovermode", e); } function y(t, e) { for ( var r = e.currentTarget.getAttribute("data-val"), i = t._fullLayout, a = i._subplots.mapbox || [], o = {}, s = 0; s < a.length; s++ ) { var l = a[s], c = i[l].zoom, u = "in" === r ? 1.05 * c : c / 1.05; o[l + ".zoom"] = u; } n.call("_guiRelayout", t, o); } function x(t, e) { for ( var r = t._fullLayout, i = r._subplots[e] || [], a = {}, o = 0; o < i.length; o++ ) for ( var s = i[o], l = r[s]._subplot.viewInitial, c = Object.keys(l), u = 0; u < c.length; u++ ) { var f = c[u]; a[s + "." + f] = l[f]; } n.call("_guiRelayout", t, a); } (u.toImage = { name: "toImage", title: function (t) { var e = (t._context.toImageButtonOptions || {}).format || "png"; return c( t, "png" === e ? "Download plot as a png" : "Download plot", ); }, icon: o.camera, click: function (t) { var e = t._context.toImageButtonOptions, r = { format: e.format || "png" }; l.notifier( c(t, "Taking snapshot - this may take a few seconds"), "long", ), "svg" !== r.format && l.isIE() && (l.notifier( c( t, "IE only supports svg. Changing format to svg.", ), "long", ), (r.format = "svg")), ["filename", "width", "height", "scale"].forEach( function (t) { t in e && (r[t] = e[t]); }, ), n .call("downloadImage", t, r) .then(function (e) { l.notifier( c(t, "Snapshot succeeded") + " - " + e, "long", ); }) .catch(function () { l.notifier( c( t, "Sorry, there was a problem downloading your snapshot!", ), "long", ); }); }, }), (u.sendDataToCloud = { name: "sendDataToCloud", title: function (t) { return c(t, "Edit in Chart Studio"); }, icon: o.disk, click: function (t) { i.sendDataToCloud(t); }, }), (u.editInChartStudio = { name: "editInChartStudio", title: function (t) { return c(t, "Edit in Chart Studio"); }, icon: o.pencil, click: function (t) { i.sendDataToCloud(t); }, }), (u.zoom2d = { name: "zoom2d", _cat: "zoom", title: function (t) { return c(t, "Zoom"); }, attr: "dragmode", val: "zoom", icon: o.zoombox, click: f, }), (u.pan2d = { name: "pan2d", _cat: "pan", title: function (t) { return c(t, "Pan"); }, attr: "dragmode", val: "pan", icon: o.pan, click: f, }), (u.select2d = { name: "select2d", _cat: "select", title: function (t) { return c(t, "Box Select"); }, attr: "dragmode", val: "select", icon: o.selectbox, click: f, }), (u.lasso2d = { name: "lasso2d", _cat: "lasso", title: function (t) { return c(t, "Lasso Select"); }, attr: "dragmode", val: "lasso", icon: o.lasso, click: f, }), (u.drawclosedpath = { name: "drawclosedpath", title: function (t) { return c(t, "Draw closed freeform"); }, attr: "dragmode", val: "drawclosedpath", icon: o.drawclosedpath, click: f, }), (u.drawopenpath = { name: "drawopenpath", title: function (t) { return c(t, "Draw open freeform"); }, attr: "dragmode", val: "drawopenpath", icon: o.drawopenpath, click: f, }), (u.drawline = { name: "drawline", title: function (t) { return c(t, "Draw line"); }, attr: "dragmode", val: "drawline", icon: o.drawline, click: f, }), (u.drawrect = { name: "drawrect", title: function (t) { return c(t, "Draw rectangle"); }, attr: "dragmode", val: "drawrect", icon: o.drawrect, click: f, }), (u.drawcircle = { name: "drawcircle", title: function (t) { return c(t, "Draw circle"); }, attr: "dragmode", val: "drawcircle", icon: o.drawcircle, click: f, }), (u.eraseshape = { name: "eraseshape", title: function (t) { return c(t, "Erase active shape"); }, icon: o.eraseshape, click: s, }), (u.zoomIn2d = { name: "zoomIn2d", _cat: "zoomin", title: function (t) { return c(t, "Zoom in"); }, attr: "zoom", val: "in", icon: o.zoom_plus, click: f, }), (u.zoomOut2d = { name: "zoomOut2d", _cat: "zoomout", title: function (t) { return c(t, "Zoom out"); }, attr: "zoom", val: "out", icon: o.zoom_minus, click: f, }), (u.autoScale2d = { name: "autoScale2d", _cat: "autoscale", title: function (t) { return c(t, "Autoscale"); }, attr: "zoom", val: "auto", icon: o.autoscale, click: f, }), (u.resetScale2d = { name: "resetScale2d", _cat: "resetscale", title: function (t) { return c(t, "Reset axes"); }, attr: "zoom", val: "reset", icon: o.home, click: f, }), (u.hoverClosestCartesian = { name: "hoverClosestCartesian", _cat: "hoverclosest", title: function (t) { return c(t, "Show closest data on hover"); }, attr: "hovermode", val: "closest", icon: o.tooltip_basic, gravity: "ne", click: f, }), (u.hoverCompareCartesian = { name: "hoverCompareCartesian", _cat: "hoverCompare", title: function (t) { return c(t, "Compare data on hover"); }, attr: "hovermode", val: function (t) { return t._fullLayout._isHoriz ? "y" : "x"; }, icon: o.tooltip_compare, gravity: "ne", click: f, }), (u.zoom3d = { name: "zoom3d", _cat: "zoom", title: function (t) { return c(t, "Zoom"); }, attr: "scene.dragmode", val: "zoom", icon: o.zoombox, click: h, }), (u.pan3d = { name: "pan3d", _cat: "pan", title: function (t) { return c(t, "Pan"); }, attr: "scene.dragmode", val: "pan", icon: o.pan, click: h, }), (u.orbitRotation = { name: "orbitRotation", title: function (t) { return c(t, "Orbital rotation"); }, attr: "scene.dragmode", val: "orbit", icon: o["3d_rotate"], click: h, }), (u.tableRotation = { name: "tableRotation", title: function (t) { return c(t, "Turntable rotation"); }, attr: "scene.dragmode", val: "turntable", icon: o["z-axis"], click: h, }), (u.resetCameraDefault3d = { name: "resetCameraDefault3d", _cat: "resetCameraDefault", title: function (t) { return c(t, "Reset camera to default"); }, attr: "resetDefault", icon: o.home, click: p, }), (u.resetCameraLastSave3d = { name: "resetCameraLastSave3d", _cat: "resetCameraLastSave", title: function (t) { return c(t, "Reset camera to last save"); }, attr: "resetLastSave", icon: o.movie, click: p, }), (u.hoverClosest3d = { name: "hoverClosest3d", _cat: "hoverclosest", title: function (t) { return c(t, "Toggle show closest data on hover"); }, attr: "hovermode", val: null, toggle: !0, icon: o.tooltip_basic, gravity: "ne", click: function (t, e) { var r = d(t, e); n.call("_guiRelayout", t, r); }, }), (u.zoomInGeo = { name: "zoomInGeo", _cat: "zoomin", title: function (t) { return c(t, "Zoom in"); }, attr: "zoom", val: "in", icon: o.zoom_plus, click: m, }), (u.zoomOutGeo = { name: "zoomOutGeo", _cat: "zoomout", title: function (t) { return c(t, "Zoom out"); }, attr: "zoom", val: "out", icon: o.zoom_minus, click: m, }), (u.resetGeo = { name: "resetGeo", _cat: "reset", title: function (t) { return c(t, "Reset"); }, attr: "reset", val: null, icon: o.autoscale, click: m, }), (u.hoverClosestGeo = { name: "hoverClosestGeo", _cat: "hoverclosest", title: function (t) { return c(t, "Toggle show closest data on hover"); }, attr: "hovermode", val: null, toggle: !0, icon: o.tooltip_basic, gravity: "ne", click: v, }), (u.hoverClosestGl2d = { name: "hoverClosestGl2d", _cat: "hoverclosest", title: function (t) { return c(t, "Toggle show closest data on hover"); }, attr: "hovermode", val: null, toggle: !0, icon: o.tooltip_basic, gravity: "ne", click: v, }), (u.hoverClosestPie = { name: "hoverClosestPie", _cat: "hoverclosest", title: function (t) { return c(t, "Toggle show closest data on hover"); }, attr: "hovermode", val: "closest", icon: o.tooltip_basic, gravity: "ne", click: v, }), (u.resetViewSankey = { name: "resetSankeyGroup", title: function (t) { return c(t, "Reset view"); }, icon: o.home, click: function (t) { for ( var e = { "node.groups": [], "node.x": [], "node.y": [], }, r = 0; r < t._fullData.length; r++ ) { var i = t._fullData[r]._viewInitial; e["node.groups"].push(i.node.groups.slice()), e["node.x"].push(i.node.x.slice()), e["node.y"].push(i.node.y.slice()); } n.call("restyle", t, e); }, }), (u.toggleHover = { name: "toggleHover", title: function (t) { return c(t, "Toggle show closest data on hover"); }, attr: "hovermode", val: null, toggle: !0, icon: o.tooltip_basic, gravity: "ne", click: function (t, e) { var r = d(t, e); (r.hovermode = g(t)), n.call("_guiRelayout", t, r); }, }), (u.resetViews = { name: "resetViews", title: function (t) { return c(t, "Reset views"); }, icon: o.home, click: function (t, e) { var r = e.currentTarget; r.setAttribute("data-attr", "zoom"), r.setAttribute("data-val", "reset"), f(t, e), r.setAttribute("data-attr", "resetLastSave"), p(t, e), x(t, "geo"), x(t, "mapbox"); }, }), (u.toggleSpikelines = { name: "toggleSpikelines", title: function (t) { return c(t, "Toggle Spike Lines"); }, icon: o.spikeline, attr: "_cartesianSpikesEnabled", val: "on", click: function (t) { var e = t._fullLayout, r = e._cartesianSpikesEnabled; (e._cartesianSpikesEnabled = "on" === r ? "off" : "on"), n.call( "_guiRelayout", t, (function (t) { for ( var e = "on" === t._fullLayout._cartesianSpikesEnabled, r = a.list(t, null, !0), n = {}, i = 0; i < r.length; i++ ) { var o = r[i]; n[o._name + ".showspikes"] = !!e || o._showSpikeInitial; } return n; })(t), ); }, }), (u.resetViewMapbox = { name: "resetViewMapbox", _cat: "resetView", title: function (t) { return c(t, "Reset view"); }, attr: "reset", icon: o.home, click: function (t) { x(t, "mapbox"); }, }), (u.zoomInMapbox = { name: "zoomInMapbox", _cat: "zoomin", title: function (t) { return c(t, "Zoom in"); }, attr: "zoom", val: "in", icon: o.zoom_plus, click: y, }), (u.zoomOutMapbox = { name: "zoomOutMapbox", _cat: "zoomout", title: function (t) { return c(t, "Zoom out"); }, attr: "zoom", val: "out", icon: o.zoom_minus, click: y, }); }, { "../../fonts/ploticon": 494, "../../lib": 515, "../../plots/cartesian/axis_ids": 570, "../../plots/plots": 628, "../../registry": 647, "../shapes/draw": 462, }, ], 428: [ function (t, e, r) { "use strict"; var n = t("./buttons"), i = Object.keys(n), a = [ "drawline", "drawopenpath", "drawclosedpath", "drawcircle", "drawrect", "eraseshape", ], o = [ "v1hovermode", "hoverclosest", "hovercompare", "togglehover", "togglespikelines", ].concat(a), s = []; i.forEach(function (t) { !(function (t) { if (-1 === o.indexOf(t._cat || t.name)) { var e = t.name, r = (t._cat || t.name).toLowerCase(); -1 === s.indexOf(e) && s.push(e), -1 === s.indexOf(r) && s.push(r); } })(n[t]); }), s.sort(), (e.exports = { DRAW_MODES: a, backButtons: o, foreButtons: s, }); }, { "./buttons": 427 }, ], 429: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../color"), a = t("../../plot_api/plot_template"), o = t("./attributes"); e.exports = function (t, e) { var r = t.modebar || {}, s = a.newContainer(e, "modebar"); function l(t, e) { return n.coerce(r, s, o, t, e); } l("orientation"), l("bgcolor", i.addOpacity(e.paper_bgcolor, 0.5)); var c = i.contrast(i.rgb(e.modebar.bgcolor)); l("color", i.addOpacity(c, 0.3)), l("activecolor", i.addOpacity(c, 0.7)), l("uirevision", e.uirevision), l("add"), l("remove"); }; }, { "../../lib": 515, "../../plot_api/plot_template": 555, "../color": 367, "./attributes": 426, }, ], 430: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "component", name: "modebar", layoutAttributes: t("./attributes"), supplyLayoutDefaults: t("./defaults"), manage: t("./manage"), }; }, { "./attributes": 426, "./defaults": 429, "./manage": 431 }, ], 431: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axis_ids"), i = t("../../traces/scatter/subtypes"), a = t("../../registry"), o = t("../fx/helpers").isUnifiedHover, s = t("./modebar"), l = t("./buttons"), c = t("./constants").DRAW_MODES, u = t("../../lib").extendDeep; e.exports = function (t) { var e = t._fullLayout, r = t._context, f = e._modeBar; if (r.displayModeBar || r.watermark) { if (!Array.isArray(r.modeBarButtonsToRemove)) throw new Error( [ "*modeBarButtonsToRemove* configuration options", "must be an array.", ].join(" "), ); if (!Array.isArray(r.modeBarButtonsToAdd)) throw new Error( [ "*modeBarButtonsToAdd* configuration options", "must be an array.", ].join(" "), ); var h, p = r.modeBarButtons; (h = Array.isArray(p) && p.length ? (function (t) { for (var e = u([], t), r = 0; r < e.length; r++) for (var n = e[r], i = 0; i < n.length; i++) { var a = n[i]; if ("string" == typeof a) { if (void 0 === l[a]) throw new Error( [ "*modeBarButtons* configuration options", "invalid button name", ].join(" "), ); e[r][i] = l[a]; } } return e; })(p) : !r.displayModeBar && r.watermark ? [] : (function (t) { var e = t._fullLayout, r = t._fullData, s = t._context; function u(t, e) { if ("string" == typeof e) { if (e.toLowerCase() === t.toLowerCase()) return !0; } else { var r = e.name, n = e._cat || e.name; if (r === t || n === t.toLowerCase()) return !0; } return !1; } var f = e.modebar.add; "string" == typeof f && (f = [f]); var h = e.modebar.remove; "string" == typeof h && (h = [h]); var p = s.modeBarButtonsToAdd.concat( f.filter(function (t) { for ( var e = 0; e < s.modeBarButtonsToRemove.length; e++ ) if (u(t, s.modeBarButtonsToRemove[e])) return !1; return !0; }), ), d = s.modeBarButtonsToRemove.concat( h.filter(function (t) { for ( var e = 0; e < s.modeBarButtonsToAdd.length; e++ ) if (u(t, s.modeBarButtonsToAdd[e])) return !1; return !0; }), ), m = e._has("cartesian"), g = e._has("gl3d"), v = e._has("geo"), y = e._has("pie"), x = e._has("funnelarea"), b = e._has("gl2d"), _ = e._has("ternary"), w = e._has("mapbox"), T = e._has("polar"), k = e._has("smith"), A = e._has("sankey"), M = (function (t) { for ( var e = n.list( { _fullLayout: t }, null, !0, ), r = 0; r < e.length; r++ ) if (!e[r].fixedrange) return !1; return !0; })(e), S = o(e.hovermode), E = []; function L(t) { if (t.length) { for (var e = [], r = 0; r < t.length; r++) { for ( var n = t[r], i = l[n], a = i.name.toLowerCase(), o = (i._cat || i.name).toLowerCase(), s = !1, c = 0; c < d.length; c++ ) { var u = d[c].toLowerCase(); if (u === a || u === o) { s = !0; break; } } s || e.push(l[n]); } E.push(e); } } var C = ["toImage"]; s.showEditInChartStudio ? C.push("editInChartStudio") : s.showSendToCloud && C.push("sendDataToCloud"); L(C); var P = [], I = [], O = [], z = []; (m || b || y || x || _) + v + g + w + T + k > 1 ? ((I = ["toggleHover"]), (O = ["resetViews"])) : v ? ((P = ["zoomInGeo", "zoomOutGeo"]), (I = ["hoverClosestGeo"]), (O = ["resetGeo"])) : g ? ((I = ["hoverClosest3d"]), (O = [ "resetCameraDefault3d", "resetCameraLastSave3d", ])) : w ? ((P = [ "zoomInMapbox", "zoomOutMapbox", ]), (I = ["toggleHover"]), (O = ["resetViewMapbox"])) : b ? (I = ["hoverClosestGl2d"]) : y ? (I = ["hoverClosestPie"]) : A ? ((I = [ "hoverClosestCartesian", "hoverCompareCartesian", ]), (O = ["resetViewSankey"])) : (I = ["toggleHover"]); m && (I = [ "toggleSpikelines", "hoverClosestCartesian", "hoverCompareCartesian", ]); ((function (t) { for (var e = 0; e < t.length; e++) if (!a.traceIs(t[e], "noHover")) return !1; return !0; })(r) || S) && (I = []); (!m && !b) || M || ((P = [ "zoomIn2d", "zoomOut2d", "autoScale2d", ]), "resetViews" !== O[0] && (O = ["resetScale2d"])); g ? (z = [ "zoom3d", "pan3d", "orbitRotation", "tableRotation", ]) : ((m || b) && !M) || _ ? (z = ["zoom2d", "pan2d"]) : w || v ? (z = ["pan2d"]) : T && (z = ["zoom2d"]); (function (t) { for ( var e = !1, r = 0; r < t.length && !e; r++ ) { var n = t[r]; n._module && n._module.selectPoints && (a.traceIs(n, "scatter-like") ? (i.hasMarkers(n) || i.hasText(n)) && (e = !0) : (a.traceIs(n, "box-violin") && "all" !== n.boxpoints && "all" !== n.points) || (e = !0)); } return e; })(r) && z.push("select2d", "lasso2d"); var D = [], R = function (t) { -1 === D.indexOf(t) && -1 !== I.indexOf(t) && D.push(t); }; if (Array.isArray(p)) { for (var F = [], B = 0; B < p.length; B++) { var N = p[B]; "string" == typeof N ? ((N = N.toLowerCase()), -1 !== c.indexOf(N) ? (e._has("mapbox") || e._has("cartesian")) && z.push(N) : "togglespikelines" === N ? R("toggleSpikelines") : "togglehover" === N ? R("toggleHover") : "hovercompare" === N ? R("hoverCompareCartesian") : "hoverclosest" === N ? (R("hoverClosestCartesian"), R("hoverClosestGeo"), R("hoverClosest3d"), R("hoverClosestGl2d"), R("hoverClosestPie")) : "v1hovermode" === N && (R("toggleHover"), R("hoverClosestCartesian"), R("hoverCompareCartesian"), R("hoverClosestGeo"), R("hoverClosest3d"), R("hoverClosestGl2d"), R("hoverClosestPie"))) : F.push(N); } p = F; } return ( L(z), L(P.concat(O)), L(D), (function (t, e) { if (e.length) if (Array.isArray(e[0])) for (var r = 0; r < e.length; r++) t.push(e[r]); else t.push(e); return t; })(E, p) ); })(t)), f ? f.update(t, h) : (e._modeBar = s(t, h)); } else f && (f.destroy(), delete e._modeBar); }; }, { "../../lib": 515, "../../plots/cartesian/axis_ids": 570, "../../registry": 647, "../../traces/scatter/subtypes": 961, "../fx/helpers": 403, "./buttons": 427, "./constants": 428, "./modebar": 432, }, ], 432: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("fast-isnumeric"), a = t("../../lib"), o = t("../../fonts/ploticon"), s = t("../../version").version, l = new DOMParser(); function c(t) { (this.container = t.container), (this.element = document.createElement("div")), this.update(t.graphInfo, t.buttons), this.container.appendChild(this.element); } var u = c.prototype; (u.update = function (t, e) { this.graphInfo = t; var r = this.graphInfo._context, n = this.graphInfo._fullLayout, i = "modebar-" + n._uid; this.element.setAttribute("id", i), (this._uid = i), (this.element.className = "modebar"), "hover" === r.displayModeBar && (this.element.className += " modebar--hover ease-bg"), "v" === n.modebar.orientation && ((this.element.className += " vertical"), (e = e.reverse())); var o = n.modebar, s = "hover" === r.displayModeBar ? ".js-plotly-plot .plotly:hover " : ""; a.deleteRelatedStyleRule(i), a.addRelatedStyleRule( i, s + "#" + i + " .modebar-group", "background-color: " + o.bgcolor, ), a.addRelatedStyleRule( i, "#" + i + " .modebar-btn .icon path", "fill: " + o.color, ), a.addRelatedStyleRule( i, "#" + i + " .modebar-btn:hover .icon path", "fill: " + o.activecolor, ), a.addRelatedStyleRule( i, "#" + i + " .modebar-btn.active .icon path", "fill: " + o.activecolor, ); var l = !this.hasButtons(e), c = this.hasLogo !== r.displaylogo, u = this.locale !== r.locale; if ( ((this.locale = r.locale), (l || c || u) && (this.removeAllButtons(), this.updateButtons(e), r.watermark || r.displaylogo)) ) { var f = this.getLogo(); r.watermark && (f.className = f.className + " watermark"), "v" === n.modebar.orientation ? this.element.insertBefore( f, this.element.childNodes[0], ) : this.element.appendChild(f), (this.hasLogo = !0); } this.updateActiveButton(); }), (u.updateButtons = function (t) { var e = this; (this.buttons = t), (this.buttonElements = []), (this.buttonsNames = []), this.buttons.forEach(function (t) { var r = e.createGroup(); t.forEach(function (t) { var n = t.name; if (!n) throw new Error( "must provide button 'name' in button config", ); if (-1 !== e.buttonsNames.indexOf(n)) throw new Error( "button name '" + n + "' is taken", ); e.buttonsNames.push(n); var i = e.createButton(t); e.buttonElements.push(i), r.appendChild(i); }), e.element.appendChild(r); }); }), (u.createGroup = function () { var t = document.createElement("div"); return (t.className = "modebar-group"), t; }), (u.createButton = function (t) { var e = this, r = document.createElement("a"); r.setAttribute("rel", "tooltip"), (r.className = "modebar-btn"); var i = t.title; void 0 === i ? (i = t.name) : "function" == typeof i && (i = i(this.graphInfo)), (i || 0 === i) && r.setAttribute("data-title", i), void 0 !== t.attr && r.setAttribute("data-attr", t.attr); var a = t.val; if ( (void 0 !== a && ("function" == typeof a && (a = a(this.graphInfo)), r.setAttribute("data-val", a)), "function" != typeof t.click) ) throw new Error( "must provide button 'click' function in button config", ); r.addEventListener("click", function (r) { t.click(e.graphInfo, r), e.updateActiveButton(r.currentTarget); }), r.setAttribute("data-toggle", t.toggle || !1), t.toggle && n.select(r).classed("active", !0); var s = t.icon; return ( "function" == typeof s ? r.appendChild(s()) : r.appendChild(this.createIcon(s || o.question)), r.setAttribute("data-gravity", t.gravity || "n"), r ); }), (u.createIcon = function (t) { var e, r = i(t.height) ? Number(t.height) : t.ascent - t.descent, n = "http://www.w3.org/2000/svg"; if (t.path) { (e = document.createElementNS(n, "svg")).setAttribute( "viewBox", [0, 0, t.width, r].join(" "), ), e.setAttribute("class", "icon"); var a = document.createElementNS(n, "path"); a.setAttribute("d", t.path), t.transform ? a.setAttribute("transform", t.transform) : void 0 !== t.ascent && a.setAttribute( "transform", "matrix(1 0 0 -1 0 " + t.ascent + ")", ), e.appendChild(a); } t.svg && (e = l.parseFromString(t.svg, "application/xml") .childNodes[0]); return ( e.setAttribute("height", "1em"), e.setAttribute("width", "1em"), e ); }), (u.updateActiveButton = function (t) { var e = this.graphInfo._fullLayout, r = void 0 !== t ? t.getAttribute("data-attr") : null; this.buttonElements.forEach(function (t) { var i = t.getAttribute("data-val") || !0, o = t.getAttribute("data-attr"), s = "true" === t.getAttribute("data-toggle"), l = n.select(t); if (s) o === r && l.classed("active", !l.classed("active")); else { var c = null === o ? o : a.nestedProperty(e, o).get(); l.classed("active", c === i); } }); }), (u.hasButtons = function (t) { var e = this.buttons; if (!e) return !1; if (t.length !== e.length) return !1; for (var r = 0; r < t.length; ++r) { if (t[r].length !== e[r].length) return !1; for (var n = 0; n < t[r].length; n++) if (t[r][n].name !== e[r][n].name) return !1; } return !0; }), (u.getLogo = function () { var t = this.createGroup(), e = document.createElement("a"); return ( (e.href = "https://plotly.com/"), (e.target = "_blank"), e.setAttribute( "data-title", a._(this.graphInfo, "Produced with Plotly.js") + " (v" + s + ")", ), (e.className = "modebar-btn plotlyjsicon modebar-btn--logo"), e.appendChild(this.createIcon(o.newplotlylogo)), t.appendChild(e), t ); }), (u.removeAllButtons = function () { for (; this.element.firstChild; ) this.element.removeChild(this.element.firstChild); this.hasLogo = !1; }), (u.destroy = function () { a.removeElement(this.container.querySelector(".modebar")), a.deleteRelatedStyleRule(this._uid); }), (e.exports = function (t, e) { var r = t._fullLayout, i = new c({ graphInfo: t, container: r._modebardiv.node(), buttons: e, }); return ( r._privateplot && n .select(i.element) .append("span") .classed("badge-private float--left", !0) .text("PRIVATE"), i ); }); }, { "../../fonts/ploticon": 494, "../../lib": 515, "../../version": 1132, "@plotly/d3": 58, "fast-isnumeric": 190, }, ], 433: [ function (t, e, r) { "use strict"; var n = t("../../plots/font_attributes"), i = t("../color/attributes"), a = (0, t("../../plot_api/plot_template").templatedArray)( "button", { visible: { valType: "boolean", dflt: !0, editType: "plot", }, step: { valType: "enumerated", values: [ "month", "year", "day", "hour", "minute", "second", "all", ], dflt: "month", editType: "plot", }, stepmode: { valType: "enumerated", values: ["backward", "todate"], dflt: "backward", editType: "plot", }, count: { valType: "number", min: 0, dflt: 1, editType: "plot", }, label: { valType: "string", editType: "plot" }, editType: "plot", }, ); e.exports = { visible: { valType: "boolean", editType: "plot" }, buttons: a, x: { valType: "number", min: -2, max: 3, editType: "plot" }, xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "left", editType: "plot", }, y: { valType: "number", min: -2, max: 3, editType: "plot" }, yanchor: { valType: "enumerated", values: ["auto", "top", "middle", "bottom"], dflt: "bottom", editType: "plot", }, font: n({ editType: "plot" }), bgcolor: { valType: "color", dflt: i.lightLine, editType: "plot", }, activecolor: { valType: "color", editType: "plot" }, bordercolor: { valType: "color", dflt: i.defaultLine, editType: "plot", }, borderwidth: { valType: "number", min: 0, dflt: 0, editType: "plot", }, editType: "plot", }; }, { "../../plot_api/plot_template": 555, "../../plots/font_attributes": 594, "../color/attributes": 366, }, ], 434: [ function (t, e, r) { "use strict"; e.exports = { yPad: 0.02, minButtonWidth: 30, rx: 3, ry: 3, lightAmount: 25, darkAmount: 10, }; }, {}, ], 435: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../color"), a = t("../../plot_api/plot_template"), o = t("../../plots/array_container_defaults"), s = t("./attributes"), l = t("./constants"); function c(t, e, r, i) { var a = i.calendar; function o(r, i) { return n.coerce(t, e, s.buttons, r, i); } if (o("visible")) { var l = o("step"); "all" !== l && (!a || "gregorian" === a || ("month" !== l && "year" !== l) ? o("stepmode") : (e.stepmode = "backward"), o("count")), o("label"); } } e.exports = function (t, e, r, u, f) { var h = t.rangeselector || {}, p = a.newContainer(e, "rangeselector"); function d(t, e) { return n.coerce(h, p, s, t, e); } if ( d( "visible", o(h, p, { name: "buttons", handleItemDefaults: c, calendar: f, }).length > 0, ) ) { var m = (function (t, e, r) { for ( var n = r.filter(function (r) { return e[r].anchor === t._id; }), i = 0, a = 0; a < n.length; a++ ) { var o = e[n[a]].domain; o && (i = Math.max(o[1], i)); } return [t.domain[0], i + l.yPad]; })(e, r, u); d("x", m[0]), d("y", m[1]), n.noneOrAll(t, e, ["x", "y"]), d("xanchor"), d("yanchor"), n.coerceFont(d, "font", r.font); var g = d("bgcolor"); d( "activecolor", i.contrast(g, l.lightAmount, l.darkAmount), ), d("bordercolor"), d("borderwidth"); } }; }, { "../../lib": 515, "../../plot_api/plot_template": 555, "../../plots/array_container_defaults": 561, "../color": 367, "./attributes": 433, "./constants": 434, }, ], 436: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../registry"), a = t("../../plots/plots"), o = t("../color"), s = t("../drawing"), l = t("../../lib"), c = l.strTranslate, u = t("../../lib/svg_text_utils"), f = t("../../plots/cartesian/axis_ids"), h = t("../../constants/alignment"), p = h.LINE_SPACING, d = h.FROM_TL, m = h.FROM_BR, g = t("./constants"), v = t("./get_update_object"); function y(t) { return t._id; } function x(t, e, r) { var n = l.ensureSingle( t, "rect", "selector-rect", function (t) { t.attr("shape-rendering", "crispEdges"); }, ); n.attr({ rx: g.rx, ry: g.ry }), n .call(o.stroke, e.bordercolor) .call( o.fill, (function (t, e) { return e._isActive || e._isHovered ? t.activecolor : t.bgcolor; })(e, r), ) .style("stroke-width", e.borderwidth + "px"); } function b(t, e, r, n) { l.ensureSingle(t, "text", "selector-text", function (t) { t.attr("text-anchor", "middle"); }) .call(s.font, e.font) .text( (function (t, e) { if (t.label) return e ? l.templateString(t.label, e) : t.label; return "all" === t.step ? "all" : t.count + t.step.charAt(0); })(r, n._fullLayout._meta), ) .call(function (t) { u.convertToTspans(t, n); }); } e.exports = function (t) { var e = t._fullLayout._infolayer .selectAll(".rangeselector") .data( (function (t) { for ( var e = f.list(t, "x", !0), r = [], n = 0; n < e.length; n++ ) { var i = e[n]; i.rangeselector && i.rangeselector.visible && r.push(i); } return r; })(t), y, ); e.enter().append("g").classed("rangeselector", !0), e.exit().remove(), e.style({ cursor: "pointer", "pointer-events": "all" }), e.each(function (e) { var r = n.select(this), o = e, f = o.rangeselector, h = r .selectAll("g.button") .data(l.filterVisible(f.buttons)); h.enter().append("g").classed("button", !0), h.exit().remove(), h.each(function (e) { var r = n.select(this), a = v(o, e); (e._isActive = (function (t, e, r) { if ("all" === e.step) return !0 === t.autorange; var n = Object.keys(r); return ( t.range[0] === r[n[0]] && t.range[1] === r[n[1]] ); })(o, e, a)), r.call(x, f, e), r.call(b, f, e, t), r.on("click", function () { t._dragged || i.call("_guiRelayout", t, a); }), r.on("mouseover", function () { (e._isHovered = !0), r.call(x, f, e); }), r.on("mouseout", function () { (e._isHovered = !1), r.call(x, f, e); }); }), (function (t, e, r, i, o) { var f = 0, h = 0, v = r.borderwidth; e.each(function () { var t = n.select(this).select(".selector-text"), e = r.font.size * p, i = Math.max(e * u.lineCount(t), 16) + 3; h = Math.max(h, i); }), e.each(function () { var t = n.select(this), e = t.select(".selector-rect"), i = t.select(".selector-text"), a = i.node() && s.bBox(i.node()).width, o = r.font.size * p, l = u.lineCount(i), d = Math.max(a + 10, g.minButtonWidth); t.attr("transform", c(v + f, v)), e.attr({ x: 0, y: 0, width: d, height: h }), u.positionText( i, d / 2, h / 2 - ((l - 1) * o) / 2 + 3, ), (f += d + 5); }); var y = t._fullLayout._size, x = y.l + y.w * r.x, b = y.t + y.h * (1 - r.y), _ = "left"; l.isRightAnchor(r) && ((x -= f), (_ = "right")); l.isCenterAnchor(r) && ((x -= f / 2), (_ = "center")); var w = "top"; l.isBottomAnchor(r) && ((b -= h), (w = "bottom")); l.isMiddleAnchor(r) && ((b -= h / 2), (w = "middle")); (f = Math.ceil(f)), (h = Math.ceil(h)), (x = Math.round(x)), (b = Math.round(b)), a.autoMargin(t, i + "-range-selector", { x: r.x, y: r.y, l: f * d[_], r: f * m[_], b: h * m[w], t: h * d[w], }), o.attr("transform", c(x, b)); })(t, h, f, o._name, r); }); }; }, { "../../constants/alignment": 483, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plots/cartesian/axis_ids": 570, "../../plots/plots": 628, "../../registry": 647, "../color": 367, "../drawing": 389, "./constants": 434, "./get_update_object": 437, "@plotly/d3": 58, }, ], 437: [ function (t, e, r) { "use strict"; var n = t("d3-time"), i = t("../../lib").titleCase; e.exports = function (t, e) { var r = t._name, a = {}; if ("all" === e.step) a[r + ".autorange"] = !0; else { var o = (function (t, e) { var r, a = t.range, o = new Date(t.r2l(a[1])), s = e.step, l = n["utc" + i(s)], c = e.count; switch (e.stepmode) { case "backward": r = t.l2r(+l.offset(o, -c)); break; case "todate": var u = l.offset(o, -c); r = t.l2r(+l.ceil(u)); } var f = a[1]; return [r, f]; })(t, e); (a[r + ".range[0]"] = o[0]), (a[r + ".range[1]"] = o[1]); } return a; }; }, { "../../lib": 515, "d3-time": 122 }, ], 438: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "component", name: "rangeselector", schema: { subplots: { xaxis: { rangeselector: t("./attributes") } }, }, layoutAttributes: t("./attributes"), handleDefaults: t("./defaults"), draw: t("./draw"), }; }, { "./attributes": 433, "./defaults": 435, "./draw": 436 }, ], 439: [ function (t, e, r) { "use strict"; var n = t("../color/attributes"); e.exports = { bgcolor: { valType: "color", dflt: n.background, editType: "plot", }, bordercolor: { valType: "color", dflt: n.defaultLine, editType: "plot", }, borderwidth: { valType: "integer", dflt: 0, min: 0, editType: "plot", }, autorange: { valType: "boolean", dflt: !0, editType: "calc", impliedEdits: { "range[0]": void 0, "range[1]": void 0 }, }, range: { valType: "info_array", items: [ { valType: "any", editType: "calc", impliedEdits: { "^autorange": !1 }, }, { valType: "any", editType: "calc", impliedEdits: { "^autorange": !1 }, }, ], editType: "calc", impliedEdits: { autorange: !1 }, }, thickness: { valType: "number", dflt: 0.15, min: 0, max: 1, editType: "plot", }, visible: { valType: "boolean", dflt: !0, editType: "calc" }, editType: "calc", }; }, { "../color/attributes": 366 }, ], 440: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axis_ids").list, i = t("../../plots/cartesian/autorange").getAutoRange, a = t("./constants"); e.exports = function (t) { for (var e = n(t, "x", !0), r = 0; r < e.length; r++) { var o = e[r], s = o[a.name]; s && s.visible && s.autorange && ((s._input.autorange = !0), (s._input.range = s.range = i(t, o))); } }; }, { "../../plots/cartesian/autorange": 565, "../../plots/cartesian/axis_ids": 570, "./constants": 441, }, ], 441: [ function (t, e, r) { "use strict"; e.exports = { name: "rangeslider", containerClassName: "rangeslider-container", bgClassName: "rangeslider-bg", rangePlotClassName: "rangeslider-rangeplot", maskMinClassName: "rangeslider-mask-min", maskMaxClassName: "rangeslider-mask-max", slideBoxClassName: "rangeslider-slidebox", grabberMinClassName: "rangeslider-grabber-min", grabAreaMinClassName: "rangeslider-grabarea-min", handleMinClassName: "rangeslider-handle-min", grabberMaxClassName: "rangeslider-grabber-max", grabAreaMaxClassName: "rangeslider-grabarea-max", handleMaxClassName: "rangeslider-handle-max", maskMinOppAxisClassName: "rangeslider-mask-min-opp-axis", maskMaxOppAxisClassName: "rangeslider-mask-max-opp-axis", maskColor: "rgba(0,0,0,0.4)", maskOppAxisColor: "rgba(0,0,0,0.2)", slideBoxFill: "transparent", slideBoxCursor: "ew-resize", grabAreaFill: "transparent", grabAreaCursor: "col-resize", grabAreaWidth: 10, handleWidth: 4, handleRadius: 1, handleStrokeWidth: 1, extraPad: 15, }; }, {}, ], 442: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plot_api/plot_template"), a = t("../../plots/cartesian/axis_ids"), o = t("./attributes"), s = t("./oppaxis_attributes"); e.exports = function (t, e, r) { var l = t[r], c = e[r]; if (l.rangeslider || e._requestRangeslider[c._id]) { n.isPlainObject(l.rangeslider) || (l.rangeslider = {}); var u, f, h = l.rangeslider, p = i.newContainer(c, "rangeslider"); if (_("visible")) { _("bgcolor", e.plot_bgcolor), _("bordercolor"), _("borderwidth"), _("thickness"), _("autorange", !c.isValidRange(h.range)), _("range"); var d = e._subplots; if (d) for ( var m = d.cartesian .filter(function (t) { return ( t.substr(0, t.indexOf("y")) === a.name2id(r) ); }) .map(function (t) { return t.substr(t.indexOf("y"), t.length); }), g = n.simpleMap(m, a.id2name), v = 0; v < g.length; v++ ) { var y = g[v]; (u = h[y] || {}), (f = i.newContainer(p, y, "yaxis")); var x, b = e[y]; u.range && b.isValidRange(u.range) && (x = "fixed"), "match" !== w("rangemode", x) && w("range", b.range.slice()); } p._input = h; } } function _(t, e) { return n.coerce(h, p, o, t, e); } function w(t, e) { return n.coerce(u, f, s, t, e); } }; }, { "../../lib": 515, "../../plot_api/plot_template": 555, "../../plots/cartesian/axis_ids": 570, "./attributes": 439, "./oppaxis_attributes": 446, }, ], 443: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../registry"), a = t("../../plots/plots"), o = t("../../lib"), s = o.strTranslate, l = t("../drawing"), c = t("../color"), u = t("../titles"), f = t("../../plots/cartesian"), h = t("../../plots/cartesian/axis_ids"), p = t("../dragelement"), d = t("../../lib/setcursor"), m = t("./constants"); function g(t, e, r, n) { var i = o.ensureSingle( t, "rect", m.bgClassName, function (t) { t.attr({ x: 0, y: 0, "shape-rendering": "crispEdges", }); }, ), a = n.borderwidth % 2 == 0 ? n.borderwidth : n.borderwidth - 1, u = -n._offsetShift, f = l.crispRound(e, n.borderwidth); i.attr({ width: n._width + a, height: n._height + a, transform: s(u, u), "stroke-width": f, }) .call(c.stroke, n.bordercolor) .call(c.fill, n.bgcolor); } function v(t, e, r, n) { var i = e._fullLayout; o.ensureSingleById( i._topdefs, "clipPath", n._clipId, function (t) { t.append("rect").attr({ x: 0, y: 0 }); }, ) .select("rect") .attr({ width: n._width, height: n._height }); } function y(t, e, r, i) { var s, c = e.calcdata, u = t .selectAll("g." + m.rangePlotClassName) .data(r._subplotsWith, o.identity); u .enter() .append("g") .attr("class", function (t) { return m.rangePlotClassName + " " + t; }) .call(l.setClipUrl, i._clipId, e), u.order(), u.exit().remove(), u.each(function (t, o) { var l = n.select(this), u = 0 === o, p = h.getFromId(e, t, "y"), d = p._name, m = i[d], g = { data: [], layout: { xaxis: { type: r.type, domain: [0, 1], range: i.range.slice(), calendar: r.calendar, }, width: i._width, height: i._height, margin: { t: 0, b: 0, l: 0, r: 0 }, }, _context: e._context, }; r.rangebreaks && (g.layout.xaxis.rangebreaks = r.rangebreaks), (g.layout[d] = { type: p.type, domain: [0, 1], range: "match" !== m.rangemode ? m.range.slice() : p.range.slice(), calendar: p.calendar, }), p.rangebreaks && (g.layout[d].rangebreaks = p.rangebreaks), a.supplyDefaults(g); var v = g._fullLayout.xaxis, y = g._fullLayout[d]; v.clearCalc(), v.setScale(), y.clearCalc(), y.setScale(); var x = { id: t, plotgroup: l, xaxis: v, yaxis: y, isRangePlot: !0, }; u ? (s = x) : ((x.mainplot = "xy"), (x.mainplotinfo = s)), f.rangePlot( e, x, (function (t, e) { for (var r = [], n = 0; n < t.length; n++) { var i = t[n], a = i[0].trace; a.xaxis + a.yaxis === e && r.push(i); } return r; })(c, t), ); }); } function x(t, e, r, n, i) { (o .ensureSingle( t, "rect", m.maskMinClassName, function (t) { t.attr({ x: 0, y: 0, "shape-rendering": "crispEdges", }); }, ) .attr("height", n._height) .call(c.fill, m.maskColor), o .ensureSingle( t, "rect", m.maskMaxClassName, function (t) { t.attr({ y: 0, "shape-rendering": "crispEdges" }); }, ) .attr("height", n._height) .call(c.fill, m.maskColor), "match" !== i.rangemode) && (o .ensureSingle( t, "rect", m.maskMinOppAxisClassName, function (t) { t.attr({ y: 0, "shape-rendering": "crispEdges" }); }, ) .attr("width", n._width) .call(c.fill, m.maskOppAxisColor), o .ensureSingle( t, "rect", m.maskMaxOppAxisClassName, function (t) { t.attr({ y: 0, "shape-rendering": "crispEdges" }); }, ) .attr("width", n._width) .style("border-top", m.maskOppBorder) .call(c.fill, m.maskOppAxisColor)); } function b(t, e, r, n) { e._context.staticPlot || o .ensureSingle( t, "rect", m.slideBoxClassName, function (t) { t.attr({ y: 0, cursor: m.slideBoxCursor, "shape-rendering": "crispEdges", }); }, ) .attr({ height: n._height, fill: m.slideBoxFill }); } function _(t, e, r, n) { var i = o.ensureSingle(t, "g", m.grabberMinClassName), a = o.ensureSingle(t, "g", m.grabberMaxClassName), s = { x: 0, width: m.handleWidth, rx: m.handleRadius, fill: c.background, stroke: c.defaultLine, "stroke-width": m.handleStrokeWidth, "shape-rendering": "crispEdges", }, l = { y: Math.round(n._height / 4), height: Math.round(n._height / 2), }; o .ensureSingle( i, "rect", m.handleMinClassName, function (t) { t.attr(s); }, ) .attr(l), o .ensureSingle( a, "rect", m.handleMaxClassName, function (t) { t.attr(s); }, ) .attr(l); var u = { width: m.grabAreaWidth, x: 0, y: 0, fill: m.grabAreaFill, cursor: e._context.staticPlot ? void 0 : m.grabAreaCursor, }; o .ensureSingle( i, "rect", m.grabAreaMinClassName, function (t) { t.attr(u); }, ) .attr("height", n._height), o .ensureSingle( a, "rect", m.grabAreaMaxClassName, function (t) { t.attr(u); }, ) .attr("height", n._height); } e.exports = function (t) { for ( var e = t._fullLayout, r = e._rangeSliderData, a = 0; a < r.length; a++ ) { var l = r[a][m.name]; l._clipId = l._id + "-" + e._uid; } var c = e._infolayer .selectAll("g." + m.containerClassName) .data(r, function (t) { return t._name; }); c .exit() .each(function (t) { var r = t[m.name]; e._topdefs.select("#" + r._clipId).remove(); }) .remove(), 0 !== r.length && (c .enter() .append("g") .classed(m.containerClassName, !0) .attr("pointer-events", "all"), c.each(function (r) { var a = n.select(this), l = r[m.name], c = e[h.id2name(r.anchor)], f = l[h.id2name(r.anchor)]; if (l.range) { var w, T = o.simpleMap(l.range, r.r2l), k = o.simpleMap(r.range, r.r2l); (w = k[0] < k[1] ? [Math.min(T[0], k[0]), Math.max(T[1], k[1])] : [Math.max(T[0], k[0]), Math.min(T[1], k[1])]), (l.range = l._input.range = o.simpleMap(w, r.l2r)); } r.cleanRange("rangeslider.range"); var A = e._size, M = r.domain; l._width = A.w * (M[1] - M[0]); var S = Math.round(A.l + A.w * M[0]), E = Math.round( A.t + A.h * (1 - r._counterDomainMin) + ("bottom" === r.side ? r._depth : 0) + l._offsetShift + m.extraPad, ); a.attr("transform", s(S, E)), (l._rl = o.simpleMap(l.range, r.r2l)); var L = l._rl[0], C = l._rl[1], P = C - L; if ( ((l.p2d = function (t) { return (t / l._width) * P + L; }), (l.d2p = function (t) { return ((t - L) / P) * l._width; }), r.rangebreaks) ) { var I = r.locateBreaks(L, C); if (I.length) { var O, z, D = 0; for (O = 0; O < I.length; O++) D += (z = I[O]).max - z.min; var R = l._width / (C - L - D), F = [-R * L]; for (O = 0; O < I.length; O++) (z = I[O]), F.push(F[F.length - 1] - R * (z.max - z.min)); for ( l.d2p = function (t) { for (var e = F[0], r = 0; r < I.length; r++) { var n = I[r]; if (t >= n.max) e = F[r + 1]; else if (t < n.min) break; } return e + R * t; }, O = 0; O < I.length; O++ ) ((z = I[O]).pmin = l.d2p(z.min)), (z.pmax = l.d2p(z.max)); l.p2d = function (t) { for (var e = F[0], r = 0; r < I.length; r++) { var n = I[r]; if (t >= n.pmax) e = F[r + 1]; else if (t < n.pmin) break; } return (t - e) / R; }; } } if ("match" !== f.rangemode) { var B = c.r2l(f.range[0]), N = c.r2l(f.range[1]) - B; l.d2pOppAxis = function (t) { return ((t - B) / N) * l._height; }; } a .call(g, t, r, l) .call(v, t, r, l) .call(y, t, r, l) .call(x, t, r, l, f) .call(b, t, r, l) .call(_, t, r, l), (function (t, e, r, a) { if (e._context.staticPlot) return; var s = t .select("rect." + m.slideBoxClassName) .node(), l = t .select("rect." + m.grabAreaMinClassName) .node(), c = t .select("rect." + m.grabAreaMaxClassName) .node(); function u() { var u = n.event, f = u.target, h = u.clientX || u.touches[0].clientX, m = h - t.node().getBoundingClientRect().left, g = a.d2p(r._rl[0]), v = a.d2p(r._rl[1]), y = p.coverSlip(); function x(t) { var u, p, x, b = +(t.clientX || t.touches[0].clientX) - h; switch (f) { case s: (x = "ew-resize"), (u = g + b), (p = v + b); break; case l: (x = "col-resize"), (u = g + b), (p = v); break; case c: (x = "col-resize"), (u = g), (p = v + b); break; default: (x = "ew-resize"), (u = m), (p = m + b); } if (p < u) { var _ = p; (p = u), (u = _); } (a._pixelMin = u), (a._pixelMax = p), d(n.select(y), x), (function (t, e, r, n) { function a(t) { return r.l2r( o.constrain(t, n._rl[0], n._rl[1]), ); } var s = a(n.p2d(n._pixelMin)), l = a(n.p2d(n._pixelMax)); window.requestAnimationFrame(function () { i.call( "_guiRelayout", e, r._name + ".range", [s, l], ); }); })(0, e, r, a); } function b() { y.removeEventListener("mousemove", x), y.removeEventListener("mouseup", b), this.removeEventListener("touchmove", x), this.removeEventListener("touchend", b), o.removeElement(y); } this.addEventListener("touchmove", x), this.addEventListener("touchend", b), y.addEventListener("mousemove", x), y.addEventListener("mouseup", b); } t.on("mousedown", u), t.on("touchstart", u); })(a, t, r, l), (function (t, e, r, n, i, a) { var l = m.handleWidth / 2; function c(t) { return o.constrain(t, 0, n._width); } function u(t) { return o.constrain(t, 0, n._height); } function f(t) { return o.constrain(t, -l, n._width + l); } var h = c(n.d2p(r._rl[0])), p = c(n.d2p(r._rl[1])); if ( (t .select("rect." + m.slideBoxClassName) .attr("x", h) .attr("width", p - h), t .select("rect." + m.maskMinClassName) .attr("width", h), t .select("rect." + m.maskMaxClassName) .attr("x", p) .attr("width", n._width - p), "match" !== a.rangemode) ) { var d = n._height - u(n.d2pOppAxis(i._rl[1])), g = n._height - u(n.d2pOppAxis(i._rl[0])); t .select("rect." + m.maskMinOppAxisClassName) .attr("x", h) .attr("height", d) .attr("width", p - h), t .select("rect." + m.maskMaxOppAxisClassName) .attr("x", h) .attr("y", g) .attr("height", n._height - g) .attr("width", p - h), t .select("rect." + m.slideBoxClassName) .attr("y", d) .attr("height", g - d); } var v = Math.round(f(h - l)) - 0.5, y = Math.round(f(p - l)) + 0.5; t .select("g." + m.grabberMinClassName) .attr("transform", s(v, 0.5)), t .select("g." + m.grabberMaxClassName) .attr("transform", s(y, 0.5)); })(a, 0, r, l, c, f), "bottom" === r.side && u.draw(t, r._id + "title", { propContainer: r, propName: r._name + ".title", placeholder: e._dfltTitle.x, attributes: { x: r._offset + r._length / 2, y: E + l._height + l._offsetShift + 10 + 1.5 * r.title.font.size, "text-anchor": "middle", }, }); })); }; }, { "../../lib": 515, "../../lib/setcursor": 536, "../../plots/cartesian": 578, "../../plots/cartesian/axis_ids": 570, "../../plots/plots": 628, "../../registry": 647, "../color": 367, "../dragelement": 386, "../drawing": 389, "../titles": 476, "./constants": 441, "@plotly/d3": 58, }, ], 444: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axis_ids"), i = t("../../lib/svg_text_utils"), a = t("./constants"), o = t("../../constants/alignment").LINE_SPACING, s = a.name; function l(t) { var e = t && t[s]; return e && e.visible; } (r.isVisible = l), (r.makeData = function (t) { var e = n.list({ _fullLayout: t }, "x", !0), r = t.margin, i = []; if (!t._has("gl2d")) for (var a = 0; a < e.length; a++) { var o = e[a]; if (l(o)) { i.push(o); var c = o[s]; (c._id = s + o._id), (c._height = (t.height - r.b - r.t) * c.thickness), (c._offsetShift = Math.floor(c.borderwidth / 2)); } } t._rangeSliderData = i; }), (r.autoMarginOpts = function (t, e) { var r = t._fullLayout, n = e[s], l = e._id.charAt(0), c = 0, u = 0; "bottom" === e.side && ((c = e._depth), e.title.text !== r._dfltTitle[l] && ((u = 1.5 * e.title.font.size + 10 + n._offsetShift), (u += (e.title.text.match(i.BR_TAG_ALL) || []).length * e.title.font.size * o))); return { x: 0, y: e._counterDomainMin, l: 0, r: 0, t: 0, b: n._height + c + Math.max(r.margin.b, u), pad: a.extraPad + 2 * n._offsetShift, }; }); }, { "../../constants/alignment": 483, "../../lib/svg_text_utils": 541, "../../plots/cartesian/axis_ids": 570, "./constants": 441, }, ], 445: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("./oppaxis_attributes"), o = t("./helpers"); e.exports = { moduleType: "component", name: "rangeslider", schema: { subplots: { xaxis: { rangeslider: n.extendFlat({}, i, { yaxis: a }), }, }, }, layoutAttributes: t("./attributes"), handleDefaults: t("./defaults"), calcAutorange: t("./calc_autorange"), draw: t("./draw"), isVisible: o.isVisible, makeData: o.makeData, autoMarginOpts: o.autoMarginOpts, }; }, { "../../lib": 515, "./attributes": 439, "./calc_autorange": 440, "./defaults": 442, "./draw": 443, "./helpers": 444, "./oppaxis_attributes": 446, }, ], 446: [ function (t, e, r) { "use strict"; e.exports = { _isSubplotObj: !0, rangemode: { valType: "enumerated", values: ["auto", "fixed", "match"], dflt: "match", editType: "calc", }, range: { valType: "info_array", items: [ { valType: "any", editType: "plot" }, { valType: "any", editType: "plot" }, ], editType: "plot", }, editType: "calc", }; }, {}, ], 447: [ function (t, e, r) { "use strict"; var n = t("../annotations/attributes"), i = t("../../traces/scatter/attributes").line, a = t("../drawing/attributes").dash, o = t("../../lib/extend").extendFlat, s = t("../../plot_api/edit_types").overrideAll, l = t("../../plot_api/plot_template").templatedArray; t("../../constants/axis_placeable_objects"); e.exports = s( l("selection", { type: { valType: "enumerated", values: ["rect", "path"] }, xref: o({}, n.xref, {}), yref: o({}, n.yref, {}), x0: { valType: "any" }, x1: { valType: "any" }, y0: { valType: "any" }, y1: { valType: "any" }, path: { valType: "string", editType: "arraydraw" }, opacity: { valType: "number", min: 0, max: 1, dflt: 0.7, editType: "arraydraw", }, line: { color: i.color, width: o({}, i.width, { min: 1, dflt: 1 }), dash: o({}, a, { dflt: "dot" }), }, }), "arraydraw", "from-root", ); }, { "../../constants/axis_placeable_objects": 484, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plot_api/plot_template": 555, "../../traces/scatter/attributes": 936, "../annotations/attributes": 350, "../drawing/attributes": 388, }, ], 448: [ function (t, e, r) { "use strict"; e.exports = { BENDPX: 1.5, MINSELECT: 12, SELECTDELAY: 100, SELECTID: "-select", }; }, {}, ], 449: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"), a = t("../../plots/array_container_defaults"), o = t("./attributes"), s = t("../shapes/helpers"); function l(t, e, r) { function a(r, i) { return n.coerce(t, e, o, r, i); } var l = a("path"), c = "path" !== a("type", l ? "path" : "rect"); c && delete e.path, a("opacity"), a("line.color"), a("line.width"), a("line.dash"); for (var u = ["x", "y"], f = 0; f < 2; f++) { var h, p, d, m = u[f], g = { _fullLayout: r }, v = i.coerceRef(t, e, g, m); if ( ((h = i.getFromId(g, v))._selectionIndices.push( e._index, ), (d = s.rangeToShapePosition(h)), (p = s.shapePositionToRange(h)), c) ) { var y = m + "0", x = m + "1", b = t[y], _ = t[x]; (t[y] = p(t[y], !0)), (t[x] = p(t[x], !0)), i.coercePosition(e, g, a, v, y), i.coercePosition(e, g, a, v, x); var w = e[y], T = e[x]; void 0 !== w && void 0 !== T && ((e[y] = d(w)), (e[x] = d(T)), (t[y] = b), (t[x] = _)); } } c && n.noneOrAll(t, e, ["x0", "x1", "y0", "y1"]); } e.exports = function (t, e) { a(t, e, { name: "selections", handleItemDefaults: l }); for (var r = e.selections, n = 0; n < r.length; n++) { var i = r[n]; i && void 0 === i.path && ((void 0 !== i.x0 && void 0 !== i.x1 && void 0 !== i.y0 && void 0 !== i.y1) || (e.selections[n] = null)); } }; }, { "../../lib": 515, "../../plots/array_container_defaults": 561, "../../plots/cartesian/axes": 566, "../shapes/helpers": 469, "./attributes": 447, }, ], 450: [ function (t, e, r) { "use strict"; var n = t("../shapes/draw_newshape/helpers").readPaths, i = t("../shapes/display_outlines"), a = t("../shapes/handle_outline").clearOutlineControllers, o = t("../color"), s = t("../drawing"), l = t("../../plot_api/plot_template").arrayEditor, c = t("../shapes/helpers"), u = c.getPathString; function f(t) { var e = t._fullLayout; for (var r in (a(t), e._selectionLayer.selectAll("path").remove(), e._plots)) { var n = e._plots[r].selectionLayer; n && n.selectAll("path").remove(); } for (var i = 0; i < e.selections.length; i++) p(t, i); } function h(t) { return t._context.editSelection; } function p(t, e) { t._fullLayout._paperdiv .selectAll('.selectionlayer [data-index="' + e + '"]') .remove(); var r = c.makeSelectionsOptionsAndPlotinfo(t, e), a = r.options, p = r.plotinfo; a._input && (function (r) { var c = u(t, a), g = { "data-index": e, "fill-rule": "evenodd", d: c }, v = a.opacity, y = "rgba(0,0,0,0)", x = a.line.color || o.contrast(t._fullLayout.plot_bgcolor), b = a.line.width, _ = a.line.dash; b || ((b = 5), (_ = "solid")); var w = h(t) && t._fullLayout._activeSelectionIndex === e; w && ((y = t._fullLayout.activeselection.fillcolor), (v = t._fullLayout.activeselection.opacity)); for (var T = [], k = 1; k >= 0; k--) { var A = r .append("path") .attr(g) .style("opacity", k ? 0.1 : v) .call(o.stroke, x) .call(o.fill, y) .call(s.dashLine, k ? "solid" : _, k ? 4 + b : b); if ((d(A, t, a), w)) { var M = l(t.layout, "selections", a); A.style({ cursor: "move" }); var S = { element: A.node(), plotinfo: p, gd: t, editHelpers: M, isActiveSelection: !0, }, E = n(c, t); i(E, A, S); } else A.style("pointer-events", k ? "all" : "none"); T[k] = A; } var L = T[0]; T[1].node().addEventListener("click", function () { return (function (t, e) { if (!h(t)) return; var r = +e.node().getAttribute("data-index"); if (r >= 0) { if (r === t._fullLayout._activeSelectionIndex) return void m(t); (t._fullLayout._activeSelectionIndex = r), (t._fullLayout._deactivateSelection = m), f(t); } })(t, L); }); })(t._fullLayout._selectionLayer); } function d(t, e, r) { var n = r.xref + r.yref; s.setClipUrl(t, "clip" + e._fullLayout._uid + n, e); } function m(t) { h(t) && t._fullLayout._activeSelectionIndex >= 0 && (a(t), delete t._fullLayout._activeSelectionIndex, f(t)); } e.exports = { draw: f, drawOne: p, activateLastSelection: function (t) { if (!h(t)) return; var e = t._fullLayout.selections.length - 1; (t._fullLayout._activeSelectionIndex = e), (t._fullLayout._deactivateSelection = m), f(t); }, }; }, { "../../plot_api/plot_template": 555, "../color": 367, "../drawing": 389, "../shapes/display_outlines": 461, "../shapes/draw_newshape/helpers": 466, "../shapes/handle_outline": 468, "../shapes/helpers": 469, }, ], 451: [ function (t, e, r) { "use strict"; var n = t("../../drawing/attributes").dash, i = t("../../../lib/extend").extendFlat; e.exports = { newselection: { mode: { valType: "enumerated", values: ["immediate", "gradual"], dflt: "immediate", editType: "none", }, line: { color: { valType: "color", editType: "none" }, width: { valType: "number", min: 1, dflt: 1, editType: "none", }, dash: i({}, n, { dflt: "dot", editType: "none" }), editType: "none", }, editType: "none", }, activeselection: { fillcolor: { valType: "color", dflt: "rgba(0,0,0,0)", editType: "none", }, opacity: { valType: "number", min: 0, max: 1, dflt: 0.5, editType: "none", }, editType: "none", }, }; }, { "../../../lib/extend": 505, "../../drawing/attributes": 388 }, ], 452: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { r("newselection.mode"), r("newselection.line.width") && (r("newselection.line.color"), r("newselection.line.dash")), r("activeselection.fillcolor"), r("activeselection.opacity"); }; }, {}, ], 453: [ function (t, e, r) { "use strict"; var n = t("../../dragelement/helpers").selectMode, i = t("../../shapes/handle_outline").clearOutline, a = t("../../shapes/draw_newshape/helpers"), o = a.readPaths, s = a.writePaths, l = a.fixDatesForPaths; e.exports = function (t, e) { if (t.length) { var r = t[0][0]; if (r) { var a = r.getAttribute("d"), c = e.gd, u = c._fullLayout.newselection, f = e.plotinfo, h = f.xaxis, p = f.yaxis, d = e.isActiveSelection, m = e.dragmode, g = (c.layout || {}).selections || []; if (!n(m) && void 0 !== d) { var v = c._fullLayout._activeSelectionIndex; if (v < g.length) switch (c._fullLayout.selections[v].type) { case "rect": m = "select"; break; case "path": m = "lasso"; } } var y, x = o(a, c, f, d), b = { xref: h._id, yref: p._id, opacity: u.opacity, line: { color: u.line.color, width: u.line.width, dash: u.line.dash, }, }; 1 === x.length && (y = x[0]), y && 5 === y.length && "select" === m ? ((b.type = "rect"), (b.x0 = y[0][1]), (b.y0 = y[0][2]), (b.x1 = y[2][1]), (b.y1 = y[2][2])) : ((b.type = "path"), h && p && l(x, h, p), (b.path = s(x)), (y = null)), i(c); for ( var _ = e.editHelpers, w = (_ || {}).modifyItem, T = [], k = 0; k < g.length; k++ ) { var A = c._fullLayout.selections[k]; if (A) { if ( ((T[k] = A._input), void 0 !== d && k === c._fullLayout._activeSelectionIndex) ) { var M = b; switch (A.type) { case "rect": w("x0", M.x0), w("x1", M.x1), w("y0", M.y0), w("y1", M.y1); break; case "path": w("path", M.path); } } } else T[k] = A; } return void 0 === d ? (T.push(b), T) : _ ? _.getUpdateObj() : {}; } } }; }, { "../../dragelement/helpers": 385, "../../shapes/draw_newshape/helpers": 466, "../../shapes/handle_outline": 468, }, ], 454: [ function (t, e, r) { "use strict"; var n = t("../../lib").strTranslate; function i(t, e) { switch (t.type) { case "log": return t.p2d(e); case "date": return t.p2r(e, 0, t.calendar); default: return t.p2r(e); } } e.exports = { p2r: i, r2p: function (t, e) { switch (t.type) { case "log": return t.d2p(e); case "date": return t.r2p(e, 0, t.calendar); default: return t.r2p(e); } }, axValue: function (t) { var e = "y" === t._id.charAt(0) ? 1 : 0; return function (r) { return i(t, r[e]); }; }, getTransform: function (t) { return n(t.xaxis._offset, t.yaxis._offset); }, }; }, { "../../lib": 515 }, ], 455: [ function (t, e, r) { "use strict"; var n = t("./draw"), i = t("./select"); e.exports = { moduleType: "component", name: "selections", layoutAttributes: t("./attributes"), supplyLayoutDefaults: t("./defaults"), supplyDrawNewSelectionDefaults: t( "./draw_newselection/defaults", ), includeBasePlot: t( "../../plots/cartesian/include_components", )("selections"), draw: n.draw, drawOne: n.drawOne, reselect: i.reselect, prepSelect: i.prepSelect, clearOutline: i.clearOutline, clearSelectionsCache: i.clearSelectionsCache, selectOnClick: i.selectOnClick, }; }, { "../../plots/cartesian/include_components": 577, "./attributes": 447, "./defaults": 449, "./draw": 450, "./draw_newselection/defaults": 452, "./select": 456, }, ], 456: [ function (t, e, r) { "use strict"; var n = t("polybooljs"), i = t("point-in-polygon/nested"), a = t("../../registry"), o = t("../drawing").dashStyle, s = t("../color"), l = t("../fx"), c = t("../fx/helpers").makeEventData, u = t("../dragelement/helpers"), f = u.freeMode, h = u.rectMode, p = u.drawMode, d = u.openMode, m = u.selectMode, g = t("../shapes/helpers"), v = t("../shapes/constants"), y = t("../shapes/display_outlines"), x = t("../shapes/handle_outline").clearOutline, b = t("../shapes/draw_newshape/helpers"), _ = b.handleEllipse, w = b.readPaths, T = t("../shapes/draw_newshape/newshapes"), k = t("./draw_newselection/newselections"), A = t("./draw").activateLastSelection, M = t("../../lib"), S = M.sorterAsc, E = t("../../lib/polygon"), L = t("../../lib/throttle"), C = t("../../plots/cartesian/axis_ids").getFromId, P = t("../../lib/clear_gl_canvases"), I = t("../../plot_api/subroutines").redrawReglTraces, O = t("./constants"), z = O.MINSELECT, D = E.filter, R = E.tester, F = t("./helpers"), B = F.p2r, N = F.axValue, j = F.getTransform; function U(t) { return void 0 !== t.subplot; } function V(t, e, r, n, i, a, o) { var s, l, c, u, f, h, p, m, g, v = e._hoverdata, x = e._fullLayout.clickmode.indexOf("event") > -1, b = []; if ( (function (t) { return t && Array.isArray(t) && !0 !== t[0].hoverOnBox; })(v) ) { Y(t, e, a); var _ = (function (t, e) { var r, n, i = t[0], a = -1, o = []; for (n = 0; n < e.length; n++) if ( ((r = e[n]), i.fullData._expandedIndex === r.cd[0].trace._expandedIndex) ) { if (!0 === i.hoverOnBox) break; void 0 !== i.pointNumber ? (a = i.pointNumber) : void 0 !== i.binNumber && ((a = i.binNumber), (o = i.pointNumbers)); break; } return { pointNumber: a, pointNumbers: o, searchInfo: r, }; })(v, (s = X(e, r, n, i))); if ( _.pointNumbers.length > 0 ? (function (t, e) { var r, n, i, a = []; for (i = 0; i < t.length; i++) (r = t[i]).cd[0].trace.selectedpoints && r.cd[0].trace.selectedpoints.length > 0 && a.push(r); if ( 1 === a.length && a[0] === e.searchInfo && (n = e.searchInfo.cd[0].trace).selectedpoints .length === e.pointNumbers.length ) { for (i = 0; i < e.pointNumbers.length; i++) if ( n.selectedpoints.indexOf( e.pointNumbers[i], ) < 0 ) return !1; return !0; } return !1; })(s, _) : (function (t) { var e, r, n, i = 0; for (n = 0; n < t.length; n++) if ( ((e = t[n]), (r = e.cd[0].trace).selectedpoints) ) { if (r.selectedpoints.length > 1) return !1; if ((i += r.selectedpoints.length) > 1) return !1; } return 1 === i; })(s) && (h = K(_)) ) { for (o && o.remove(), g = 0; g < s.length; g++) (l = s[g])._module.selectPoints(l, !1); Q(e, s), W(a), x && ht(e); } else { for ( p = t.shiftKey && (void 0 !== h ? h : K(_)), c = (function (t, e, r) { return { pointNumber: t, searchInfo: e, subtract: !!r, }; })(_.pointNumber, _.searchInfo, p), u = G(a.selectionDefs.concat([c])), g = 0; g < s.length; g++ ) if ( ((f = tt(s[g]._module.selectPoints(s[g], u), s[g])), b.length) ) for (var w = 0; w < f.length; w++) b.push(f[w]); else b = f; if ( (Q(e, s, (m = { points: b })), c && a && a.selectionDefs.push(c), o) ) { var T = a.mergedPolygons, k = d(a.dragmode); y(et(T, k), o, a); } x && ft(e, m); } } } function H(t) { return "pointNumber" in t && "searchInfo" in t; } function q(t) { return { xmin: 0, xmax: 0, ymin: 0, ymax: 0, pts: [], contains: function (e, r, n, i) { var a = t.searchInfo.cd[0].trace._expandedIndex; return ( i.cd[0].trace._expandedIndex === a && n === t.pointNumber ); }, isRect: !1, degenerate: !1, subtract: !!t.subtract, }; } function G(t) { if (t.length) { for ( var e = [], r = H(t[0]) ? 0 : t[0][0][0], n = r, i = H(t[0]) ? 0 : t[0][0][1], a = i, o = 0; o < t.length; o++ ) if (H(t[o])) e.push(q(t[o])); else { var s = R(t[o]); (s.subtract = !!t[o].subtract), e.push(s), (r = Math.min(r, s.xmin)), (n = Math.max(n, s.xmax)), (i = Math.min(i, s.ymin)), (a = Math.max(a, s.ymax)); } return { xmin: r, xmax: n, ymin: i, ymax: a, pts: [], contains: function (t, r, n, i) { for (var a = !1, o = 0; o < e.length; o++) e[o].contains(t, r, n, i) && (a = !e[o].subtract); return a; }, isRect: !1, degenerate: !1, }; } } function Y(t, e, r) { var n = e._fullLayout, i = r.plotinfo, a = r.dragmode, o = n._lastSelectedSubplot && n._lastSelectedSubplot === i.id, s = (t.shiftKey || t.altKey) && !(p(a) && d(a)); o && s && i.selection && i.selection.selectionDefs && !r.selectionDefs ? ((r.selectionDefs = i.selection.selectionDefs), (r.mergedPolygons = i.selection.mergedPolygons)) : (s && i.selection) || W(r), o || (x(e), (n._lastSelectedSubplot = i.id)); } function W(t, e) { var r = t.dragmode, n = t.plotinfo, i = t.gd; (function (t) { return t._fullLayout._activeShapeIndex >= 0; })(i) && i._fullLayout._deactivateShape(i), (function (t) { return t._fullLayout._activeSelectionIndex >= 0; })(i) && i._fullLayout._deactivateSelection(i); var o = i._fullLayout._zoomlayer, s = p(r), l = m(r); if (s || l) { var c, u, f = o.selectAll(".select-outline-" + n.id); if (f && i._fullLayout._outlining) s && (c = T(f, t)), c && a.call("_guiRelayout", i, { shapes: c }), l && !U(t) && (u = k(f, t)), u && ((i._fullLayout._noEmitSelectedAtStart = !0), a .call("_guiRelayout", i, { selections: u }) .then(function () { e && A(i); })), (i._fullLayout._outlining = !1); } (n.selection = {}), (n.selection.selectionDefs = t.selectionDefs = []), (n.selection.mergedPolygons = t.mergedPolygons = []); } function Z(t) { return t._id; } function X(t, e, r, n) { if (!t.calcdata) return []; var i, a, o, s = [], l = e.map(Z), c = r.map(Z); for (o = 0; o < t.calcdata.length; o++) if ( !0 === (a = (i = t.calcdata[o])[0].trace).visible && a._module && a._module.selectPoints ) if ( !U({ subplot: n }) || (a.subplot !== n && a.geo !== n) ) if ("splom" === a.type) { if (a._xaxes[l[0]] && a._yaxes[c[0]]) { var u = J(a._module, i, e[0], r[0]); (u.scene = t._fullLayout._splomScenes[a.uid]), s.push(u); } } else if ("sankey" === a.type) { var f = J(a._module, i, e[0], r[0]); s.push(f); } else { if (-1 === l.indexOf(a.xaxis)) continue; if (-1 === c.indexOf(a.yaxis)) continue; s.push( J(a._module, i, C(t, a.xaxis), C(t, a.yaxis)), ); } else s.push(J(a._module, i, e[0], r[0])); return s; } function J(t, e, r, n) { return { _module: t, cd: e, xaxis: r, yaxis: n }; } function K(t) { var e = t.searchInfo.cd[0].trace, r = t.pointNumber, n = t.pointNumbers, i = n.length > 0 ? n[0] : r; return ( !!e.selectedpoints && e.selectedpoints.indexOf(i) > -1 ); } function Q(t, e, r) { var n, i; for (n = 0; n < e.length; n++) { var o = e[n].cd[0].trace._fullInput, s = t._fullLayout._tracePreGUI[o.uid] || {}; void 0 === s.selectedpoints && (s.selectedpoints = o._input.selectedpoints || null); } if (r) { var l = r.points || []; for (n = 0; n < e.length; n++) ((i = e[n].cd[0].trace)._input.selectedpoints = i._fullInput.selectedpoints = []), i._fullInput !== i && (i.selectedpoints = []); for (var c = 0; c < l.length; c++) { var u = l[c], f = u.data, h = u.fullData, p = u.pointIndex, d = u.pointIndices; d ? ([].push.apply(f.selectedpoints, d), i._fullInput !== i && [].push.apply(h.selectedpoints, d)) : (f.selectedpoints.push(p), i._fullInput !== i && h.selectedpoints.push(p)); } } else for (n = 0; n < e.length; n++) delete (i = e[n].cd[0].trace).selectedpoints, delete i._input.selectedpoints, i._fullInput !== i && delete i._fullInput.selectedpoints; !(function (t, e) { for (var r = !1, n = 0; n < e.length; n++) { var i = e[n], o = i.cd; a.traceIs(o[0].trace, "regl") && (r = !0); var s = i._module, l = s.styleOnSelect || s.style; l && (l(t, o, o[0].node3), o[0].nodeRangePlot3 && l(t, o, o[0].nodeRangePlot3)); } r && (P(t), I(t)); })(t, e); } function $(t, e, r) { for ( var i = (r ? n.difference : n.union)( { regions: t }, { regions: [e] }, ).regions.reverse(), a = 0; a < i.length; a++ ) { var o = i[a]; o.subtract = st(o, i.slice(0, a)); } return i; } function tt(t, e) { if (Array.isArray(t)) for ( var r = e.cd, n = e.cd[0].trace, i = 0; i < t.length; i++ ) t[i] = c(t[i], n, r); return t; } function et(t, e) { for (var r = [], n = 0; n < t.length; n++) { r[n] = []; for (var i = 0; i < t[n].length; i++) { (r[n][i] = []), (r[n][i][0] = i ? "L" : "M"); for (var a = 0; a < t[n][i].length; a++) r[n][i].push(t[n][i][a]); } e || r[n].push(["Z", r[n][0][1], r[n][0][2]]); } return r; } function rt(t, e) { for (var r, n, i = [], a = [], o = 0; o < e.length; o++) { var s = e[o]; (n = s._module.selectPoints(s, t)), a.push(n), (r = tt(n, s)), (i = i.concat(r)); } return i; } function nt(t, e, r, n, i) { var a, o, s, l = !!n; i && ((a = i.plotinfo), (o = i.xaxes[0]._id), (s = i.yaxes[0]._id)); var c = [], u = [], f = ot(t), h = t._fullLayout; if (a) { var d = h._zoomlayer, g = h.dragmode, v = p(g), y = m(g); if (v || y) { var x = C(t, o, "x"), b = C(t, s, "y"); if (x && b) { var _ = d.selectAll(".select-outline-" + a.id); if (_ && t._fullLayout._outlining && _.length) { for ( var T = _[0][0].getAttribute("d"), k = w(T, t, a), A = [], M = 0; M < k.length; M++ ) { for ( var S = k[M], E = [], L = 0; L < S.length; L++ ) E.push([lt(x, S[L][1]), lt(b, S[L][2])]); (E.xref = o), (E.yref = s), (E.subtract = st(E, A)), A.push(E); } f = f.concat(A); } } } } var P = o && s ? [o + s] : h._subplots.cartesian; !(function (t) { var e = t.calcdata; if (!e) return; for (var r = 0; r < e.length; r++) { var n = e[r][0].trace, i = t._fullLayout._splomScenes; if (i) { var a = i[n.uid]; a && (a.selectBatch = []); } } })(t); for (var I = {}, O = 0; O < P.length; O++) { var z = P[O], D = z.indexOf("y"), R = z.slice(0, D), F = z.slice(D), B = o && s ? r : void 0; if ((B = at(f, R, F, B))) { var N = n; if (!l) { var j = C(t, R, "x"), U = C(t, F, "y"); N = X(t, [j], [U], z); for (var V = 0; V < N.length; V++) { var H = N[V], q = H.cd[0], G = q.trace; if ("scattergl" === H._module.name && !q.t.xpx) { var Y = G.x, W = G.y, Z = G._length; (q.t.xpx = []), (q.t.ypx = []); for (var J = 0; J < Z; J++) (q.t.xpx[J] = j.c2p(Y[J])), (q.t.ypx[J] = U.c2p(W[J])); } "splom" === H._module.name && (I[G.uid] || (I[G.uid] = !0)); } } var K = rt(B, N); (c = c.concat(K)), (u = u.concat(N)); } } var $ = { points: c }; Q(t, u, $); var tt = h.clickmode.indexOf("event") > -1 && e; if (!a && e) { var et = ot(t, !0); if (et.length) { var nt = et[0].xref, pt = et[0].yref; if (nt && pt) { var dt = ct(et); ut([C(t, nt, "x"), C(t, pt, "y")])($, dt); } } t._fullLayout._noEmitSelectedAtStart ? (t._fullLayout._noEmitSelectedAtStart = !1) : tt && ft(t, $), (h._reselect = !1); } if (!a && h._deselect) { var mt = h._deselect; (function (t, e, r) { for (var n = 0; n < r.length; n++) { var i = r[n]; if ( i.xaxis && i.xaxis._id === t && i.yaxis && i.yaxis._id === e ) return !0; } return !1; })((o = mt.xref), (s = mt.yref), u) || it(t, o, s, n), tt && ($.points.length ? ft(t, $) : ht(t)), (h._deselect = !1); } return { eventData: $, selectionTesters: r }; } function it(t, e, r, n) { n = X(t, [C(t, e, "x")], [C(t, r, "y")], e + r); for (var i = 0; i < n.length; i++) { var a = n[i]; a._module.selectPoints(a, !1); } Q(t, n); } function at(t, e, r, n) { for (var i, a = 0; a < t.length; a++) { var o = t[a]; if (e === o.xref && r === o.yref) if (i) n = G((i = $(i, o, !!o.subtract))); else (i = [o]), (n = R(o)); } return n; } function ot(t, e) { for ( var r = [], n = t._fullLayout, i = n.selections, a = i.length, o = 0; o < a; o++ ) if (!e || o === n._activeSelectionIndex) { var s = i[o]; if (s) { var l, c, u, f, h, p = s.xref, d = s.yref, m = C(t, p, "x"), y = C(t, d, "y"); if ("rect" === s.type) { h = []; var x = lt(m, s.x0), b = lt(m, s.x1), _ = lt(y, s.y0), w = lt(y, s.y1); (h = [ [x, _], [x, w], [b, w], [b, _], ]), (l = Math.min(x, b)), (c = Math.max(x, b)), (u = Math.min(_, w)), (f = Math.max(_, w)), (h.xmin = l), (h.xmax = c), (h.ymin = u), (h.ymax = f), (h.xref = p), (h.yref = d), (h.subtract = !1), (h.isRect = !0), r.push(h); } else if ("path" === s.type) for ( var T = s.path.split("Z"), k = [], A = 0; A < T.length; A++ ) { var M = T[A]; if (M) { M += "Z"; var S = g.extractPathCoords( M, v.paramIsX, "raw", ), E = g.extractPathCoords(M, v.paramIsY, "raw"); (l = 1 / 0), (c = -1 / 0), (u = 1 / 0), (f = -1 / 0), (h = []); for (var L = 0; L < S.length; L++) { var P = lt(m, S[L]), I = lt(y, E[L]); h.push([P, I]), (l = Math.min(P, l)), (c = Math.max(P, c)), (u = Math.min(I, u)), (f = Math.max(I, f)); } (h.xmin = l), (h.xmax = c), (h.ymin = u), (h.ymax = f), (h.xref = p), (h.yref = d), (h.subtract = st(h, k)), k.push(h), r.push(h); } } } } return r; } function st(t, e) { for (var r = !1, n = 0; n < e.length; n++) for (var a = e[n], o = 0; o < t.length; o++) if (i(t[o], a)) { r = !r; break; } return r; } function lt(t, e) { return ( "date" === t.type && (e = e.replace("_", " ")), "log" === t.type ? t.c2p(e) : t.r2p(e, null, t.calendar) ); } function ct(t) { for (var e = t.length, r = [], n = 0; n < e; n++) { var i = t[n]; r = (r = r.concat(i)).concat([i[0]]); } return (function (t) { (t.isRect = (5 === t.length && t[0][0] === t[4][0] && t[0][1] === t[4][1] && t[0][0] === t[1][0] && t[2][0] === t[3][0] && t[0][1] === t[3][1] && t[1][1] === t[2][1]) || (t[0][1] === t[1][1] && t[2][1] === t[3][1] && t[0][0] === t[3][0] && t[1][0] === t[2][0])), t.isRect && ((t.xmin = Math.min(t[0][0], t[2][0])), (t.xmax = Math.max(t[0][0], t[2][0])), (t.ymin = Math.min(t[0][1], t[2][1])), (t.ymax = Math.max(t[0][1], t[2][1]))); return t; })(r); } function ut(t) { return function (e, r) { for (var n, i, a = 0; a < t.length; a++) { var o = t[a], s = o._id, l = s.charAt(0); if (r.isRect) { n || (n = {}); var c = r[l + "min"], u = r[l + "max"]; void 0 !== c && void 0 !== u && (n[s] = [B(o, c), B(o, u)].sort(S)); } else i || (i = {}), (i[s] = r.map(N(o))); } n && (e.range = n), i && (e.lassoPoints = i); }; } function ft(t, e) { e && (e.selections = (t.layout || {}).selections || []), t.emit("plotly_selected", e); } function ht(t) { t.emit("plotly_deselect", null); } e.exports = { reselect: nt, prepSelect: function (t, e, r, n, i) { var c = !U(n), u = f(i), g = h(i), v = d(i), x = p(i), b = m(i), w = "drawcircle" === i, T = "drawline" === i || w, k = n.gd, A = k._fullLayout, S = b && "immediate" === A.newselection.mode && c, E = A._zoomlayer, C = n.element.getBoundingClientRect(), P = n.plotinfo, I = j(P), F = e - C.left, B = r - C.top; A._calcInverseTransform(k); var N = M.apply3DTransform(A._invTransform)(F, B); (F = N[0]), (B = N[1]); var H, q, Z, J, K, tt, at, ot = A._invScaleX, st = A._invScaleY, lt = F, pt = B, dt = "M" + F + "," + B, mt = n.xaxes[0], gt = n.yaxes[0], vt = mt._length, yt = gt._length, xt = t.altKey && !(p(i) && v); Y(t, k, n), u && (H = D([[F, B]], O.BENDPX)); var bt = E.selectAll("path.select-outline-" + P.id).data([ 1, ]), _t = x ? A.newshape : A.newselection, wt = x && !v ? _t.fillcolor : "rgba(0,0,0,0)", Tt = _t.line.color || (c ? s.contrast(k._fullLayout.plot_bgcolor) : "#7f7f7f"); bt.enter() .append("path") .attr("class", "select-outline select-outline-" + P.id) .style({ opacity: x ? _t.opacity / 2 : 1, "stroke-dasharray": o(_t.line.dash, _t.line.width), "stroke-width": _t.line.width + "px", "shape-rendering": "crispEdges", }) .call(s.stroke, Tt) .call(s.fill, wt) .attr("fill-rule", "evenodd") .classed("cursor-move", !!x) .attr("transform", I) .attr("d", dt + "Z"); var kt = E.append("path") .attr("class", "zoombox-corners") .style({ fill: s.background, stroke: s.defaultLine, "stroke-width": 1, }) .attr("transform", I) .attr("d", "M0,0Z"), At = A._uid + O.SELECTID, Mt = [], St = X(k, n.xaxes, n.yaxes, n.subplot); S && !t.shiftKey && (n._clearSubplotSelections = function () { if (c) { var t = mt._id, e = gt._id; it(k, t, e, St); for ( var r = (k.layout || {}).selections || [], n = [], i = !1, o = 0; o < r.length; o++ ) { var s = A.selections[o]; s.xref !== t || s.yref !== e ? n.push(r[o]) : (i = !0); } i && ((k._fullLayout._noEmitSelectedAtStart = !0), a.call("_guiRelayout", k, { selections: n })); } }); var Et = (function (t) { return ( t.plotinfo.fillRangeItems || ut(t.xaxes.concat(t.yaxes)) ); })(n); (n.moveFn = function (t, e) { n._clearSubplotSelections && (n._clearSubplotSelections(), (n._clearSubplotSelections = void 0)), (lt = Math.max(0, Math.min(vt, ot * t + F))), (pt = Math.max(0, Math.min(yt, st * e + B))); var r = Math.abs(lt - F), i = Math.abs(pt - B); if (g) { var a, o, s; if (b) { var l = A.selectdirection; switch ( (a = "any" === l ? i < Math.min(0.6 * r, z) ? "h" : r < Math.min(0.6 * i, z) ? "v" : "d" : l) ) { case "h": (o = w ? yt / 2 : 0), (s = yt); break; case "v": (o = w ? vt / 2 : 0), (s = vt); } } if (x) switch (A.newshape.drawdirection) { case "vertical": (a = "h"), (o = w ? yt / 2 : 0), (s = yt); break; case "horizontal": (a = "v"), (o = w ? vt / 2 : 0), (s = vt); break; case "ortho": r < i ? ((a = "h"), (o = B), (s = pt)) : ((a = "v"), (o = F), (s = lt)); break; default: a = "d"; } "h" === a ? (((J = T ? _(w, [lt, o], [lt, s]) : [ [F, o], [F, s], [lt, s], [lt, o], ]).xmin = T ? lt : Math.min(F, lt)), (J.xmax = T ? lt : Math.max(F, lt)), (J.ymin = Math.min(o, s)), (J.ymax = Math.max(o, s)), kt.attr( "d", "M" + J.xmin + "," + (B - z) + "h-4v" + 2 * z + "h4ZM" + (J.xmax - 1) + "," + (B - z) + "h4v" + 2 * z + "h-4Z", )) : "v" === a ? (((J = T ? _(w, [o, pt], [s, pt]) : [ [o, B], [o, pt], [s, pt], [s, B], ]).xmin = Math.min(o, s)), (J.xmax = Math.max(o, s)), (J.ymin = T ? pt : Math.min(B, pt)), (J.ymax = T ? pt : Math.max(B, pt)), kt.attr( "d", "M" + (F - z) + "," + J.ymin + "v-4h" + 2 * z + "v4ZM" + (F - z) + "," + (J.ymax - 1) + "v4h" + 2 * z + "v-4Z", )) : "d" === a && (((J = T ? _(w, [F, B], [lt, pt]) : [ [F, B], [F, pt], [lt, pt], [lt, B], ]).xmin = Math.min(F, lt)), (J.xmax = Math.max(F, lt)), (J.ymin = Math.min(B, pt)), (J.ymax = Math.max(B, pt)), kt.attr("d", "M0,0Z")); } else u && (H.addPt([lt, pt]), (J = H.filtered)); if ( (n.selectionDefs && n.selectionDefs.length ? ((Z = $(n.mergedPolygons, J, xt)), (J.subtract = xt), (q = G(n.selectionDefs.concat([J])))) : ((Z = [J]), (q = R(J))), y(et(Z, v), bt, n), b) ) { var c, f = nt(k, !1), h = f.eventData ? f.eventData.points.slice() : []; (f = nt(k, !1, q, St, n)), (q = f.selectionTesters), (at = f.eventData), (c = H ? H.filtered : ct(Z)), L.throttle(At, O.SELECTDELAY, function () { for ( var t = (Mt = rt(q, St)).slice(), e = 0; e < h.length; e++ ) { for ( var r = h[e], n = !1, i = 0; i < t.length; i++ ) if ( t[i].curveNumber === r.curveNumber && t[i].pointNumber === r.pointNumber ) { n = !0; break; } n || t.push(r); } t.length && (at || (at = {}), (at.points = t)), Et(at, c), (function (t, e) { t.emit("plotly_selecting", e); })(k, at); }); } }), (n.clickFn = function (t, e) { if ( (kt.remove(), k._fullLayout._activeShapeIndex >= 0) ) k._fullLayout._deactivateShape(k); else if (!x) { var r = A.clickmode; L.done(At) .then(function () { if ((L.clear(At), 2 === t)) { for (bt.remove(), K = 0; K < St.length; K++) (tt = St[K])._module.selectPoints(tt, !1); if ((Q(k, St), W(n), ht(k), St.length)) { var i = St[0].xaxis, o = St[0].yaxis; if (i && o) { for ( var s = [], c = k._fullLayout.selections, u = 0; u < c.length; u++ ) { var f = c[u]; f && ((f.xref === i._id && f.yref === o._id) || s.push(f)); } s.length < c.length && ((k._fullLayout._noEmitSelectedAtStart = !0), a.call("_guiRelayout", k, { selections: s, })); } } } else r.indexOf("select") > -1 && V(e, k, n.xaxes, n.yaxes, n.subplot, n, bt), "event" === r && ft(k, void 0); l.click(k, e); }) .catch(M.error); } }), (n.doneFn = function () { kt.remove(), L.done(At) .then(function () { L.clear(At), !S && J && n.selectionDefs && ((J.subtract = xt), n.selectionDefs.push(J), (n.mergedPolygons.length = 0), [].push.apply(n.mergedPolygons, Z)), (S || x) && W(n, S), n.doneFnCompleted && n.doneFnCompleted(Mt), b && ft(k, at); }) .catch(M.error); }); }, clearOutline: x, clearSelectionsCache: W, selectOnClick: V, }; }, { "../../lib": 515, "../../lib/clear_gl_canvases": 499, "../../lib/polygon": 527, "../../lib/throttle": 542, "../../plot_api/subroutines": 556, "../../plots/cartesian/axis_ids": 570, "../../registry": 647, "../color": 367, "../dragelement/helpers": 385, "../drawing": 389, "../fx": 407, "../fx/helpers": 403, "../shapes/constants": 459, "../shapes/display_outlines": 461, "../shapes/draw_newshape/helpers": 466, "../shapes/draw_newshape/newshapes": 467, "../shapes/handle_outline": 468, "../shapes/helpers": 469, "./constants": 448, "./draw": 450, "./draw_newselection/newselections": 453, "./helpers": 454, "point-in-polygon/nested": 254, polybooljs: 255, }, ], 457: [ function (t, e, r) { "use strict"; var n = t("../annotations/attributes"), i = t("../../traces/scatter/attributes").line, a = t("../drawing/attributes").dash, o = t("../../lib/extend").extendFlat, s = t("../../plot_api/plot_template").templatedArray; t("../../constants/axis_placeable_objects"); e.exports = s("shape", { visible: { valType: "boolean", dflt: !0, editType: "calc+arraydraw", }, type: { valType: "enumerated", values: ["circle", "rect", "path", "line"], editType: "calc+arraydraw", }, layer: { valType: "enumerated", values: ["below", "above"], dflt: "above", editType: "arraydraw", }, xref: o({}, n.xref, {}), xsizemode: { valType: "enumerated", values: ["scaled", "pixel"], dflt: "scaled", editType: "calc+arraydraw", }, xanchor: { valType: "any", editType: "calc+arraydraw" }, x0: { valType: "any", editType: "calc+arraydraw" }, x1: { valType: "any", editType: "calc+arraydraw" }, yref: o({}, n.yref, {}), ysizemode: { valType: "enumerated", values: ["scaled", "pixel"], dflt: "scaled", editType: "calc+arraydraw", }, yanchor: { valType: "any", editType: "calc+arraydraw" }, y0: { valType: "any", editType: "calc+arraydraw" }, y1: { valType: "any", editType: "calc+arraydraw" }, path: { valType: "string", editType: "calc+arraydraw" }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, editType: "arraydraw", }, line: { color: o({}, i.color, { editType: "arraydraw" }), width: o({}, i.width, { editType: "calc+arraydraw" }), dash: o({}, a, { editType: "arraydraw" }), editType: "calc+arraydraw", }, fillcolor: { valType: "color", dflt: "rgba(0,0,0,0)", editType: "arraydraw", }, fillrule: { valType: "enumerated", values: ["evenodd", "nonzero"], dflt: "evenodd", editType: "arraydraw", }, editable: { valType: "boolean", dflt: !1, editType: "calc+arraydraw", }, editType: "arraydraw", }); }, { "../../constants/axis_placeable_objects": 484, "../../lib/extend": 505, "../../plot_api/plot_template": 555, "../../traces/scatter/attributes": 936, "../annotations/attributes": 350, "../drawing/attributes": 388, }, ], 458: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"), a = t("./constants"), o = t("./helpers"); function s(t) { return c(t.line.width, t.xsizemode, t.x0, t.x1, t.path, !1); } function l(t) { return c(t.line.width, t.ysizemode, t.y0, t.y1, t.path, !0); } function c(t, e, r, i, s, l) { var c = t / 2, u = l; if ("pixel" === e) { var f = s ? o.extractPathCoords(s, l ? a.paramIsY : a.paramIsX) : [r, i], h = n.aggNums(Math.max, null, f), p = n.aggNums(Math.min, null, f), d = p < 0 ? Math.abs(p) + c : c, m = h > 0 ? h + c : c; return { ppad: c, ppadplus: u ? d : m, ppadminus: u ? m : d, }; } return { ppad: c }; } function u(t, e, r, n, i) { var s = "category" === t.type || "multicategory" === t.type ? t.r2c : t.d2c; if (void 0 !== e) return [s(e), s(r)]; if (n) { var l, c, u, f, h = 1 / 0, p = -1 / 0, d = n.match(a.segmentRE); for ( "date" === t.type && (s = o.decodeDate(s)), l = 0; l < d.length; l++ ) void 0 !== (c = i[d[l].charAt(0)].drawn) && (!(u = d[l].substr(1).match(a.paramRE)) || u.length < c || ((f = s(u[c])) < h && (h = f), f > p && (p = f))); return p >= h ? [h, p] : void 0; } } e.exports = function (t) { var e = t._fullLayout, r = n.filterVisible(e.shapes); if (r.length && t._fullData.length) for (var o = 0; o < r.length; o++) { var c, f, h = r[o]; h._extremes = {}; var p = i.getRefType(h.xref), d = i.getRefType(h.yref); if ("paper" !== h.xref && "domain" !== p) { var m = "pixel" === h.xsizemode ? h.xanchor : h.x0, g = "pixel" === h.xsizemode ? h.xanchor : h.x1; (f = u( (c = i.getFromId(t, h.xref)), m, g, h.path, a.paramIsX, )) && (h._extremes[c._id] = i.findExtremes(c, f, s(h))); } if ("paper" !== h.yref && "domain" !== d) { var v = "pixel" === h.ysizemode ? h.yanchor : h.y0, y = "pixel" === h.ysizemode ? h.yanchor : h.y1; (f = u( (c = i.getFromId(t, h.yref)), v, y, h.path, a.paramIsY, )) && (h._extremes[c._id] = i.findExtremes(c, f, l(h))); } } }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "./constants": 459, "./helpers": 469, }, ], 459: [ function (t, e, r) { "use strict"; e.exports = { segmentRE: /[MLHVQCTSZ][^MLHVQCTSZ]*/g, paramRE: /[^\s,]+/g, paramIsX: { M: { 0: !0, drawn: 0 }, L: { 0: !0, drawn: 0 }, H: { 0: !0, drawn: 0 }, V: {}, Q: { 0: !0, 2: !0, drawn: 2 }, C: { 0: !0, 2: !0, 4: !0, drawn: 4 }, T: { 0: !0, drawn: 0 }, S: { 0: !0, 2: !0, drawn: 2 }, Z: {}, }, paramIsY: { M: { 1: !0, drawn: 1 }, L: { 1: !0, drawn: 1 }, H: {}, V: { 0: !0, drawn: 0 }, Q: { 1: !0, 3: !0, drawn: 3 }, C: { 1: !0, 3: !0, 5: !0, drawn: 5 }, T: { 1: !0, drawn: 1 }, S: { 1: !0, 3: !0, drawn: 5 }, Z: {}, }, numParams: { M: 2, L: 2, H: 1, V: 1, Q: 4, C: 6, T: 2, S: 4, Z: 0, }, }; }, {}, ], 460: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"), a = t("../../plots/array_container_defaults"), o = t("./attributes"), s = t("./helpers"); function l(t, e, r) { function a(r, i) { return n.coerce(t, e, o, r, i); } if (a("visible")) { var l = a("path"), c = "path" !== a("type", l ? "path" : "rect"); c && delete e.path, a("editable"), a("layer"), a("opacity"), a("fillcolor"), a("fillrule"), a("line.width") && (a("line.color"), a("line.dash")); for ( var u = a("xsizemode"), f = a("ysizemode"), h = ["x", "y"], p = 0; p < 2; p++ ) { var d, m, g, v = h[p], y = v + "anchor", x = "x" === v ? u : f, b = { _fullLayout: r }, _ = i.coerceRef(t, e, b, v, void 0, "paper"); if ( ("range" === i.getRefType(_) ? ((d = i.getFromId(b, _))._shapeIndices.push( e._index, ), (g = s.rangeToShapePosition(d)), (m = s.shapePositionToRange(d))) : (m = g = n.identity), c) ) { var w = v + "0", T = v + "1", k = t[w], A = t[T]; (t[w] = m(t[w], !0)), (t[T] = m(t[T], !0)), "pixel" === x ? (a(w, 0), a(T, 10)) : (i.coercePosition(e, b, a, _, w, 0.25), i.coercePosition(e, b, a, _, T, 0.75)), (e[w] = g(e[w])), (e[T] = g(e[T])), (t[w] = k), (t[T] = A); } if ("pixel" === x) { var M = t[y]; (t[y] = m(t[y], !0)), i.coercePosition(e, b, a, _, y, 0.25), (e[y] = g(e[y])), (t[y] = M); } } c && n.noneOrAll(t, e, ["x0", "x1", "y0", "y1"]); } } e.exports = function (t, e) { a(t, e, { name: "shapes", handleItemDefaults: l }); }; }, { "../../lib": 515, "../../plots/array_container_defaults": 561, "../../plots/cartesian/axes": 566, "./attributes": 457, "./helpers": 469, }, ], 461: [ function (t, e, r) { "use strict"; var n = t("../../lib").strTranslate, i = t("../dragelement"), a = t("../dragelement/helpers"), o = a.drawMode, s = a.selectMode, l = t("../../registry"), c = t("../color"), u = t("./draw_newshape/constants"), f = u.i000, h = u.i090, p = u.i180, d = u.i270, m = t("./handle_outline").clearOutlineControllers, g = t("./draw_newshape/helpers"), v = g.pointsOnRectangle, y = g.pointsOnEllipse, x = g.writePaths, b = t("./draw_newshape/newshapes"), _ = t("../selections/draw_newselection/newselections"); function w(t, e) { var r, n, i, a = t[e][1], o = t[e][2], s = t.length; return ( (n = t[(r = (e + 1) % s)][1]), (i = t[r][2]), n === a && i === o && ((n = t[(r = (e + 2) % s)][1]), (i = t[r][2])), [r, n, i] ); } e.exports = function t(e, r, a, u) { u || (u = 0); var g = a.gd; function T() { t(e, r, a, u++), y(e[0]) && k({ redrawing: !0 }); } function k(t) { var e = {}; void 0 !== a.isActiveShape && ((a.isActiveShape = !1), (e = b(r, a))), void 0 !== a.isActiveSelection && ((a.isActiveSelection = !1), (e = _(r, a)), (g._fullLayout._reselect = !0)), Object.keys(e).length && l.call( (t || {}).redrawing ? "relayout" : "_guiRelayout", g, e, ); } var A, M, S, E, L, C = g._fullLayout._zoomlayer, P = a.dragmode, I = o(P), O = s(P); ((I || O) && (g._fullLayout._outlining = !0), m(g), r.attr("d", x(e)), u || (!a.isActiveShape && !a.isActiveSelection)) || ((L = (function (t, e) { for (var r = 0; r < e.length; r++) { var n = e[r]; t[r] = []; for (var i = 0; i < n.length; i++) { t[r][i] = []; for (var a = 0; a < n[i].length; a++) t[r][i][a] = n[i][a]; } } return t; })([], e)), (function (t) { A = []; for (var r = 0; r < e.length; r++) { var o = e[r], s = v(o), l = !s && y(o); A[r] = []; for (var u = o.length, m = 0; m < u; m++) if ( "Z" !== o[m][0] && (!l || m === f || m === h || m === p || m === d) ) { var x, b = s && a.isActiveSelection; b && (x = w(o, m)); var _ = o[m][1], T = o[m][2], k = t .append(b ? "rect" : "circle") .attr("data-i", r) .attr("data-j", m) .style({ fill: c.background, stroke: c.defaultLine, "stroke-width": 1, "shape-rendering": "crispEdges", }); if (b) { var M = x[1] - _, S = x[2] - T, E = S ? 5 : Math.max( Math.min(25, Math.abs(M) - 5), 5, ), L = M ? 5 : Math.max( Math.min(25, Math.abs(S) - 5), 5, ); k.classed( S ? "cursor-ew-resize" : "cursor-ns-resize", !0, ) .attr("width", E) .attr("height", L) .attr("x", _ - E / 2) .attr("y", T - L / 2) .attr("transform", n(M / 2, S / 2)); } else k.classed("cursor-grab", !0) .attr("r", 5) .attr("cx", _) .attr("cy", T); (A[r][m] = { element: k.node(), gd: g, prepFn: z, doneFn: R, clickFn: F, }), i.init(A[r][m]); } } })(C.append("g").attr("class", "outline-controllers")), (function () { if (((M = []), !e.length)) return; (M[0] = { element: r[0][0], gd: g, prepFn: N, doneFn: j, clickFn: U, }), i.init(M[0]); })()); function z(t) { (S = +t.srcElement.getAttribute("data-i")), (E = +t.srcElement.getAttribute("data-j")), (A[S][E].moveFn = D); } function D(t, r) { if (e.length) { var n = L[S][E][1], i = L[S][E][2], o = e[S], s = o.length; if (v(o)) { var l = t, c = r; if (a.isActiveSelection) w(o, E)[1] === o[E][1] ? (c = 0) : (l = 0); for (var u = 0; u < s; u++) if (u !== E) { var f = o[u]; f[1] === o[E][1] && (f[1] = n + l), f[2] === o[E][2] && (f[2] = i + c); } if (((o[E][1] = n + l), (o[E][2] = i + c), !v(o))) for (var h = 0; h < s; h++) for (var p = 0; p < o[h].length; p++) o[h][p] = L[S][h][p]; } else (o[E][1] = n + t), (o[E][2] = i + r); T(); } } function R() { k(); } function F(t, r) { if (2 === t) { (S = +r.srcElement.getAttribute("data-i")), (E = +r.srcElement.getAttribute("data-j")); var n = e[S]; v(n) || y(n) || (function () { if (e.length && e[S] && e[S].length) { for (var t = [], r = 0; r < e[S].length; r++) r !== E && t.push(e[S][r]); t.length > 1 && (2 !== t.length || "Z" !== t[1][0]) && (0 === E && (t[0][0] = "M"), (e[S] = t), T(), k()); } })(); } } function B(t, r) { !(function (t, r) { if (e.length) for (var n = 0; n < e.length; n++) for (var i = 0; i < e[n].length; i++) for (var a = 0; a + 2 < e[n][i].length; a += 2) (e[n][i][a + 1] = L[n][i][a + 1] + t), (e[n][i][a + 2] = L[n][i][a + 2] + r); })(t, r), T(); } function N(t) { (S = +t.srcElement.getAttribute("data-i")) || (S = 0), (M[S].moveFn = B); } function j() { k(); } function U(t) { 2 === t && (function (t) { if (!s(t._fullLayout.dragmode)) return; m(t); var e = t._fullLayout._activeSelectionIndex, r = (t.layout || {}).selections || []; if (e < r.length) { for (var n = [], i = 0; i < r.length; i++) i !== e && n.push(r[i]); delete t._fullLayout._activeSelectionIndex; var a = t._fullLayout.selections[e]; (t._fullLayout._deselect = { xref: a.xref, yref: a.yref, }), l.call("_guiRelayout", t, { selections: n }); } })(g); } }; }, { "../../lib": 515, "../../registry": 647, "../color": 367, "../dragelement": 386, "../dragelement/helpers": 385, "../selections/draw_newselection/newselections": 453, "./draw_newshape/constants": 464, "./draw_newshape/helpers": 466, "./draw_newshape/newshapes": 467, "./handle_outline": 468, }, ], 462: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"), a = t("../../plots/cartesian/axes"), o = t("./draw_newshape/helpers").readPaths, s = t("./display_outlines"), l = t("./handle_outline").clearOutlineControllers, c = t("../color"), u = t("../drawing"), f = t("../../plot_api/plot_template").arrayEditor, h = t("../dragelement"), p = t("../../lib/setcursor"), d = t("./constants"), m = t("./helpers"), g = m.getPathString; function v(t) { var e = t._fullLayout; for (var r in (e._shapeUpperLayer .selectAll("path") .remove(), e._shapeLowerLayer.selectAll("path").remove(), e._plots)) { var n = e._plots[r].shapelayer; n && n.selectAll("path").remove(); } for (var i = 0; i < e.shapes.length; i++) e.shapes[i].visible && b(t, i); } function y(t) { return !!t._fullLayout._outlining; } function x(t) { return !t._context.edits.shapePosition; } function b(t, e) { t._fullLayout._paperdiv .selectAll('.shapelayer [data-index="' + e + '"]') .remove(); var r = m.makeShapesOptionsAndPlotinfo(t, e), l = r.options, b = r.plotinfo; if (l._input && !1 !== l.visible) if ("below" !== l.layer) k(t._fullLayout._shapeUpperLayer); else if ("paper" === l.xref || "paper" === l.yref) k(t._fullLayout._shapeLowerLayer); else { if (b._hadPlotinfo) k((b.mainplotinfo || b).shapelayer); else k(t._fullLayout._shapeLowerLayer); } function k(r) { var k = g(t, l), A = { "data-index": e, "fill-rule": l.fillrule, d: k }, M = l.opacity, S = l.fillcolor, E = l.line.width ? l.line.color : "rgba(0,0,0,0)", L = l.line.width, C = l.line.dash; L || !0 !== l.editable || ((L = 5), (C = "solid")); var P = "Z" !== k[k.length - 1], I = x(t) && l.editable && t._fullLayout._activeShapeIndex === e; I && ((S = P ? "rgba(0,0,0,0)" : t._fullLayout.activeshape.fillcolor), (M = t._fullLayout.activeshape.opacity)); var O, z = r .append("path") .attr(A) .style("opacity", M) .call(c.stroke, E) .call(c.fill, S) .call(u.dashLine, C, L); if ( (_(z, t, l), (I || t._context.edits.shapePosition) && (O = f(t.layout, "shapes", l)), I) ) { z.style({ cursor: "move" }); var D = { element: z.node(), plotinfo: b, gd: t, editHelpers: O, isActiveShape: !0, }, R = o(k, t); s(R, z, D); } else t._context.edits.shapePosition ? (function (t, e, r, o, s, l) { var c, f, v, x, b, T, k, A, M, S, E, L, C, P, I, O, z = "pixel" === r.xsizemode, D = "pixel" === r.ysizemode, R = "line" === r.type, F = "path" === r.type, B = l.modifyItem, N = a.getFromId(t, r.xref), j = a.getRefType(r.xref), U = a.getFromId(t, r.yref), V = a.getRefType(r.yref), H = m.getDataToPixel(t, N, !1, j), q = m.getDataToPixel(t, U, !0, V), G = m.getPixelToData(t, N, !1, j), Y = m.getPixelToData(t, U, !0, V), W = R ? (function () { var t = Math.max(r.line.width, 10), n = s.append("g").attr("data-index", o); n.append("path") .attr("d", e.attr("d")) .style({ cursor: "move", "stroke-width": t, "stroke-opacity": "0", }); var i = { "fill-opacity": "0" }, a = Math.max(t / 2, 10); return ( n .append("circle") .attr({ "data-line-point": "start-point", cx: z ? H(r.xanchor) + r.x0 : H(r.x0), cy: D ? q(r.yanchor) - r.y0 : q(r.y0), r: a, }) .style(i) .classed("cursor-grab", !0), n .append("circle") .attr({ "data-line-point": "end-point", cx: z ? H(r.xanchor) + r.x1 : H(r.x1), cy: D ? q(r.yanchor) - r.y1 : q(r.y1), r: a, }) .style(i) .classed("cursor-grab", !0), n ); })() : e, Z = { element: W.node(), gd: t, prepFn: function (n) { if (y(t)) return; z && (b = H(r.xanchor)); D && (T = q(r.yanchor)); "path" === r.type ? (I = r.path) : ((c = z ? r.x0 : H(r.x0)), (f = D ? r.y0 : q(r.y0)), (v = z ? r.x1 : H(r.x1)), (x = D ? r.y1 : q(r.y1))); c < v ? ((M = c), (C = "x0"), (S = v), (P = "x1")) : ((M = v), (C = "x1"), (S = c), (P = "x0")); (!D && f < x) || (D && f > x) ? ((k = f), (E = "y0"), (A = x), (L = "y1")) : ((k = x), (E = "y1"), (A = f), (L = "y0")); X(n), Q(s, r), (function (t, e, r) { var n = e.xref, i = e.yref, o = a.getFromId(r, n), s = a.getFromId(r, i), l = ""; "paper" === n || o.autorange || (l += n); "paper" === i || s.autorange || (l += i); u.setClipUrl( t, l ? "clip" + r._fullLayout._uid + l : null, r, ); })(e, r, t), (Z.moveFn = "move" === O ? J : K), (Z.altKey = n.altKey); }, doneFn: function () { if (y(t)) return; p(e), $(s), _(e, t, r), n.call( "_guiRelayout", t, l.getUpdateObj(), ); }, clickFn: function () { if (y(t)) return; $(s); }, }; function X(r) { if (y(t)) O = null; else if (R) O = "path" === r.target.tagName ? "move" : "start-point" === r.target.attributes["data-line-point"] .value ? "resize-over-start-point" : "resize-over-end-point"; else { var n = Z.element.getBoundingClientRect(), i = n.right - n.left, a = n.bottom - n.top, o = r.clientX - n.left, s = r.clientY - n.top, l = !F && i > 10 && a > 10 && !r.shiftKey ? h.getCursor(o / i, 1 - s / a) : "move"; p(e, l), (O = l.split("-")[0]); } } function J(n, i) { if ("path" === r.type) { var a = function (t) { return t; }, o = a, l = a; z ? B("xanchor", (r.xanchor = G(b + n))) : ((o = function (t) { return G(H(t) + n); }), N && "date" === N.type && (o = m.encodeDate(o))), D ? B("yanchor", (r.yanchor = Y(T + i))) : ((l = function (t) { return Y(q(t) + i); }), U && "date" === U.type && (l = m.encodeDate(l))), B("path", (r.path = w(I, o, l))); } else z ? B("xanchor", (r.xanchor = G(b + n))) : (B("x0", (r.x0 = G(c + n))), B("x1", (r.x1 = G(v + n)))), D ? B("yanchor", (r.yanchor = Y(T + i))) : (B("y0", (r.y0 = Y(f + i))), B("y1", (r.y1 = Y(x + i)))); e.attr("d", g(t, r)), Q(s, r); } function K(n, i) { if (F) { var a = function (t) { return t; }, o = a, l = a; z ? B("xanchor", (r.xanchor = G(b + n))) : ((o = function (t) { return G(H(t) + n); }), N && "date" === N.type && (o = m.encodeDate(o))), D ? B("yanchor", (r.yanchor = Y(T + i))) : ((l = function (t) { return Y(q(t) + i); }), U && "date" === U.type && (l = m.encodeDate(l))), B("path", (r.path = w(I, o, l))); } else if (R) { if ("resize-over-start-point" === O) { var u = c + n, h = D ? f - i : f + i; B("x0", (r.x0 = z ? u : G(u))), B("y0", (r.y0 = D ? h : Y(h))); } else if ("resize-over-end-point" === O) { var p = v + n, d = D ? x - i : x + i; B("x1", (r.x1 = z ? p : G(p))), B("y1", (r.y1 = D ? d : Y(d))); } } else { var y = function (t) { return -1 !== O.indexOf(t); }, _ = y("n"), j = y("s"), V = y("w"), W = y("e"), Z = _ ? k + i : k, X = j ? A + i : A, J = V ? M + n : M, K = W ? S + n : S; D && (_ && (Z = k - i), j && (X = A - i)), ((!D && X - Z > 10) || (D && Z - X > 10)) && (B(E, (r[E] = D ? Z : Y(Z))), B(L, (r[L] = D ? X : Y(X)))), K - J > 10 && (B(C, (r[C] = z ? J : G(J))), B(P, (r[P] = z ? K : G(K)))); } e.attr("d", g(t, r)), Q(s, r); } function Q(t, e) { (z || D) && (function () { var r = "path" !== e.type, n = t.selectAll(".visual-cue").data([0]); n.enter() .append("path") .attr({ fill: "#fff", "fill-rule": "evenodd", stroke: "#000", "stroke-width": 1, }) .classed("visual-cue", !0); var a = H( z ? e.xanchor : i.midRange( r ? [e.x0, e.x1] : m.extractPathCoords( e.path, d.paramIsX, ), ), ), o = q( D ? e.yanchor : i.midRange( r ? [e.y0, e.y1] : m.extractPathCoords( e.path, d.paramIsY, ), ), ); if ( ((a = m.roundPositionForSharpStrokeRendering( a, 1, )), (o = m.roundPositionForSharpStrokeRendering( o, 1, )), z && D) ) { var s = "M" + (a - 1 - 1) + "," + (o - 1 - 1) + "h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z"; n.attr("d", s); } else if (z) { var l = "M" + (a - 1 - 1) + "," + (o - 9 - 1) + "v18 h2 v-18 Z"; n.attr("d", l); } else { var c = "M" + (a - 9 - 1) + "," + (o - 1 - 1) + "h18 v2 h-18 Z"; n.attr("d", c); } })(); } function $(t) { t.selectAll(".visual-cue").remove(); } h.init(Z), (W.node().onmousemove = X); })(t, z, l, e, r, O) : !0 === l.editable && z.style( "pointer-events", P || c.opacity(S) * M <= 0.5 ? "stroke" : "all", ); z.node().addEventListener("click", function () { return (function (t, e) { if (!x(t)) return; var r = +e.node().getAttribute("data-index"); if (r >= 0) { if (r === t._fullLayout._activeShapeIndex) return void T(t); (t._fullLayout._activeShapeIndex = r), (t._fullLayout._deactivateShape = T), v(t); } })(t, z); }); } } function _(t, e, r) { var n = (r.xref + r.yref) .replace(/paper/g, "") .replace(/[xyz][1-9]* *domain/g, ""); u.setClipUrl( t, n ? "clip" + e._fullLayout._uid + n : null, e, ); } function w(t, e, r) { return t.replace(d.segmentRE, function (t) { var n = 0, i = t.charAt(0), a = d.paramIsX[i], o = d.paramIsY[i], s = d.numParams[i]; return ( i + t.substr(1).replace(d.paramRE, function (t) { return ( n >= s || (a[n] ? (t = e(t)) : o[n] && (t = r(t)), n++), t ); }) ); }); } function T(t) { x(t) && t._fullLayout._activeShapeIndex >= 0 && (l(t), delete t._fullLayout._activeShapeIndex, v(t)); } e.exports = { draw: v, drawOne: b, eraseActiveShape: function (t) { if (!x(t)) return; l(t); var e = t._fullLayout._activeShapeIndex, r = (t.layout || {}).shapes || []; if (e < r.length) { for (var i = [], a = 0; a < r.length; a++) a !== e && i.push(r[a]); delete t._fullLayout._activeShapeIndex, n.call("_guiRelayout", t, { shapes: i }); } }, }; }, { "../../lib": 515, "../../lib/setcursor": 536, "../../plot_api/plot_template": 555, "../../plots/cartesian/axes": 566, "../../registry": 647, "../color": 367, "../dragelement": 386, "../drawing": 389, "./constants": 459, "./display_outlines": 461, "./draw_newshape/helpers": 466, "./handle_outline": 468, "./helpers": 469, }, ], 463: [ function (t, e, r) { "use strict"; var n = t("../../drawing/attributes").dash, i = t("../../../lib/extend").extendFlat; e.exports = { newshape: { line: { color: { valType: "color", editType: "none" }, width: { valType: "number", min: 0, dflt: 4, editType: "none", }, dash: i({}, n, { dflt: "solid", editType: "none" }), editType: "none", }, fillcolor: { valType: "color", dflt: "rgba(0,0,0,0)", editType: "none", }, fillrule: { valType: "enumerated", values: ["evenodd", "nonzero"], dflt: "evenodd", editType: "none", }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, editType: "none", }, layer: { valType: "enumerated", values: ["below", "above"], dflt: "above", editType: "none", }, drawdirection: { valType: "enumerated", values: ["ortho", "horizontal", "vertical", "diagonal"], dflt: "diagonal", editType: "none", }, editType: "none", }, activeshape: { fillcolor: { valType: "color", dflt: "rgb(255,0,255)", editType: "none", }, opacity: { valType: "number", min: 0, max: 1, dflt: 0.5, editType: "none", }, editType: "none", }, }; }, { "../../../lib/extend": 505, "../../drawing/attributes": 388 }, ], 464: [ function (t, e, r) { "use strict"; e.exports = { CIRCLE_SIDES: 32, i000: 0, i090: 8, i180: 16, i270: 24, cos45: Math.cos(Math.PI / 4), sin45: Math.sin(Math.PI / 4), SQRT2: Math.sqrt(2), }; }, {}, ], 465: [ function (t, e, r) { "use strict"; var n = t("../../color"); e.exports = function (t, e, r) { if ( (r("newshape.drawdirection"), r("newshape.layer"), r("newshape.fillcolor"), r("newshape.fillrule"), r("newshape.opacity"), r("newshape.line.width")) ) { var i = (t || {}).plot_bgcolor || "#FFF"; r("newshape.line.color", n.contrast(i)), r("newshape.line.dash"); } r("activeshape.fillcolor"), r("activeshape.opacity"); }; }, { "../../color": 367 }, ], 466: [ function (t, e, r) { "use strict"; var n = t("parse-svg-path"), i = t("./constants"), a = i.CIRCLE_SIDES, o = i.SQRT2, s = t("../../selections/helpers"), l = s.p2r, c = s.r2p, u = [0, 3, 4, 5, 6, 1, 2], f = [0, 3, 4, 1, 2]; function h(t, e) { return Math.abs(t - e) <= 1e-6; } function p(t, e) { var r = e[1] - t[1], n = e[2] - t[2]; return Math.sqrt(r * r + n * n); } (r.writePaths = function (t) { var e = t.length; if (!e) return "M0,0Z"; for (var r = "", n = 0; n < e; n++) for (var i = t[n].length, a = 0; a < i; a++) { var o = t[n][a][0]; if ("Z" === o) r += "Z"; else for (var s = t[n][a].length, l = 0; l < s; l++) { var c = l; "Q" === o || "S" === o ? (c = f[l]) : "C" === o && (c = u[l]), (r += t[n][a][c]), l > 0 && l < s - 1 && (r += ","); } } return r; }), (r.readPaths = function (t, e, r, i) { var o, s, u, f = n(t), h = [], p = -1, d = 0, m = 0, g = function () { (s = d), (u = m); }; g(); for (var v = 0; v < f.length; v++) { var y, x, b, _, w = [], T = f[v][0], k = T; switch (T) { case "M": p++, (h[p] = []), (d = +f[v][1]), (m = +f[v][2]), w.push([k, d, m]), g(); break; case "Q": case "S": (y = +f[v][1]), (b = +f[v][2]), (d = +f[v][3]), (m = +f[v][4]), w.push([k, d, m, y, b]); break; case "C": (y = +f[v][1]), (b = +f[v][2]), (x = +f[v][3]), (_ = +f[v][4]), (d = +f[v][5]), (m = +f[v][6]), w.push([k, d, m, y, b, x, _]); break; case "T": case "L": (d = +f[v][1]), (m = +f[v][2]), w.push([k, d, m]); break; case "H": (k = "L"), (d = +f[v][1]), w.push([k, d, m]); break; case "V": (k = "L"), (m = +f[v][1]), w.push([k, d, m]); break; case "A": k = "L"; var A = +f[v][1], M = +f[v][2]; +f[v][4] || ((A = -A), (M = -M)); var S = d - A, E = m; for (o = 1; o <= a / 2; o++) { var L = (2 * Math.PI * o) / a; w.push([ k, S + A * Math.cos(L), E + M * Math.sin(L), ]); } break; case "Z": (d === s && m === u) || ((d = s), (m = u), w.push([k, d, m])); } for ( var C = (r || {}).domain, P = e._fullLayout._size, I = r && "pixel" === r.xsizemode, O = r && "pixel" === r.ysizemode, z = !1 === i, D = 0; D < w.length; D++ ) { for (o = 0; o + 2 < 7; o += 2) { var R = w[D][o + 1], F = w[D][o + 2]; void 0 !== R && void 0 !== F && ((d = R), (m = F), r && (r.xaxis && r.xaxis.p2r ? (z && (R -= r.xaxis._offset), (R = I ? c(r.xaxis, r.xanchor) + R : l(r.xaxis, R))) : (z && (R -= P.l), C ? (R = C.x[0] + R / P.w) : (R /= P.w)), r.yaxis && r.yaxis.p2r ? (z && (F -= r.yaxis._offset), (F = O ? c(r.yaxis, r.yanchor) - F : l(r.yaxis, F))) : (z && (F -= P.t), (F = C ? C.y[1] - F / P.h : 1 - F / P.h))), (w[D][o + 1] = R), (w[D][o + 2] = F)); } h[p].push(w[D].slice()); } } return h; }), (r.pointsOnRectangle = function (t) { if (5 !== t.length) return !1; for (var e = 1; e < 3; e++) { if (!h(t[0][e] - t[1][e], t[3][e] - t[2][e])) return !1; if (!h(t[0][e] - t[3][e], t[1][e] - t[2][e])) return !1; } return ( !(!h(t[0][1], t[1][1]) && !h(t[0][1], t[3][1])) && !!(p(t[0], t[1]) * p(t[0], t[3])) ); }), (r.pointsOnEllipse = function (t) { var e = t.length; if (e !== a + 1) return !1; e = a; for (var r = 0; r < e; r++) { var n = (2 * e - r) % e, i = (e / 2 + n) % e, o = (e / 2 + r) % e; if (!h(p(t[r], t[o]), p(t[n], t[i]))) return !1; } return !0; }), (r.handleEllipse = function (t, e, n) { if (!t) return [e, n]; var i = r.ellipseOver({ x0: e[0], y0: e[1], x1: n[0], y1: n[1], }), s = (i.x1 + i.x0) / 2, l = (i.y1 + i.y0) / 2, c = (i.x1 - i.x0) / 2, u = (i.y1 - i.y0) / 2; c || (c = u /= o), u || (u = c /= o); for (var f = [], h = 0; h < a; h++) { var p = (2 * h * Math.PI) / a; f.push([s + c * Math.cos(p), l + u * Math.sin(p)]); } return f; }), (r.ellipseOver = function (t) { var e = t.x0, r = t.y0, n = t.x1, i = t.y1, a = n - e, s = i - r, l = ((e -= a) + n) / 2, c = ((r -= s) + i) / 2; return { x0: l - (a *= o), y0: c - (s *= o), x1: l + a, y1: c + s, }; }), (r.fixDatesForPaths = function (t, e, r) { var n = "date" === e.type, i = "date" === r.type; if (!n && !i) return t; for (var a = 0; a < t.length; a++) for (var o = 0; o < t[a].length; o++) for (var s = 0; s + 2 < t[a][o].length; s += 2) n && (t[a][o][s + 1] = t[a][o][s + 1].replace( " ", "_", )), i && (t[a][o][s + 2] = t[a][o][s + 2].replace( " ", "_", )); return t; }); }, { "../../selections/helpers": 454, "./constants": 464, "parse-svg-path": 250, }, ], 467: [ function (t, e, r) { "use strict"; var n = t("../../dragelement/helpers"), i = n.drawMode, a = n.openMode, o = t("./constants"), s = o.i000, l = o.i090, c = o.i180, u = o.i270, f = o.cos45, h = o.sin45, p = t("../../selections/helpers"), d = p.p2r, m = p.r2p, g = t(".././handle_outline").clearOutline, v = t("./helpers"), y = v.readPaths, x = v.writePaths, b = v.ellipseOver, _ = v.fixDatesForPaths; e.exports = function (t, e) { if (t.length) { var r = t[0][0]; if (r) { var n = r.getAttribute("d"), o = e.gd, p = o._fullLayout.newshape, v = e.plotinfo, w = v.xaxis, T = v.yaxis, k = !!v.domain || !v.xaxis, A = !!v.domain || !v.yaxis, M = e.isActiveShape, S = e.dragmode, E = (o.layout || {}).shapes || []; if (!i(S) && void 0 !== M) { var L = o._fullLayout._activeShapeIndex; if (L < E.length) switch (o._fullLayout.shapes[L].type) { case "rect": S = "drawrect"; break; case "circle": S = "drawcircle"; break; case "line": S = "drawline"; break; case "path": var C = E[L].path || ""; S = "Z" === C[C.length - 1] ? "drawclosedpath" : "drawopenpath"; } } var P, I = a(S), O = y(n, o, v, M), z = { editable: !0, xref: k ? "paper" : w._id, yref: A ? "paper" : T._id, layer: p.layer, opacity: p.opacity, line: { color: p.line.color, width: p.line.width, dash: p.line.dash, }, }; if ( (I || ((z.fillcolor = p.fillcolor), (z.fillrule = p.fillrule)), 1 === O.length && (P = O[0]), P && 5 === P.length && "drawrect" === S) ) (z.type = "rect"), (z.x0 = P[0][1]), (z.y0 = P[0][2]), (z.x1 = P[2][1]), (z.y1 = P[2][2]); else if (P && "drawline" === S) (z.type = "line"), (z.x0 = P[0][1]), (z.y0 = P[0][2]), (z.x1 = P[1][1]), (z.y1 = P[1][2]); else if (P && "drawcircle" === S) { z.type = "circle"; var D = P[s][1], R = P[l][1], F = P[c][1], B = P[u][1], N = P[s][2], j = P[l][2], U = P[c][2], V = P[u][2], H = v.xaxis && ("date" === v.xaxis.type || "log" === v.xaxis.type), q = v.yaxis && ("date" === v.yaxis.type || "log" === v.yaxis.type); H && ((D = m(v.xaxis, D)), (R = m(v.xaxis, R)), (F = m(v.xaxis, F)), (B = m(v.xaxis, B))), q && ((N = m(v.yaxis, N)), (j = m(v.yaxis, j)), (U = m(v.yaxis, U)), (V = m(v.yaxis, V))); var G = (R + B) / 2, Y = (N + U) / 2, W = b({ x0: G, y0: Y, x1: G + ((B - R + F - D) / 2) * f, y1: Y + ((V - j + U - N) / 2) * h, }); H && ((W.x0 = d(v.xaxis, W.x0)), (W.x1 = d(v.xaxis, W.x1))), q && ((W.y0 = d(v.yaxis, W.y0)), (W.y1 = d(v.yaxis, W.y1))), (z.x0 = W.x0), (z.y0 = W.y0), (z.x1 = W.x1), (z.y1 = W.y1); } else (z.type = "path"), w && T && _(O, w, T), (z.path = x(O)), (P = null); g(o); for ( var Z = e.editHelpers, X = (Z || {}).modifyItem, J = [], K = 0; K < E.length; K++ ) { var Q = o._fullLayout.shapes[K]; if ( ((J[K] = Q._input), void 0 !== M && K === o._fullLayout._activeShapeIndex) ) { var $ = z; switch (Q.type) { case "line": case "rect": case "circle": X("x0", $.x0), X("x1", $.x1), X("y0", $.y0), X("y1", $.y1); break; case "path": X("path", $.path); } } } return void 0 === M ? (J.push(z), J) : Z ? Z.getUpdateObj() : {}; } } }; }, { "../../dragelement/helpers": 385, "../../selections/helpers": 454, ".././handle_outline": 468, "./constants": 464, "./helpers": 466, }, ], 468: [ function (t, e, r) { "use strict"; e.exports = { clearOutlineControllers: function (t) { var e = t._fullLayout._zoomlayer; e && e.selectAll(".outline-controllers").remove(); }, clearOutline: function (t) { var e = t._fullLayout._zoomlayer; e && e.selectAll(".select-outline").remove(), (t._fullLayout._outlining = !1); }, }; }, {}, ], 469: [ function (t, e, r) { "use strict"; var n = t("./constants"), i = t("../../lib"), a = t("../../plots/cartesian/axes"); (r.rangeToShapePosition = function (t) { return "log" === t.type ? t.r2d : function (t) { return t; }; }), (r.shapePositionToRange = function (t) { return "log" === t.type ? t.d2r : function (t) { return t; }; }), (r.decodeDate = function (t) { return function (e) { return e.replace && (e = e.replace("_", " ")), t(e); }; }), (r.encodeDate = function (t) { return function (e) { return t(e).replace(" ", "_"); }; }), (r.extractPathCoords = function (t, e, r) { var a = []; return ( t.match(n.segmentRE).forEach(function (t) { var o = e[t.charAt(0)].drawn; if (void 0 !== o) { var s = t.substr(1).match(n.paramRE); if (s && !(s.length < o)) { var l = s[o], c = r ? l : i.cleanNumber(l); a.push(c); } } }), a ); }), (r.getDataToPixel = function (t, e, n, i) { var a, o = t._fullLayout._size; if (e) if ("domain" === i) a = function (t) { return e._length * (n ? 1 - t : t) + e._offset; }; else { var s = r.shapePositionToRange(e); (a = function (t) { return e._offset + e.r2p(s(t, !0)); }), "date" === e.type && (a = r.decodeDate(a)); } else a = n ? function (t) { return o.t + o.h * (1 - t); } : function (t) { return o.l + o.w * t; }; return a; }), (r.getPixelToData = function (t, e, n, i) { var a, o = t._fullLayout._size; if (e) if ("domain" === i) a = function (t) { var r = (t - e._offset) / e._length; return n ? 1 - r : r; }; else { var s = r.rangeToShapePosition(e); a = function (t) { return s(e.p2r(t - e._offset)); }; } else a = n ? function (t) { return 1 - (t - o.t) / o.h; } : function (t) { return (t - o.l) / o.w; }; return a; }), (r.roundPositionForSharpStrokeRendering = function (t, e) { var r = 1 === Math.round(e % 2), n = Math.round(t); return r ? n + 0.5 : n; }), (r.makeShapesOptionsAndPlotinfo = function (t, e) { var r = t._fullLayout.shapes[e] || {}, n = t._fullLayout._plots[r.xref + r.yref]; return ( !!n ? (n._hadPlotinfo = !0) : ((n = {}), r.xref && "paper" !== r.xref && (n.xaxis = t._fullLayout[r.xref + "axis"]), r.yref && "paper" !== r.yref && (n.yaxis = t._fullLayout[r.yref + "axis"])), (n.xsizemode = r.xsizemode), (n.ysizemode = r.ysizemode), (n.xanchor = r.xanchor), (n.yanchor = r.yanchor), { options: r, plotinfo: n } ); }), (r.makeSelectionsOptionsAndPlotinfo = function (t, e) { var r = t._fullLayout.selections[e] || {}, n = t._fullLayout._plots[r.xref + r.yref]; return ( !!n ? (n._hadPlotinfo = !0) : ((n = {}), r.xref && (n.xaxis = t._fullLayout[r.xref + "axis"]), r.yref && (n.yaxis = t._fullLayout[r.yref + "axis"])), { options: r, plotinfo: n } ); }), (r.getPathString = function (t, e) { var o, s, l, c, u, f, h, p, d = e.type, m = a.getRefType(e.xref), g = a.getRefType(e.yref), v = a.getFromId(t, e.xref), y = a.getFromId(t, e.yref), x = t._fullLayout._size; if ( (v ? "domain" === m ? (s = function (t) { return v._offset + v._length * t; }) : ((o = r.shapePositionToRange(v)), (s = function (t) { return v._offset + v.r2p(o(t, !0)); })) : (s = function (t) { return x.l + x.w * t; }), y ? "domain" === g ? (c = function (t) { return y._offset + y._length * (1 - t); }) : ((l = r.shapePositionToRange(y)), (c = function (t) { return y._offset + y.r2p(l(t, !0)); })) : (c = function (t) { return x.t + x.h * (1 - t); }), "path" === d) ) return ( v && "date" === v.type && (s = r.decodeDate(s)), y && "date" === y.type && (c = r.decodeDate(c)), (function (t, e, r) { var a = t.path, o = t.xsizemode, s = t.ysizemode, l = t.xanchor, c = t.yanchor; return a.replace(n.segmentRE, function (t) { var a = 0, u = t.charAt(0), f = n.paramIsX[u], h = n.paramIsY[u], p = n.numParams[u], d = t .substr(1) .replace(n.paramRE, function (t) { return ( f[a] ? (t = "pixel" === o ? e(l) + Number(t) : e(t)) : h[a] && (t = "pixel" === s ? r(c) - Number(t) : r(t)), ++a > p && (t = "X"), t ); }); return ( a > p && ((d = d.replace(/[\s,]*X.*/, "")), i.log( "Ignoring extra params in segment " + t, )), u + d ); }); })(e, s, c) ); if ("pixel" === e.xsizemode) { var b = s(e.xanchor); (u = b + e.x0), (f = b + e.x1); } else (u = s(e.x0)), (f = s(e.x1)); if ("pixel" === e.ysizemode) { var _ = c(e.yanchor); (h = _ - e.y0), (p = _ - e.y1); } else (h = c(e.y0)), (p = c(e.y1)); if ("line" === d) return "M" + u + "," + h + "L" + f + "," + p; if ("rect" === d) return ( "M" + u + "," + h + "H" + f + "V" + p + "H" + u + "Z" ); var w = (u + f) / 2, T = (h + p) / 2, k = Math.abs(w - u), A = Math.abs(T - h), M = "A" + k + "," + A, S = w + k + "," + T; return ( "M" + S + M + " 0 1,1 " + (w + "," + (T - A)) + M + " 0 0,1 " + S + "Z" ); }); }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "./constants": 459, }, ], 470: [ function (t, e, r) { "use strict"; var n = t("./draw"); e.exports = { moduleType: "component", name: "shapes", layoutAttributes: t("./attributes"), supplyLayoutDefaults: t("./defaults"), supplyDrawNewShapeDefaults: t("./draw_newshape/defaults"), includeBasePlot: t( "../../plots/cartesian/include_components", )("shapes"), calcAutorange: t("./calc_autorange"), draw: n.draw, drawOne: n.drawOne, }; }, { "../../plots/cartesian/include_components": 577, "./attributes": 457, "./calc_autorange": 458, "./defaults": 460, "./draw": 462, "./draw_newshape/defaults": 465, }, ], 471: [ function (t, e, r) { "use strict"; var n = t("../../plots/font_attributes"), i = t("../../plots/pad_attributes"), a = t("../../lib/extend").extendDeepAll, o = t("../../plot_api/edit_types").overrideAll, s = t("../../plots/animation_attributes"), l = t("../../plot_api/plot_template").templatedArray, c = t("./constants"), u = l("step", { visible: { valType: "boolean", dflt: !0 }, method: { valType: "enumerated", values: [ "restyle", "relayout", "animate", "update", "skip", ], dflt: "restyle", }, args: { valType: "info_array", freeLength: !0, items: [ { valType: "any" }, { valType: "any" }, { valType: "any" }, ], }, label: { valType: "string" }, value: { valType: "string" }, execute: { valType: "boolean", dflt: !0 }, }); e.exports = o( l("slider", { visible: { valType: "boolean", dflt: !0 }, active: { valType: "number", min: 0, dflt: 0 }, steps: u, lenmode: { valType: "enumerated", values: ["fraction", "pixels"], dflt: "fraction", }, len: { valType: "number", min: 0, dflt: 1 }, x: { valType: "number", min: -2, max: 3, dflt: 0 }, pad: a( i({ editType: "arraydraw" }), {}, { t: { dflt: 20 } }, ), xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "left", }, y: { valType: "number", min: -2, max: 3, dflt: 0 }, yanchor: { valType: "enumerated", values: ["auto", "top", "middle", "bottom"], dflt: "top", }, transition: { duration: { valType: "number", min: 0, dflt: 150 }, easing: { valType: "enumerated", values: s.transition.easing.values, dflt: "cubic-in-out", }, }, currentvalue: { visible: { valType: "boolean", dflt: !0 }, xanchor: { valType: "enumerated", values: ["left", "center", "right"], dflt: "left", }, offset: { valType: "number", dflt: 10 }, prefix: { valType: "string" }, suffix: { valType: "string" }, font: n({}), }, font: n({}), activebgcolor: { valType: "color", dflt: c.gripBgActiveColor, }, bgcolor: { valType: "color", dflt: c.railBgColor }, bordercolor: { valType: "color", dflt: c.railBorderColor, }, borderwidth: { valType: "number", min: 0, dflt: c.railBorderWidth, }, ticklen: { valType: "number", min: 0, dflt: c.tickLength, }, tickcolor: { valType: "color", dflt: c.tickColor }, tickwidth: { valType: "number", min: 0, dflt: 1 }, minorticklen: { valType: "number", min: 0, dflt: c.minorTickLength, }, }), "arraydraw", "from-root", ); }, { "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plot_api/plot_template": 555, "../../plots/animation_attributes": 560, "../../plots/font_attributes": 594, "../../plots/pad_attributes": 627, "./constants": 472, }, ], 472: [ function (t, e, r) { "use strict"; e.exports = { name: "sliders", containerClassName: "slider-container", groupClassName: "slider-group", inputAreaClass: "slider-input-area", railRectClass: "slider-rail-rect", railTouchRectClass: "slider-rail-touch-rect", gripRectClass: "slider-grip-rect", tickRectClass: "slider-tick-rect", inputProxyClass: "slider-input-proxy", labelsClass: "slider-labels", labelGroupClass: "slider-label-group", labelClass: "slider-label", currentValueClass: "slider-current-value", railHeight: 5, menuIndexAttrName: "slider-active-index", autoMarginIdRoot: "slider-", minWidth: 30, minHeight: 30, textPadX: 40, arrowOffsetX: 4, railRadius: 2, railWidth: 5, railBorder: 4, railBorderWidth: 1, railBorderColor: "#bec8d9", railBgColor: "#f8fafc", railInset: 8, stepInset: 10, gripRadius: 10, gripWidth: 20, gripHeight: 20, gripBorder: 20, gripBorderWidth: 1, gripBorderColor: "#bec8d9", gripBgColor: "#f6f8fa", gripBgActiveColor: "#dbdde0", labelPadding: 8, labelOffset: 0, tickWidth: 1, tickColor: "#333", tickOffset: 25, tickLength: 7, minorTickOffset: 25, minorTickColor: "#333", minorTickLength: 4, currentValuePadding: 8, currentValueInset: 0, }; }, {}, ], 473: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/array_container_defaults"), a = t("./attributes"), o = t("./constants").name, s = a.steps; function l(t, e, r) { function o(r, i) { return n.coerce(t, e, a, r, i); } for ( var s = i(t, e, { name: "steps", handleItemDefaults: c }), l = 0, u = 0; u < s.length; u++ ) s[u].visible && l++; if (l < 2 ? (e.visible = !1) : o("visible")) { e._stepCount = l; var f = (e._visibleSteps = n.filterVisible(s)); (s[o("active")] || {}).visible || (e.active = f[0]._index), o("x"), o("y"), n.noneOrAll(t, e, ["x", "y"]), o("xanchor"), o("yanchor"), o("len"), o("lenmode"), o("pad.t"), o("pad.r"), o("pad.b"), o("pad.l"), n.coerceFont(o, "font", r.font), o("currentvalue.visible") && (o("currentvalue.xanchor"), o("currentvalue.prefix"), o("currentvalue.suffix"), o("currentvalue.offset"), n.coerceFont(o, "currentvalue.font", e.font)), o("transition.duration"), o("transition.easing"), o("bgcolor"), o("activebgcolor"), o("bordercolor"), o("borderwidth"), o("ticklen"), o("tickwidth"), o("tickcolor"), o("minorticklen"); } } function c(t, e) { function r(r, i) { return n.coerce(t, e, s, r, i); } if ( "skip" === t.method || Array.isArray(t.args) ? r("visible") : (e.visible = !1) ) { r("method"), r("args"); var i = r("label", "step-" + e._index); r("value", i), r("execute"); } } e.exports = function (t, e) { i(t, e, { name: o, handleItemDefaults: l }); }; }, { "../../lib": 515, "../../plots/array_container_defaults": 561, "./attributes": 471, "./constants": 472, }, ], 474: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../plots/plots"), a = t("../color"), o = t("../drawing"), s = t("../../lib"), l = s.strTranslate, c = t("../../lib/svg_text_utils"), u = t("../../plot_api/plot_template").arrayEditor, f = t("./constants"), h = t("../../constants/alignment"), p = h.LINE_SPACING, d = h.FROM_TL, m = h.FROM_BR; function g(t) { return f.autoMarginIdRoot + t._index; } function v(t) { return t._index; } function y(t, e) { var r = o.tester .selectAll("g." + f.labelGroupClass) .data(e._visibleSteps); r.enter().append("g").classed(f.labelGroupClass, !0); var a = 0, l = 0; r.each(function (t) { var r = _(n.select(this), { step: t }, e).node(); if (r) { var i = o.bBox(r); (l = Math.max(l, i.height)), (a = Math.max(a, i.width)); } }), r.remove(); var u = (e._dims = {}); u.inputAreaWidth = Math.max(f.railWidth, f.gripHeight); var h = t._fullLayout._size; (u.lx = h.l + h.w * e.x), (u.ly = h.t + h.h * (1 - e.y)), "fraction" === e.lenmode ? (u.outerLength = Math.round(h.w * e.len)) : (u.outerLength = e.len), (u.inputAreaStart = 0), (u.inputAreaLength = Math.round( u.outerLength - e.pad.l - e.pad.r, )); var p = (u.inputAreaLength - 2 * f.stepInset) / (e._stepCount - 1), v = a + f.labelPadding; if ( ((u.labelStride = Math.max(1, Math.ceil(v / p))), (u.labelHeight = l), (u.currentValueMaxWidth = 0), (u.currentValueHeight = 0), (u.currentValueTotalHeight = 0), (u.currentValueMaxLines = 1), e.currentvalue.visible) ) { var y = o.tester.append("g"); r.each(function (t) { var r = x(y, e, t.label), n = (r.node() && o.bBox(r.node())) || { width: 0, height: 0, }, i = c.lineCount(r); (u.currentValueMaxWidth = Math.max( u.currentValueMaxWidth, Math.ceil(n.width), )), (u.currentValueHeight = Math.max( u.currentValueHeight, Math.ceil(n.height), )), (u.currentValueMaxLines = Math.max( u.currentValueMaxLines, i, )); }), (u.currentValueTotalHeight = u.currentValueHeight + e.currentvalue.offset), y.remove(); } u.height = u.currentValueTotalHeight + f.tickOffset + e.ticklen + f.labelOffset + u.labelHeight + e.pad.t + e.pad.b; var b = "left"; s.isRightAnchor(e) && ((u.lx -= u.outerLength), (b = "right")), s.isCenterAnchor(e) && ((u.lx -= u.outerLength / 2), (b = "center")); var w = "top"; s.isBottomAnchor(e) && ((u.ly -= u.height), (w = "bottom")), s.isMiddleAnchor(e) && ((u.ly -= u.height / 2), (w = "middle")), (u.outerLength = Math.ceil(u.outerLength)), (u.height = Math.ceil(u.height)), (u.lx = Math.round(u.lx)), (u.ly = Math.round(u.ly)); var T = { y: e.y, b: u.height * m[w], t: u.height * d[w] }; "fraction" === e.lenmode ? ((T.l = 0), (T.xl = e.x - e.len * d[b]), (T.r = 0), (T.xr = e.x + e.len * m[b])) : ((T.x = e.x), (T.l = u.outerLength * d[b]), (T.r = u.outerLength * m[b])), i.autoMargin(t, g(e), T); } function x(t, e, r) { if (e.currentvalue.visible) { var n, i, a = e._dims; switch (e.currentvalue.xanchor) { case "right": (n = a.inputAreaLength - f.currentValueInset - a.currentValueMaxWidth), (i = "left"); break; case "center": (n = 0.5 * a.inputAreaLength), (i = "middle"); break; default: (n = f.currentValueInset), (i = "left"); } var l = s.ensureSingle( t, "text", f.labelClass, function (t) { t.attr({ "text-anchor": i, "data-notex": 1 }); }, ), u = e.currentvalue.prefix ? e.currentvalue.prefix : ""; if ("string" == typeof r) u += r; else { var h = e.steps[e.active].label, d = e._gd._fullLayout._meta; d && (h = s.templateString(h, d)), (u += h); } e.currentvalue.suffix && (u += e.currentvalue.suffix), l .call(o.font, e.currentvalue.font) .text(u) .call(c.convertToTspans, e._gd); var m = c.lineCount(l), g = (a.currentValueMaxLines + 1 - m) * e.currentvalue.font.size * p; return c.positionText(l, n, g), l; } } function b(t, e, r) { s.ensureSingle(t, "rect", f.gripRectClass, function (n) { n.call(A, e, t, r).style("pointer-events", "all"); }) .attr({ width: f.gripWidth, height: f.gripHeight, rx: f.gripRadius, ry: f.gripRadius, }) .call(a.stroke, r.bordercolor) .call(a.fill, r.bgcolor) .style("stroke-width", r.borderwidth + "px"); } function _(t, e, r) { var n = s.ensureSingle( t, "text", f.labelClass, function (t) { t.attr({ "text-anchor": "middle", "data-notex": 1 }); }, ), i = e.step.label, a = r._gd._fullLayout._meta; return ( a && (i = s.templateString(i, a)), n .call(o.font, r.font) .text(i) .call(c.convertToTspans, r._gd), n ); } function w(t, e) { var r = s.ensureSingle(t, "g", f.labelsClass), i = e._dims, a = r .selectAll("g." + f.labelGroupClass) .data(i.labelSteps); a.enter().append("g").classed(f.labelGroupClass, !0), a.exit().remove(), a.each(function (t) { var r = n.select(this); r.call(_, t, e), o.setTranslate( r, E(e, t.fraction), f.tickOffset + e.ticklen + e.font.size * p + f.labelOffset + i.currentValueTotalHeight, ); }); } function T(t, e, r, n, i) { var a = Math.round(n * (r._stepCount - 1)), o = r._visibleSteps[a]._index; o !== r.active && k(t, e, r, o, !0, i); } function k(t, e, r, n, a, o) { var s = r.active; (r.active = n), u(t.layout, f.name, r).applyUpdate("active", n); var l = r.steps[r.active]; e.call(S, r, o), e.call(x, r), t.emit("plotly_sliderchange", { slider: r, step: r.steps[r.active], interaction: a, previousActive: s, }), l && l.method && a && (e._nextMethod ? ((e._nextMethod.step = l), (e._nextMethod.doCallback = a), (e._nextMethod.doTransition = o)) : ((e._nextMethod = { step: l, doCallback: a, doTransition: o, }), (e._nextMethodRaf = window.requestAnimationFrame( function () { var r = e._nextMethod.step; r.method && (r.execute && i.executeAPICommand(t, r.method, r.args), (e._nextMethod = null), (e._nextMethodRaf = null)); }, )))); } function A(t, e, r) { var i = r.node(), o = n.select(e); function s() { return r.data()[0]; } function l() { var t = s(); e.emit("plotly_sliderstart", { slider: t }); var l = r.select("." + f.gripRectClass); n.event.stopPropagation(), n.event.preventDefault(), l.call(a.fill, t.activebgcolor); var c = L(t, n.mouse(i)[0]); function u() { var t = s(), a = L(t, n.mouse(i)[0]); T(e, r, t, a, !1); } function h() { var t = s(); (t._dragging = !1), l.call(a.fill, t.bgcolor), o.on("mouseup", null), o.on("mousemove", null), o.on("touchend", null), o.on("touchmove", null), e.emit("plotly_sliderend", { slider: t, step: t.steps[t.active], }); } T(e, r, t, c, !0), (t._dragging = !0), o.on("mousemove", u), o.on("touchmove", u), o.on("mouseup", h), o.on("touchend", h); } t.on("mousedown", l), t.on("touchstart", l); } function M(t, e) { var r = t .selectAll("rect." + f.tickRectClass) .data(e._visibleSteps), i = e._dims; r.enter().append("rect").classed(f.tickRectClass, !0), r.exit().remove(), r.attr({ width: e.tickwidth + "px", "shape-rendering": "crispEdges", }), r.each(function (t, r) { var s = r % i.labelStride == 0, l = n.select(this); l .attr({ height: s ? e.ticklen : e.minorticklen }) .call(a.fill, e.tickcolor), o.setTranslate( l, E(e, r / (e._stepCount - 1)) - 0.5 * e.tickwidth, (s ? f.tickOffset : f.minorTickOffset) + i.currentValueTotalHeight, ); }); } function S(t, e, r) { for ( var n = t.select("rect." + f.gripRectClass), i = 0, a = 0; a < e._stepCount; a++ ) if (e._visibleSteps[a]._index === e.active) { i = a; break; } var o = E(e, i / (e._stepCount - 1)); if (!e._invokingCommand) { var s = n; r && e.transition.duration > 0 && (s = s .transition() .duration(e.transition.duration) .ease(e.transition.easing)), s.attr( "transform", l( o - 0.5 * f.gripWidth, e._dims.currentValueTotalHeight, ), ); } } function E(t, e) { var r = t._dims; return ( r.inputAreaStart + f.stepInset + (r.inputAreaLength - 2 * f.stepInset) * Math.min(1, Math.max(0, e)) ); } function L(t, e) { var r = t._dims; return Math.min( 1, Math.max( 0, (e - f.stepInset - r.inputAreaStart) / (r.inputAreaLength - 2 * f.stepInset - 2 * r.inputAreaStart), ), ); } function C(t, e, r) { var n = r._dims, i = s.ensureSingle( t, "rect", f.railTouchRectClass, function (n) { n.call(A, e, t, r).style("pointer-events", "all"); }, ); i .attr({ width: n.inputAreaLength, height: Math.max( n.inputAreaWidth, f.tickOffset + r.ticklen + n.labelHeight, ), }) .call(a.fill, r.bgcolor) .attr("opacity", 0), o.setTranslate(i, 0, n.currentValueTotalHeight); } function P(t, e) { var r = e._dims, n = r.inputAreaLength - 2 * f.railInset, i = s.ensureSingle(t, "rect", f.railRectClass); i .attr({ width: n, height: f.railWidth, rx: f.railRadius, ry: f.railRadius, "shape-rendering": "crispEdges", }) .call(a.stroke, e.bordercolor) .call(a.fill, e.bgcolor) .style("stroke-width", e.borderwidth + "px"), o.setTranslate( i, f.railInset, 0.5 * (r.inputAreaWidth - f.railWidth) + r.currentValueTotalHeight, ); } e.exports = function (t) { var e = t._fullLayout, r = (function (t, e) { for ( var r = t[f.name], n = [], i = 0; i < r.length; i++ ) { var a = r[i]; a.visible && ((a._gd = e), n.push(a)); } return n; })(e, t), a = e._infolayer .selectAll("g." + f.containerClassName) .data(r.length > 0 ? [0] : []); function s(e) { e._commandObserver && (e._commandObserver.remove(), delete e._commandObserver), i.autoMargin(t, g(e)); } if ( (a .enter() .append("g") .classed(f.containerClassName, !0) .style("cursor", "ew-resize"), a .exit() .each(function () { n.select(this) .selectAll("g." + f.groupClassName) .each(s); }) .remove(), 0 !== r.length) ) { var l = a.selectAll("g." + f.groupClassName).data(r, v); l.enter().append("g").classed(f.groupClassName, !0), l.exit().each(s).remove(); for (var c = 0; c < r.length; c++) { var u = r[c]; y(t, u); } l.each(function (e) { var r = n.select(this); !(function (t) { var e = t._dims; e.labelSteps = []; for ( var r = t._stepCount, n = 0; n < r; n += e.labelStride ) e.labelSteps.push({ fraction: n / (r - 1), step: t._visibleSteps[n], }); })(e), i.manageCommandObserver( t, e, e._visibleSteps, function (e) { var n = r.data()[0]; n.active !== e.index && (n._dragging || k(t, r, n, e.index, !1, !0)); }, ), (function (t, e, r) { (r.steps[r.active] || {}).visible || (r.active = r._visibleSteps[0]._index); e.call(x, r) .call(P, r) .call(w, r) .call(M, r) .call(C, t, r) .call(b, t, r); var n = r._dims; o.setTranslate(e, n.lx + r.pad.l, n.ly + r.pad.t), e.call(S, r, !1), e.call(x, r); })(t, n.select(this), e); }); } }; }, { "../../constants/alignment": 483, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plot_api/plot_template": 555, "../../plots/plots": 628, "../color": 367, "../drawing": 389, "./constants": 472, "@plotly/d3": 58, }, ], 475: [ function (t, e, r) { "use strict"; var n = t("./constants"); e.exports = { moduleType: "component", name: n.name, layoutAttributes: t("./attributes"), supplyLayoutDefaults: t("./defaults"), draw: t("./draw"), }; }, { "./attributes": 471, "./constants": 472, "./defaults": 473, "./draw": 474, }, ], 476: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("fast-isnumeric"), a = t("../../plots/plots"), o = t("../../registry"), s = t("../../lib"), l = s.strTranslate, c = t("../drawing"), u = t("../color"), f = t("../../lib/svg_text_utils"), h = t("../../constants/interactions"), p = t("../../constants/alignment").OPPOSITE_SIDE, d = / [XY][0-9]* /; e.exports = { draw: function (t, e, r) { var m, g = r.propContainer, v = r.propName, y = r.placeholder, x = r.traceIndex, b = r.avoid || {}, _ = r.attributes, w = r.transform, T = r.containerGroup, k = t._fullLayout, A = 1, M = !1, S = g.title, E = (S && S.text ? S.text : "").trim(), L = S && S.font ? S.font : {}, C = L.family, P = L.size, I = L.color; "title.text" === v ? (m = "titleText") : -1 !== v.indexOf("axis") ? (m = "axisTitleText") : v.indexOf(!0) && (m = "colorbarTitleText"); var O = t._context.edits[m]; "" === E ? (A = 0) : E.replace(d, " % ") === y.replace(d, " % ") && ((A = 0.2), (M = !0), O || (E = "")), r._meta ? (E = s.templateString(E, r._meta)) : k._meta && (E = s.templateString(E, k._meta)); var z, D = E || O; T || ((T = s.ensureSingle(k._infolayer, "g", "g-" + e)), (z = k._hColorbarMoveTitle)); var R = T.selectAll("text").data(D ? [0] : []); if ( (R.enter().append("text"), R.text(E).attr("class", e), R.exit().remove(), !D) ) return T; function F(t) { s.syncOrAsync([B, N], t); } function B(e) { var r; return ( !w && z && (w = {}), w ? ((r = ""), w.rotate && (r += "rotate(" + [w.rotate, _.x, _.y] + ")"), (w.offset || z) && (r += l(0, (w.offset || 0) - (z || 0)))) : (r = null), e.attr("transform", r), e .style({ "font-family": C, "font-size": n.round(P, 2) + "px", fill: u.rgb(I), opacity: A * u.opacity(I), "font-weight": a.fontWeight, }) .attr(_) .call(f.convertToTspans, t), a.previousPromises(t) ); } function N(t) { var e = n.select(t.node().parentNode); if (b && b.selection && b.side && E) { e.attr("transform", null); var r = p[b.side], a = "left" === b.side || "top" === b.side ? -1 : 1, o = i(b.pad) ? b.pad : 2, u = c.bBox(e.node()), f = { left: 0, top: 0, right: k.width, bottom: k.height, }, h = b.maxShift || a * (f[b.side] - u[b.side]), d = 0; if (h < 0) d = h; else { var m = b.offsetLeft || 0, g = b.offsetTop || 0; (u.left -= m), (u.right -= m), (u.top -= g), (u.bottom -= g), b.selection.each(function () { var t = c.bBox(this); s.bBoxIntersect(u, t, o) && (d = Math.max(d, a * (t[b.side] - u[r]) + o)); }), (d = Math.min(h, d)); } if (d > 0 || h < 0) { var v = { left: [-d, 0], right: [d, 0], top: [0, -d], bottom: [0, d], }[b.side]; e.attr("transform", l(v[0], v[1])); } } } return ( R.call(F), O && (E ? R.on(".opacity", null) : ((A = 0), (M = !0), R.text(y) .on("mouseover.opacity", function () { n.select(this) .transition() .duration(h.SHOW_PLACEHOLDER) .style("opacity", 1); }) .on("mouseout.opacity", function () { n.select(this) .transition() .duration(h.HIDE_PLACEHOLDER) .style("opacity", 0); })), R.call(f.makeEditable, { gd: t }) .on("edit", function (e) { void 0 !== x ? o.call("_guiRestyle", t, v, e, x) : o.call("_guiRelayout", t, v, e); }) .on("cancel", function () { this.text(this.attr("data-unformatted")).call(F); }) .on("input", function (t) { this.text(t || " ").call( f.positionText, _.x, _.y, ); })), R.classed("js-placeholder", M), T ); }, }; }, { "../../constants/alignment": 483, "../../constants/interactions": 490, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plots/plots": 628, "../../registry": 647, "../color": 367, "../drawing": 389, "@plotly/d3": 58, "fast-isnumeric": 190, }, ], 477: [ function (t, e, r) { "use strict"; var n = t("../../plots/font_attributes"), i = t("../color/attributes"), a = t("../../lib/extend").extendFlat, o = t("../../plot_api/edit_types").overrideAll, s = t("../../plots/pad_attributes"), l = t("../../plot_api/plot_template").templatedArray, c = l("button", { visible: { valType: "boolean" }, method: { valType: "enumerated", values: [ "restyle", "relayout", "animate", "update", "skip", ], dflt: "restyle", }, args: { valType: "info_array", freeLength: !0, items: [ { valType: "any" }, { valType: "any" }, { valType: "any" }, ], }, args2: { valType: "info_array", freeLength: !0, items: [ { valType: "any" }, { valType: "any" }, { valType: "any" }, ], }, label: { valType: "string", dflt: "" }, execute: { valType: "boolean", dflt: !0 }, }); e.exports = o( l("updatemenu", { _arrayAttrRegexps: [ /^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/, ], visible: { valType: "boolean" }, type: { valType: "enumerated", values: ["dropdown", "buttons"], dflt: "dropdown", }, direction: { valType: "enumerated", values: ["left", "right", "up", "down"], dflt: "down", }, active: { valType: "integer", min: -1, dflt: 0 }, showactive: { valType: "boolean", dflt: !0 }, buttons: c, x: { valType: "number", min: -2, max: 3, dflt: -0.05 }, xanchor: { valType: "enumerated", values: ["auto", "left", "center", "right"], dflt: "right", }, y: { valType: "number", min: -2, max: 3, dflt: 1 }, yanchor: { valType: "enumerated", values: ["auto", "top", "middle", "bottom"], dflt: "top", }, pad: a(s({ editType: "arraydraw" }), {}), font: n({}), bgcolor: { valType: "color" }, bordercolor: { valType: "color", dflt: i.borderLine }, borderwidth: { valType: "number", min: 0, dflt: 1, editType: "arraydraw", }, }), "arraydraw", "from-root", ); }, { "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plot_api/plot_template": 555, "../../plots/font_attributes": 594, "../../plots/pad_attributes": 627, "../color/attributes": 366, }, ], 478: [ function (t, e, r) { "use strict"; e.exports = { name: "updatemenus", containerClassName: "updatemenu-container", headerGroupClassName: "updatemenu-header-group", headerClassName: "updatemenu-header", headerArrowClassName: "updatemenu-header-arrow", dropdownButtonGroupClassName: "updatemenu-dropdown-button-group", dropdownButtonClassName: "updatemenu-dropdown-button", buttonClassName: "updatemenu-button", itemRectClassName: "updatemenu-item-rect", itemTextClassName: "updatemenu-item-text", menuIndexAttrName: "updatemenu-active-index", autoMarginIdRoot: "updatemenu-", blankHeaderOpts: { label: " " }, minWidth: 30, minHeight: 30, textPadX: 24, arrowPadX: 16, rx: 2, ry: 2, textOffsetX: 12, textOffsetY: 3, arrowOffsetX: 4, gapButtonHeader: 5, gapButton: 2, activeColor: "#F4FAFF", hoverColor: "#F4FAFF", arrowSymbol: { left: "\u25c4", right: "\u25ba", up: "\u25b2", down: "\u25bc", }, }; }, {}, ], 479: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/array_container_defaults"), a = t("./attributes"), o = t("./constants").name, s = a.buttons; function l(t, e, r) { function o(r, i) { return n.coerce(t, e, a, r, i); } o( "visible", i(t, e, { name: "buttons", handleItemDefaults: c }) .length > 0, ) && (o("active"), o("direction"), o("type"), o("showactive"), o("x"), o("y"), n.noneOrAll(t, e, ["x", "y"]), o("xanchor"), o("yanchor"), o("pad.t"), o("pad.r"), o("pad.b"), o("pad.l"), n.coerceFont(o, "font", r.font), o("bgcolor", r.paper_bgcolor), o("bordercolor"), o("borderwidth")); } function c(t, e) { function r(r, i) { return n.coerce(t, e, s, r, i); } r( "visible", "skip" === t.method || Array.isArray(t.args), ) && (r("method"), r("args"), r("args2"), r("label"), r("execute")); } e.exports = function (t, e) { i(t, e, { name: o, handleItemDefaults: l }); }; }, { "../../lib": 515, "../../plots/array_container_defaults": 561, "./attributes": 477, "./constants": 478, }, ], 480: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../plots/plots"), a = t("../color"), o = t("../drawing"), s = t("../../lib"), l = t("../../lib/svg_text_utils"), c = t("../../plot_api/plot_template").arrayEditor, u = t("../../constants/alignment").LINE_SPACING, f = t("./constants"), h = t("./scrollbox"); function p(t) { return t._index; } function d(t, e) { return +t.attr(f.menuIndexAttrName) === e._index; } function m(t, e, r, n, i, a, o, s) { (e.active = o), c(t.layout, f.name, e).applyUpdate("active", o), "buttons" === e.type ? v(t, n, null, null, e) : "dropdown" === e.type && (i.attr(f.menuIndexAttrName, "-1"), g(t, n, i, a, e), s || v(t, n, i, a, e)); } function g(t, e, r, n, i) { var a = s.ensureSingle( e, "g", f.headerClassName, function (t) { t.style("pointer-events", "all"); }, ), l = i._dims, c = i.active, u = i.buttons[c] || f.blankHeaderOpts, h = { y: i.pad.t, yPad: 0, x: i.pad.l, xPad: 0, index: 0, }, p = { width: l.headerWidth, height: l.headerHeight }; a.call(y, i, u, t).call(M, i, h, p), s .ensureSingle( e, "text", f.headerArrowClassName, function (t) { t.attr("text-anchor", "end") .call(o.font, i.font) .text(f.arrowSymbol[i.direction]); }, ) .attr({ x: l.headerWidth - f.arrowOffsetX + i.pad.l, y: l.headerHeight / 2 + f.textOffsetY + i.pad.t, }), a.on("click", function () { r.call(S, String(d(r, i) ? -1 : i._index)), v(t, e, r, n, i); }), a.on("mouseover", function () { a.call(w); }), a.on("mouseout", function () { a.call(T, i); }), o.setTranslate(e, l.lx, l.ly); } function v(t, e, r, a, o) { r || (r = e).attr("pointer-events", "all"); var l = (function (t) { return -1 == +t.attr(f.menuIndexAttrName); })(r) && "buttons" !== o.type ? [] : o.buttons, c = "dropdown" === o.type ? f.dropdownButtonClassName : f.buttonClassName, u = r.selectAll("g." + c).data(s.filterVisible(l)), h = u.enter().append("g").classed(c, !0), p = u.exit(); "dropdown" === o.type ? (h .attr("opacity", "0") .transition() .attr("opacity", "1"), p.transition().attr("opacity", "0").remove()) : p.remove(); var d = 0, g = 0, v = o._dims, x = -1 !== ["up", "down"].indexOf(o.direction); "dropdown" === o.type && (x ? (g = v.headerHeight + f.gapButtonHeader) : (d = v.headerWidth + f.gapButtonHeader)), "dropdown" === o.type && "up" === o.direction && (g = -f.gapButtonHeader + f.gapButton - v.openHeight), "dropdown" === o.type && "left" === o.direction && (d = -f.gapButtonHeader + f.gapButton - v.openWidth); var b = { x: v.lx + d + o.pad.l, y: v.ly + g + o.pad.t, yPad: f.gapButton, xPad: f.gapButton, index: 0, }, k = { l: b.x + o.borderwidth, t: b.y + o.borderwidth }; u.each(function (s, l) { var c = n.select(this); c.call(y, o, s, t).call(M, o, b), c.on("click", function () { n.event.defaultPrevented || (s.execute && (s.args2 && o.active === l ? (m(t, o, 0, e, r, a, -1), i.executeAPICommand(t, s.method, s.args2)) : (m(t, o, 0, e, r, a, l), i.executeAPICommand(t, s.method, s.args))), t.emit("plotly_buttonclicked", { menu: o, button: s, active: o.active, })); }), c.on("mouseover", function () { c.call(w); }), c.on("mouseout", function () { c.call(T, o), u.call(_, o); }); }), u.call(_, o), x ? ((k.w = Math.max(v.openWidth, v.headerWidth)), (k.h = b.y - k.t)) : ((k.w = b.x - k.l), (k.h = Math.max(v.openHeight, v.headerHeight))), (k.direction = o.direction), a && (u.size() ? (function (t, e, r, n, i, a) { var o, s, l, c = i.direction, u = "up" === c || "down" === c, h = i._dims, p = i.active; if (u) for (s = 0, l = 0; l < p; l++) s += h.heights[l] + f.gapButton; else for (o = 0, l = 0; l < p; l++) o += h.widths[l] + f.gapButton; n.enable(a, o, s), n.hbar && n.hbar .attr("opacity", "0") .transition() .attr("opacity", "1"); n.vbar && n.vbar .attr("opacity", "0") .transition() .attr("opacity", "1"); })(0, 0, 0, a, o, k) : (function (t) { var e = !!t.hbar, r = !!t.vbar; e && t.hbar .transition() .attr("opacity", "0") .each("end", function () { (e = !1), r || t.disable(); }); r && t.vbar .transition() .attr("opacity", "0") .each("end", function () { (r = !1), e || t.disable(); }); })(a)); } function y(t, e, r, n) { t.call(x, e).call(b, e, r, n); } function x(t, e) { s.ensureSingle( t, "rect", f.itemRectClassName, function (t) { t.attr({ rx: f.rx, ry: f.ry, "shape-rendering": "crispEdges", }); }, ) .call(a.stroke, e.bordercolor) .call(a.fill, e.bgcolor) .style("stroke-width", e.borderwidth + "px"); } function b(t, e, r, n) { var i = s.ensureSingle( t, "text", f.itemTextClassName, function (t) { t.attr({ "text-anchor": "start", "data-notex": 1 }); }, ), a = r.label, c = n._fullLayout._meta; c && (a = s.templateString(a, c)), i.call(o.font, e.font).text(a).call(l.convertToTspans, n); } function _(t, e) { var r = e.active; t.each(function (t, i) { var o = n.select(this); i === r && e.showactive && o .select("rect." + f.itemRectClassName) .call(a.fill, f.activeColor); }); } function w(t) { t.select("rect." + f.itemRectClassName).call( a.fill, f.hoverColor, ); } function T(t, e) { t.select("rect." + f.itemRectClassName).call( a.fill, e.bgcolor, ); } function k(t, e) { var r = (e._dims = { width1: 0, height1: 0, heights: [], widths: [], totalWidth: 0, totalHeight: 0, openWidth: 0, openHeight: 0, lx: 0, ly: 0, }), a = o.tester .selectAll("g." + f.dropdownButtonClassName) .data(s.filterVisible(e.buttons)); a.enter() .append("g") .classed(f.dropdownButtonClassName, !0); var c = -1 !== ["up", "down"].indexOf(e.direction); a.each(function (i, a) { var s = n.select(this); s.call(y, e, i, t); var h = s.select("." + f.itemTextClassName), p = h.node() && o.bBox(h.node()).width, d = Math.max(p + f.textPadX, f.minWidth), m = e.font.size * u, g = l.lineCount(h), v = Math.max(m * g, f.minHeight) + f.textOffsetY; (v = Math.ceil(v)), (d = Math.ceil(d)), (r.widths[a] = d), (r.heights[a] = v), (r.height1 = Math.max(r.height1, v)), (r.width1 = Math.max(r.width1, d)), c ? ((r.totalWidth = Math.max(r.totalWidth, d)), (r.openWidth = r.totalWidth), (r.totalHeight += v + f.gapButton), (r.openHeight += v + f.gapButton)) : ((r.totalWidth += d + f.gapButton), (r.openWidth += d + f.gapButton), (r.totalHeight = Math.max(r.totalHeight, v)), (r.openHeight = r.totalHeight)); }), c ? (r.totalHeight -= f.gapButton) : (r.totalWidth -= f.gapButton), (r.headerWidth = r.width1 + f.arrowPadX), (r.headerHeight = r.height1), "dropdown" === e.type && (c ? ((r.width1 += f.arrowPadX), (r.totalHeight = r.height1)) : (r.totalWidth = r.width1), (r.totalWidth += f.arrowPadX)), a.remove(); var h = r.totalWidth + e.pad.l + e.pad.r, p = r.totalHeight + e.pad.t + e.pad.b, d = t._fullLayout._size; (r.lx = d.l + d.w * e.x), (r.ly = d.t + d.h * (1 - e.y)); var m = "left"; s.isRightAnchor(e) && ((r.lx -= h), (m = "right")), s.isCenterAnchor(e) && ((r.lx -= h / 2), (m = "center")); var g = "top"; s.isBottomAnchor(e) && ((r.ly -= p), (g = "bottom")), s.isMiddleAnchor(e) && ((r.ly -= p / 2), (g = "middle")), (r.totalWidth = Math.ceil(r.totalWidth)), (r.totalHeight = Math.ceil(r.totalHeight)), (r.lx = Math.round(r.lx)), (r.ly = Math.round(r.ly)), i.autoMargin(t, A(e), { x: e.x, y: e.y, l: h * ({ right: 1, center: 0.5 }[m] || 0), r: h * ({ left: 1, center: 0.5 }[m] || 0), b: p * ({ top: 1, middle: 0.5 }[g] || 0), t: p * ({ bottom: 1, middle: 0.5 }[g] || 0), }); } function A(t) { return f.autoMarginIdRoot + t._index; } function M(t, e, r, n) { n = n || {}; var i = t.select("." + f.itemRectClassName), a = t.select("." + f.itemTextClassName), s = e.borderwidth, c = r.index, h = e._dims; o.setTranslate(t, s + r.x, s + r.y); var p = -1 !== ["up", "down"].indexOf(e.direction), d = n.height || (p ? h.heights[c] : h.height1); i.attr({ x: 0, y: 0, width: n.width || (p ? h.width1 : h.widths[c]), height: d, }); var m = e.font.size * u, g = ((l.lineCount(a) - 1) * m) / 2; l.positionText(a, f.textOffsetX, d / 2 - g + f.textOffsetY), p ? (r.y += h.heights[c] + r.yPad) : (r.x += h.widths[c] + r.xPad), r.index++; } function S(t, e) { t.attr(f.menuIndexAttrName, e || "-1") .selectAll("g." + f.dropdownButtonClassName) .remove(); } e.exports = function (t) { var e = t._fullLayout, r = s.filterVisible(e[f.name]); function a(e) { i.autoMargin(t, A(e)); } var o = e._menulayer .selectAll("g." + f.containerClassName) .data(r.length > 0 ? [0] : []); if ( (o .enter() .append("g") .classed(f.containerClassName, !0) .style("cursor", "pointer"), o .exit() .each(function () { n.select(this) .selectAll("g." + f.headerGroupClassName) .each(a); }) .remove(), 0 !== r.length) ) { var l = o .selectAll("g." + f.headerGroupClassName) .data(r, p); l.enter().append("g").classed(f.headerGroupClassName, !0); for ( var c = s.ensureSingle( o, "g", f.dropdownButtonGroupClassName, function (t) { t.style("pointer-events", "all"); }, ), u = 0; u < r.length; u++ ) { var y = r[u]; k(t, y); } var x = "updatemenus" + e._uid, b = new h(t, c, x); l.enter().size() && (c.node().parentNode.appendChild(c.node()), c.call(S)), l .exit() .each(function (t) { c.call(S), a(t); }) .remove(), l.each(function (e) { var r = n.select(this), a = "dropdown" === e.type ? c : null; i.manageCommandObserver( t, e, e.buttons, function (n) { m(t, e, e.buttons[n.index], r, a, b, n.index, !0); }, ), "dropdown" === e.type ? (g(t, r, c, b, e), d(c, e) && v(t, r, c, b, e)) : v(t, r, null, null, e); }); } }; }, { "../../constants/alignment": 483, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plot_api/plot_template": 555, "../../plots/plots": 628, "../color": 367, "../drawing": 389, "./constants": 478, "./scrollbox": 482, "@plotly/d3": 58, }, ], 481: [ function (t, e, r) { arguments[4][475][0].apply(r, arguments); }, { "./attributes": 477, "./constants": 478, "./defaults": 479, "./draw": 480, dup: 475, }, ], 482: [ function (t, e, r) { "use strict"; e.exports = s; var n = t("@plotly/d3"), i = t("../color"), a = t("../drawing"), o = t("../../lib"); function s(t, e, r) { (this.gd = t), (this.container = e), (this.id = r), (this.position = null), (this.translateX = null), (this.translateY = null), (this.hbar = null), (this.vbar = null), (this.bg = this.container .selectAll("rect.scrollbox-bg") .data([0])), this.bg .exit() .on(".drag", null) .on("wheel", null) .remove(), this.bg .enter() .append("rect") .classed("scrollbox-bg", !0) .style("pointer-events", "all") .attr({ opacity: 0, x: 0, y: 0, width: 0, height: 0 }); } (s.barWidth = 2), (s.barLength = 20), (s.barRadius = 2), (s.barPad = 1), (s.barColor = "#808BA4"), (s.prototype.enable = function (t, e, r) { var o = this.gd._fullLayout, l = o.width, c = o.height; this.position = t; var u, f, h, p, d = this.position.l, m = this.position.w, g = this.position.t, v = this.position.h, y = this.position.direction, x = "down" === y, b = "left" === y, _ = "up" === y, w = m, T = v; x || b || "right" === y || _ || ((this.position.direction = "down"), (x = !0)), x || _ ? ((f = (u = d) + w), x ? ((h = g), (T = (p = Math.min(h + T, c)) - h)) : (T = (p = g + T) - (h = Math.max(p - T, 0)))) : ((p = (h = g) + T), b ? (w = (f = d + w) - (u = Math.max(f - w, 0))) : ((u = d), (w = (f = Math.min(u + w, l)) - u))), (this._box = { l: u, t: h, w: w, h: T }); var k = m > w, A = s.barLength + 2 * s.barPad, M = s.barWidth + 2 * s.barPad, S = d, E = g + v; E + M > c && (E = c - M); var L = this.container .selectAll("rect.scrollbar-horizontal") .data(k ? [0] : []); L.exit().on(".drag", null).remove(), L.enter() .append("rect") .classed("scrollbar-horizontal", !0) .call(i.fill, s.barColor), k ? ((this.hbar = L.attr({ rx: s.barRadius, ry: s.barRadius, x: S, y: E, width: A, height: M, })), (this._hbarXMin = S + A / 2), (this._hbarTranslateMax = w - A)) : (delete this.hbar, delete this._hbarXMin, delete this._hbarTranslateMax); var C = v > T, P = s.barWidth + 2 * s.barPad, I = s.barLength + 2 * s.barPad, O = d + m, z = g; O + P > l && (O = l - P); var D = this.container .selectAll("rect.scrollbar-vertical") .data(C ? [0] : []); D.exit().on(".drag", null).remove(), D.enter() .append("rect") .classed("scrollbar-vertical", !0) .call(i.fill, s.barColor), C ? ((this.vbar = D.attr({ rx: s.barRadius, ry: s.barRadius, x: O, y: z, width: P, height: I, })), (this._vbarYMin = z + I / 2), (this._vbarTranslateMax = T - I)) : (delete this.vbar, delete this._vbarYMin, delete this._vbarTranslateMax); var R = this.id, F = u - 0.5, B = C ? f + P + 0.5 : f + 0.5, N = h - 0.5, j = k ? p + M + 0.5 : p + 0.5, U = o._topdefs .selectAll("#" + R) .data(k || C ? [0] : []); if ( (U.exit().remove(), U.enter() .append("clipPath") .attr("id", R) .append("rect"), k || C ? ((this._clipRect = U.select("rect").attr({ x: Math.floor(F), y: Math.floor(N), width: Math.ceil(B) - Math.floor(F), height: Math.ceil(j) - Math.floor(N), })), this.container.call(a.setClipUrl, R, this.gd), this.bg.attr({ x: d, y: g, width: m, height: v })) : (this.bg.attr({ width: 0, height: 0 }), this.container .on("wheel", null) .on(".drag", null) .call(a.setClipUrl, null), delete this._clipRect), k || C) ) { var V = n.behavior .drag() .on("dragstart", function () { n.event.sourceEvent.preventDefault(); }) .on("drag", this._onBoxDrag.bind(this)); this.container .on("wheel", null) .on("wheel", this._onBoxWheel.bind(this)) .on(".drag", null) .call(V); var H = n.behavior .drag() .on("dragstart", function () { n.event.sourceEvent.preventDefault(), n.event.sourceEvent.stopPropagation(); }) .on("drag", this._onBarDrag.bind(this)); k && this.hbar.on(".drag", null).call(H), C && this.vbar.on(".drag", null).call(H); } this.setTranslate(e, r); }), (s.prototype.disable = function () { (this.hbar || this.vbar) && (this.bg.attr({ width: 0, height: 0 }), this.container .on("wheel", null) .on(".drag", null) .call(a.setClipUrl, null), delete this._clipRect), this.hbar && (this.hbar.on(".drag", null), this.hbar.remove(), delete this.hbar, delete this._hbarXMin, delete this._hbarTranslateMax), this.vbar && (this.vbar.on(".drag", null), this.vbar.remove(), delete this.vbar, delete this._vbarYMin, delete this._vbarTranslateMax); }), (s.prototype._onBoxDrag = function () { var t = this.translateX, e = this.translateY; this.hbar && (t -= n.event.dx), this.vbar && (e -= n.event.dy), this.setTranslate(t, e); }), (s.prototype._onBoxWheel = function () { var t = this.translateX, e = this.translateY; this.hbar && (t += n.event.deltaY), this.vbar && (e += n.event.deltaY), this.setTranslate(t, e); }), (s.prototype._onBarDrag = function () { var t = this.translateX, e = this.translateY; if (this.hbar) { var r = t + this._hbarXMin, i = r + this._hbarTranslateMax; t = ((o.constrain(n.event.x, r, i) - r) / (i - r)) * (this.position.w - this._box.w); } if (this.vbar) { var a = e + this._vbarYMin, s = a + this._vbarTranslateMax; e = ((o.constrain(n.event.y, a, s) - a) / (s - a)) * (this.position.h - this._box.h); } this.setTranslate(t, e); }), (s.prototype.setTranslate = function (t, e) { var r = this.position.w - this._box.w, n = this.position.h - this._box.h; if ( ((t = o.constrain(t || 0, 0, r)), (e = o.constrain(e || 0, 0, n)), (this.translateX = t), (this.translateY = e), this.container.call( a.setTranslate, this._box.l - this.position.l - t, this._box.t - this.position.t - e, ), this._clipRect && this._clipRect.attr({ x: Math.floor(this.position.l + t - 0.5), y: Math.floor(this.position.t + e - 0.5), }), this.hbar) ) { var i = t / r; this.hbar.call( a.setTranslate, t + i * this._hbarTranslateMax, e, ); } if (this.vbar) { var s = e / n; this.vbar.call( a.setTranslate, t, e + s * this._vbarTranslateMax, ); } }); }, { "../../lib": 515, "../color": 367, "../drawing": 389, "@plotly/d3": 58, }, ], 483: [ function (t, e, r) { "use strict"; e.exports = { FROM_BL: { left: 0, center: 0.5, right: 1, bottom: 0, middle: 0.5, top: 1, }, FROM_TL: { left: 0, center: 0.5, right: 1, bottom: 1, middle: 0.5, top: 0, }, FROM_BR: { left: 1, center: 0.5, right: 0, bottom: 0, middle: 0.5, top: 1, }, LINE_SPACING: 1.3, CAP_SHIFT: 0.7, MID_SHIFT: 0.35, OPPOSITE_SIDE: { left: "right", right: "left", top: "bottom", bottom: "top", }, }; }, {}, ], 484: [ function (t, e, r) { "use strict"; e.exports = { axisRefDescription: function (t, e, r) { return [ "If set to a", t, "axis id (e.g. *" + t + "* or", "*" + t + "2*), the `" + t + "` position refers to a", t, "coordinate. If set to *paper*, the `" + t + "`", "position refers to the distance from the", e, "of the plotting", "area in normalized coordinates where *0* (*1*) corresponds to the", e, "(" + r + "). If set to a", t, "axis ID followed by", "*domain* (separated by a space), the position behaves like for", "*paper*, but refers to the distance in fractions of the domain", "length from the", e, "of the domain of that axis: e.g.,", "*" + t + "2 domain* refers to the domain of the second", t, " axis and a", t, "position of 0.5 refers to the", "point between the", e, "and the", r, "of the domain of the", "second", t, "axis.", ].join(" "); }, }; }, {}, ], 485: [ function (t, e, r) { "use strict"; e.exports = { INCREASING: { COLOR: "#3D9970", SYMBOL: "\u25b2" }, DECREASING: { COLOR: "#FF4136", SYMBOL: "\u25bc" }, }; }, {}, ], 486: [ function (t, e, r) { "use strict"; e.exports = { FORMAT_LINK: "https://github.com/d3/d3-format/tree/v1.4.5#d3-format", DATE_FORMAT_LINK: "https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format", }; }, {}, ], 487: [ function (t, e, r) { "use strict"; e.exports = { COMPARISON_OPS: ["=", "!=", "<", ">=", ">", "<="], COMPARISON_OPS2: ["=", "<", ">=", ">", "<="], INTERVAL_OPS: [ "[]", "()", "[)", "(]", "][", ")(", "](", ")[", ], SET_OPS: ["{}", "}{"], CONSTRAINT_REDUCTION: { "=": "=", "<": "<", "<=": "<", ">": ">", ">=": ">", "[]": "[]", "()": "[]", "[)": "[]", "(]": "[]", "][": "][", ")(": "][", "](": "][", ")[": "][", }, }; }, {}, ], 488: [ function (t, e, r) { "use strict"; e.exports = { solid: [[], 0], dot: [[0.5, 1], 200], dash: [[0.5, 1], 50], longdash: [[0.5, 1], 10], dashdot: [[0.5, 0.625, 0.875, 1], 50], longdashdot: [[0.5, 0.7, 0.8, 1], 10], }; }, {}, ], 489: [ function (t, e, r) { "use strict"; e.exports = { circle: "\u25cf", "circle-open": "\u25cb", square: "\u25a0", "square-open": "\u25a1", diamond: "\u25c6", "diamond-open": "\u25c7", cross: "+", x: "\u274c", }; }, {}, ], 490: [ function (t, e, r) { "use strict"; e.exports = { SHOW_PLACEHOLDER: 100, HIDE_PLACEHOLDER: 1e3, DESELECTDIM: 0.2, }; }, {}, ], 491: [ function (t, e, r) { "use strict"; e.exports = { BADNUM: void 0, FP_SAFE: 1e-4 * Number.MAX_VALUE, ONEMAXYEAR: 316224e5, ONEAVGYEAR: 315576e5, ONEMINYEAR: 31536e6, ONEMAXQUARTER: 79488e5, ONEAVGQUARTER: 78894e5, ONEMINQUARTER: 76896e5, ONEMAXMONTH: 26784e5, ONEAVGMONTH: 26298e5, ONEMINMONTH: 24192e5, ONEWEEK: 6048e5, ONEDAY: 864e5, ONEHOUR: 36e5, ONEMIN: 6e4, ONESEC: 1e3, EPOCHJD: 2440587.5, ALMOST_EQUAL: 0.999999, LOG_CLIP: 10, MINUS_SIGN: "\u2212", }; }, {}, ], 492: [ function (t, e, r) { "use strict"; (r.xmlns = "http://www.w3.org/2000/xmlns/"), (r.svg = "http://www.w3.org/2000/svg"), (r.xlink = "http://www.w3.org/1999/xlink"), (r.svgAttrs = { xmlns: r.svg, "xmlns:xlink": r.xlink }); }, {}, ], 493: [ function (t, e, r) { "use strict"; (r.version = t("./version").version), t("native-promise-only"), t("../build/plotcss"); for ( var n = t("./registry"), i = (r.register = n.register), a = t("./plot_api"), o = Object.keys(a), s = 0; s < o.length; s++ ) { var l = o[s]; "_" !== l.charAt(0) && (r[l] = a[l]), i({ moduleType: "apiMethod", name: l, fn: a[l] }); } i(t("./traces/scatter")), i([ t("./components/legend"), t("./components/fx"), t("./components/annotations"), t("./components/annotations3d"), t("./components/selections"), t("./components/shapes"), t("./components/images"), t("./components/updatemenus"), t("./components/sliders"), t("./components/rangeslider"), t("./components/rangeselector"), t("./components/grid"), t("./components/errorbars"), t("./components/colorscale"), t("./components/colorbar"), t("./components/modebar"), ]), i([t("./locale-en"), t("./locale-en-us")]), window.PlotlyLocales && Array.isArray(window.PlotlyLocales) && (i(window.PlotlyLocales), delete window.PlotlyLocales), (r.Icons = t("./fonts/ploticon")); var c = t("./components/fx"), u = t("./plots/plots"); (r.Plots = { resize: u.resize, graphJson: u.graphJson, sendDataToCloud: u.sendDataToCloud, }), (r.Fx = { hover: c.hover, unhover: c.unhover, loneHover: c.loneHover, loneUnhover: c.loneUnhover, }), (r.Snapshot = t("./snapshot")), (r.PlotSchema = t("./plot_api/plot_schema")); }, { "../build/plotcss": 1, "./components/annotations": 358, "./components/annotations3d": 363, "./components/colorbar": 373, "./components/colorscale": 379, "./components/errorbars": 395, "./components/fx": 407, "./components/grid": 411, "./components/images": 416, "./components/legend": 424, "./components/modebar": 430, "./components/rangeselector": 438, "./components/rangeslider": 445, "./components/selections": 455, "./components/shapes": 470, "./components/sliders": 475, "./components/updatemenus": 481, "./fonts/ploticon": 494, "./locale-en": 546, "./locale-en-us": 545, "./plot_api": 550, "./plot_api/plot_schema": 554, "./plots/plots": 628, "./registry": 647, "./snapshot": 652, "./traces/scatter": 948, "./version": 1132, "native-promise-only": 245, }, ], 494: [ function (t, e, r) { "use strict"; e.exports = { undo: { width: 857.1, height: 1e3, path: "m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z", transform: "matrix(1 0 0 -1 0 850)", }, home: { width: 928.6, height: 1e3, path: "m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z", transform: "matrix(1 0 0 -1 0 850)", }, "camera-retro": { width: 1e3, height: 1e3, path: "m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z", transform: "matrix(1 0 0 -1 0 850)", }, zoombox: { width: 1e3, height: 1e3, path: "m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z", transform: "matrix(1 0 0 -1 0 850)", }, pan: { width: 1e3, height: 1e3, path: "m1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z", transform: "matrix(1 0 0 -1 0 850)", }, zoom_plus: { width: 875, height: 1e3, path: "m1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z", transform: "matrix(1 0 0 -1 0 850)", }, zoom_minus: { width: 875, height: 1e3, path: "m0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z", transform: "matrix(1 0 0 -1 0 850)", }, autoscale: { width: 1e3, height: 1e3, path: "m250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z", transform: "matrix(1 0 0 -1 0 850)", }, tooltip_basic: { width: 1500, height: 1e3, path: "m375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z", transform: "matrix(1 0 0 -1 0 850)", }, tooltip_compare: { width: 1125, height: 1e3, path: "m187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z", transform: "matrix(1 0 0 -1 0 850)", }, plotlylogo: { width: 1542, height: 1e3, path: "m0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z", transform: "matrix(1 0 0 -1 0 850)", }, "z-axis": { width: 1e3, height: 1e3, path: "m833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z", transform: "matrix(1 0 0 -1 0 850)", }, "3d_rotate": { width: 1e3, height: 1e3, path: "m922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z", transform: "matrix(1 0 0 -1 0 850)", }, camera: { width: 1e3, height: 1e3, path: "m500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z", transform: "matrix(1 0 0 -1 0 850)", }, movie: { width: 1e3, height: 1e3, path: "m938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z", transform: "matrix(1 0 0 -1 0 850)", }, question: { width: 857.1, height: 1e3, path: "m500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z", transform: "matrix(1 0 0 -1 0 850)", }, disk: { width: 857.1, height: 1e3, path: "m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z", transform: "matrix(1 0 0 -1 0 850)", }, drawopenpath: { width: 70, height: 70, path: "M33.21,85.65a7.31,7.31,0,0,1-2.59-.48c-8.16-3.11-9.27-19.8-9.88-41.3-.1-3.58-.19-6.68-.35-9-.15-2.1-.67-3.48-1.43-3.79-2.13-.88-7.91,2.32-12,5.86L3,32.38c1.87-1.64,11.55-9.66,18.27-6.9,2.13.87,4.75,3.14,5.17,9,.17,2.43.26,5.59.36,9.25a224.17,224.17,0,0,0,1.5,23.4c1.54,10.76,4,12.22,4.48,12.4.84.32,2.79-.46,5.76-3.59L43,80.07C41.53,81.57,37.68,85.64,33.21,85.65ZM74.81,69a11.34,11.34,0,0,0,6.09-6.72L87.26,44.5,74.72,32,56.9,38.35c-2.37.86-5.57,3.42-6.61,6L38.65,72.14l8.42,8.43ZM55,46.27a7.91,7.91,0,0,1,3.64-3.17l14.8-5.3,8,8L76.11,60.6l-.06.19a6.37,6.37,0,0,1-3,3.43L48.25,74.59,44.62,71Zm16.57,7.82A6.9,6.9,0,1,0,64.64,61,6.91,6.91,0,0,0,71.54,54.09Zm-4.05,0a2.85,2.85,0,1,1-2.85-2.85A2.86,2.86,0,0,1,67.49,54.09Zm-4.13,5.22L60.5,56.45,44.26,72.7l2.86,2.86ZM97.83,35.67,84.14,22l-8.57,8.57L89.26,44.24Zm-13.69-8,8,8-2.85,2.85-8-8Z", transform: "matrix(1 0 0 1 -15 -15)", }, drawclosedpath: { width: 90, height: 90, path: "M88.41,21.12a26.56,26.56,0,0,0-36.18,0l-2.07,2-2.07-2a26.57,26.57,0,0,0-36.18,0,23.74,23.74,0,0,0,0,34.8L48,90.12a3.22,3.22,0,0,0,4.42,0l36-34.21a23.73,23.73,0,0,0,0-34.79ZM84,51.24,50.16,83.35,16.35,51.25a17.28,17.28,0,0,1,0-25.47,20,20,0,0,1,27.3,0l4.29,4.07a3.23,3.23,0,0,0,4.44,0l4.29-4.07a20,20,0,0,1,27.3,0,17.27,17.27,0,0,1,0,25.46ZM66.76,47.68h-33v6.91h33ZM53.35,35H46.44V68h6.91Z", transform: "matrix(1 0 0 1 -5 -5)", }, lasso: { width: 1031, height: 1e3, path: "m1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z", transform: "matrix(1 0 0 -1 0 850)", }, selectbox: { width: 1e3, height: 1e3, path: "m0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z", transform: "matrix(1 0 0 -1 0 850)", }, drawline: { width: 70, height: 70, path: "M60.64,62.3a11.29,11.29,0,0,0,6.09-6.72l6.35-17.72L60.54,25.31l-17.82,6.4c-2.36.86-5.57,3.41-6.6,6L24.48,65.5l8.42,8.42ZM40.79,39.63a7.89,7.89,0,0,1,3.65-3.17l14.79-5.31,8,8L61.94,54l-.06.19a6.44,6.44,0,0,1-3,3.43L34.07,68l-3.62-3.63Zm16.57,7.81a6.9,6.9,0,1,0-6.89,6.9A6.9,6.9,0,0,0,57.36,47.44Zm-4,0a2.86,2.86,0,1,1-2.85-2.85A2.86,2.86,0,0,1,53.32,47.44Zm-4.13,5.22L46.33,49.8,30.08,66.05l2.86,2.86ZM83.65,29,70,15.34,61.4,23.9,75.09,37.59ZM70,21.06l8,8-2.84,2.85-8-8ZM87,80.49H10.67V87H87Z", transform: "matrix(1 0 0 1 -15 -15)", }, drawrect: { width: 80, height: 80, path: "M78,22V79H21V22H78m9-9H12V88H87V13ZM68,46.22H31V54H68ZM53,32H45.22V69H53Z", transform: "matrix(1 0 0 1 -10 -10)", }, drawcircle: { width: 80, height: 80, path: "M50,84.72C26.84,84.72,8,69.28,8,50.3S26.84,15.87,50,15.87,92,31.31,92,50.3,73.16,84.72,50,84.72Zm0-60.59c-18.6,0-33.74,11.74-33.74,26.17S31.4,76.46,50,76.46,83.74,64.72,83.74,50.3,68.6,24.13,50,24.13Zm17.15,22h-34v7.11h34Zm-13.8-13H46.24v34h7.11Z", transform: "matrix(1 0 0 1 -10 -10)", }, eraseshape: { width: 80, height: 80, path: "M82.77,78H31.85L6,49.57,31.85,21.14H82.77a8.72,8.72,0,0,1,8.65,8.77V69.24A8.72,8.72,0,0,1,82.77,78ZM35.46,69.84H82.77a.57.57,0,0,0,.49-.6V29.91a.57.57,0,0,0-.49-.61H35.46L17,49.57Zm32.68-34.7-24,24,5,5,24-24Zm-19,.53-5,5,24,24,5-5Z", transform: "matrix(1 0 0 1 -10 -10)", }, spikeline: { width: 1e3, height: 1e3, path: "M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z", transform: "matrix(1.5 0 0 -1.5 0 850)", }, pencil: { width: 1792, height: 1792, path: "M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z", transform: "matrix(1 0 0 1 0 1)", }, newplotlylogo: { name: "newplotlylogo", svg: [ "", "", " ", "", " plotly-logomark", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "", ].join(""), }, }; }, {}, ], 495: [ function (t, e, r) { "use strict"; (r.isLeftAnchor = function (t) { return ( "left" === t.xanchor || ("auto" === t.xanchor && t.x <= 1 / 3) ); }), (r.isCenterAnchor = function (t) { return ( "center" === t.xanchor || ("auto" === t.xanchor && t.x > 1 / 3 && t.x < 2 / 3) ); }), (r.isRightAnchor = function (t) { return ( "right" === t.xanchor || ("auto" === t.xanchor && t.x >= 2 / 3) ); }), (r.isTopAnchor = function (t) { return ( "top" === t.yanchor || ("auto" === t.yanchor && t.y >= 2 / 3) ); }), (r.isMiddleAnchor = function (t) { return ( "middle" === t.yanchor || ("auto" === t.yanchor && t.y > 1 / 3 && t.y < 2 / 3) ); }), (r.isBottomAnchor = function (t) { return ( "bottom" === t.yanchor || ("auto" === t.yanchor && t.y <= 1 / 3) ); }); }, {}, ], 496: [ function (t, e, r) { "use strict"; var n = t("./mod"), i = n.mod, a = n.modHalf, o = Math.PI, s = 2 * o; function l(t) { return Math.abs(t[1] - t[0]) > s - 1e-14; } function c(t, e) { return a(e - t, s); } function u(t, e) { if (l(e)) return !0; var r, n; e[0] < e[1] ? ((r = e[0]), (n = e[1])) : ((r = e[1]), (n = e[0])), (r = i(r, s)) > (n = i(n, s)) && (n += s); var a = i(t, s), o = a + s; return (a >= r && a <= n) || (o >= r && o <= n); } function f(t, e, r, n, i, a, c) { (i = i || 0), (a = a || 0); var u, f, h, p, d, m = l([r, n]); function g(t, e) { return [t * Math.cos(e) + i, a - t * Math.sin(e)]; } m ? ((u = 0), (f = o), (h = s)) : r < n ? ((u = r), (h = n)) : ((u = n), (h = r)), t < e ? ((p = t), (d = e)) : ((p = e), (d = t)); var v, y = Math.abs(h - u) <= o ? 0 : 1; function x(t, e, r) { return "A" + [t, t] + " " + [0, y, r] + " " + g(t, e); } return ( m ? (v = null === p ? "M" + g(d, u) + x(d, f, 0) + x(d, h, 0) + "Z" : "M" + g(p, u) + x(p, f, 0) + x(p, h, 0) + "ZM" + g(d, u) + x(d, f, 1) + x(d, h, 1) + "Z") : null === p ? ((v = "M" + g(d, u) + x(d, h, 0)), c && (v += "L0,0Z")) : (v = "M" + g(p, u) + "L" + g(d, u) + x(d, h, 0) + "L" + g(p, h) + x(p, u, 1) + "Z"), v ); } e.exports = { deg2rad: function (t) { return (t / 180) * o; }, rad2deg: function (t) { return (t / o) * 180; }, angleDelta: c, angleDist: function (t, e) { return Math.abs(c(t, e)); }, isFullCircle: l, isAngleInsideSector: u, isPtInsideSector: function (t, e, r, n) { return ( !!u(e, n) && (r[0] < r[1] ? ((i = r[0]), (a = r[1])) : ((i = r[1]), (a = r[0])), t >= i && t <= a) ); var i, a; }, pathArc: function (t, e, r, n, i) { return f(null, t, e, r, n, i, 0); }, pathSector: function (t, e, r, n, i) { return f(null, t, e, r, n, i, 1); }, pathAnnulus: function (t, e, r, n, i, a) { return f(t, e, r, n, i, a, 1); }, }; }, { "./mod": 522 }, ], 497: [ function (t, e, r) { "use strict"; var n = Array.isArray, i = ArrayBuffer, a = DataView; function o(t) { return i.isView(t) && !(t instanceof a); } function s(t) { return n(t) || o(t); } function l(t, e, r) { if (s(t)) { if (s(t[0])) { for (var n = r, i = 0; i < t.length; i++) n = e(n, t[i].length); return n; } return t.length; } return 0; } (r.isTypedArray = o), (r.isArrayOrTypedArray = s), (r.isArray1D = function (t) { return !s(t[0]); }), (r.ensureArray = function (t, e) { return n(t) || (t = []), (t.length = e), t; }), (r.concat = function () { var t, e, r, i, a, o, s, l, c = [], u = !0, f = 0; for (r = 0; r < arguments.length; r++) (o = (i = arguments[r]).length) && (e ? c.push(i) : ((e = i), (a = o)), n(i) ? (t = !1) : ((u = !1), f ? t !== i.constructor && (t = !1) : (t = i.constructor)), (f += o)); if (!f) return []; if (!c.length) return e; if (u) return e.concat.apply(e, c); if (t) { for ((s = new t(f)).set(e), r = 0; r < c.length; r++) (i = c[r]), s.set(i, a), (a += i.length); return s; } for (s = new Array(f), l = 0; l < e.length; l++) s[l] = e[l]; for (r = 0; r < c.length; r++) { for (i = c[r], l = 0; l < i.length; l++) s[a + l] = i[l]; a += l; } return s; }), (r.maxRowLength = function (t) { return l(t, Math.max, 0); }), (r.minRowLength = function (t) { return l(t, Math.min, 1 / 0); }); }, {}, ], 498: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../constants/numerical").BADNUM, a = /^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g; e.exports = function (t) { return ( "string" == typeof t && (t = t.replace(a, "")), n(t) ? Number(t) : i ); }; }, { "../constants/numerical": 491, "fast-isnumeric": 190 }, ], 499: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t._fullLayout; e._glcanvas && e._glcanvas.size() && e._glcanvas.each(function (t) { t.regl && t.regl.clear({ color: !0, depth: !0 }); }); }; }, {}, ], 500: [ function (t, e, r) { "use strict"; e.exports = function (t) { t._responsiveChartHandler && (window.removeEventListener( "resize", t._responsiveChartHandler, ), delete t._responsiveChartHandler); }; }, {}, ], 501: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("tinycolor2"), a = t("../plots/attributes"), o = t("../components/colorscale/scales"), s = t("../components/color"), l = t("../constants/interactions").DESELECTDIM, c = t("./nested_property"), u = t("./regex").counter, f = t("./mod").modHalf, h = t("./array").isArrayOrTypedArray; function p(t, e) { var n = r.valObjectMeta[e.valType]; if (e.arrayOk && h(t)) return !0; if (n.validateFunction) return n.validateFunction(t, e); var i = {}, a = i, o = { set: function (t) { a = t; }, }; return n.coerceFunction(t, o, i, e), a !== i; } (r.valObjectMeta = { data_array: { coerceFunction: function (t, e, r) { h(t) ? e.set(t) : void 0 !== r && e.set(r); }, }, enumerated: { coerceFunction: function (t, e, r, n) { n.coerceNumber && (t = +t), -1 === n.values.indexOf(t) ? e.set(r) : e.set(t); }, validateFunction: function (t, e) { e.coerceNumber && (t = +t); for (var r = e.values, n = 0; n < r.length; n++) { var i = String(r[n]); if ( "/" === i.charAt(0) && "/" === i.charAt(i.length - 1) ) { if (new RegExp(i.substr(1, i.length - 2)).test(t)) return !0; } else if (t === r[n]) return !0; } return !1; }, }, boolean: { coerceFunction: function (t, e, r) { !0 === t || !1 === t ? e.set(t) : e.set(r); }, }, number: { coerceFunction: function (t, e, r, i) { !n(t) || (void 0 !== i.min && t < i.min) || (void 0 !== i.max && t > i.max) ? e.set(r) : e.set(+t); }, }, integer: { coerceFunction: function (t, e, r, i) { t % 1 || !n(t) || (void 0 !== i.min && t < i.min) || (void 0 !== i.max && t > i.max) ? e.set(r) : e.set(+t); }, }, string: { coerceFunction: function (t, e, r, n) { if ("string" != typeof t) { var i = "number" == typeof t; !0 !== n.strict && i ? e.set(String(t)) : e.set(r); } else n.noBlank && !t ? e.set(r) : e.set(t); }, }, color: { coerceFunction: function (t, e, r) { i(t).isValid() ? e.set(t) : e.set(r); }, }, colorlist: { coerceFunction: function (t, e, r) { Array.isArray(t) && t.length && t.every(function (t) { return i(t).isValid(); }) ? e.set(t) : e.set(r); }, }, colorscale: { coerceFunction: function (t, e, r) { e.set(o.get(t, r)); }, }, angle: { coerceFunction: function (t, e, r) { "auto" === t ? e.set("auto") : n(t) ? e.set(f(+t, 360)) : e.set(r); }, }, subplotid: { coerceFunction: function (t, e, r, n) { var i = n.regex || u(r); "string" == typeof t && i.test(t) ? e.set(t) : e.set(r); }, validateFunction: function (t, e) { var r = e.dflt; return ( t === r || ("string" == typeof t && !!u(r).test(t)) ); }, }, flaglist: { coerceFunction: function (t, e, r, n) { if (-1 === (n.extras || []).indexOf(t)) if ("string" == typeof t) { for (var i = t.split("+"), a = 0; a < i.length; ) { var o = i[a]; -1 === n.flags.indexOf(o) || i.indexOf(o) < a ? i.splice(a, 1) : a++; } i.length ? e.set(i.join("+")) : e.set(r); } else e.set(r); else e.set(t); }, }, any: { coerceFunction: function (t, e, r) { void 0 === t ? e.set(r) : e.set(t); }, }, info_array: { coerceFunction: function (t, e, n, i) { function a(t, e, n) { var i, a = { set: function (t) { i = t; }, }; return ( void 0 === n && (n = e.dflt), r.valObjectMeta[e.valType].coerceFunction( t, a, n, e, ), i ); } var o = 2 === i.dimensions || ("1-2" === i.dimensions && Array.isArray(t) && Array.isArray(t[0])); if (Array.isArray(t)) { var s, l, c, u, f, h, p = i.items, d = [], m = Array.isArray(p), g = m && o && Array.isArray(p[0]), v = o && m && !g, y = m && !v ? p.length : t.length; if (((n = Array.isArray(n) ? n : []), o)) for (s = 0; s < y; s++) for ( d[s] = [], c = Array.isArray(t[s]) ? t[s] : [], f = v ? p.length : m ? p[s].length : c.length, l = 0; l < f; l++ ) (u = v ? p[l] : m ? p[s][l] : p), void 0 !== (h = a(c[l], u, (n[s] || [])[l])) && (d[s][l] = h); else for (s = 0; s < y; s++) void 0 !== (h = a(t[s], m ? p[s] : p, n[s])) && (d[s] = h); e.set(d); } else e.set(n); }, validateFunction: function (t, e) { if (!Array.isArray(t)) return !1; var r = e.items, n = Array.isArray(r), i = 2 === e.dimensions; if (!e.freeLength && t.length !== r.length) return !1; for (var a = 0; a < t.length; a++) if (i) { if ( !Array.isArray(t[a]) || (!e.freeLength && t[a].length !== r[a].length) ) return !1; for (var o = 0; o < t[a].length; o++) if (!p(t[a][o], n ? r[a][o] : r)) return !1; } else if (!p(t[a], n ? r[a] : r)) return !1; return !0; }, }, }), (r.coerce = function (t, e, n, i, a) { var o = c(n, i).get(), s = c(t, i), l = c(e, i), u = s.get(), f = e._template; if ( (void 0 === u && f && ((u = c(f, i).get()), (f = 0)), void 0 === a && (a = o.dflt), o.arrayOk && h(u)) ) return l.set(u), u; var d = r.valObjectMeta[o.valType].coerceFunction; d(u, l, a, o); var m = l.get(); return ( f && m === a && !p(u, o) && (d((u = c(f, i).get()), l, a, o), (m = l.get())), m ); }), (r.coerce2 = function (t, e, n, i, a) { var o = c(t, i), s = r.coerce(t, e, n, i, a), l = o.get(); return null != l && s; }), (r.coerceFont = function (t, e, r) { var n = {}; return ( (r = r || {}), (n.family = t(e + ".family", r.family)), (n.size = t(e + ".size", r.size)), (n.color = t(e + ".color", r.color)), n ); }), (r.coercePattern = function (t, e, r, n) { if (t(e + ".shape")) { t(e + ".solidity"), t(e + ".size"); var i = "overlay" === t(e + ".fillmode"); if (!n) { var a = t(e + ".bgcolor", i ? r : void 0); t(e + ".fgcolor", i ? s.contrast(a) : r); } t(e + ".fgopacity", i ? 0.5 : 1); } }), (r.coerceHoverinfo = function (t, e, n) { var i, o = e._module.attributes, s = o.hoverinfo ? o : a, l = s.hoverinfo; if (1 === n._dataLength) { var c = "all" === l.dflt ? l.flags.slice() : l.dflt.split("+"); c.splice(c.indexOf("name"), 1), (i = c.join("+")); } return r.coerce(t, e, s, "hoverinfo", i); }), (r.coerceSelectionMarkerOpacity = function (t, e) { if (t.marker) { var r, n, i = t.marker.opacity; if (void 0 !== i) h(i) || t.selected || t.unselected || ((r = i), (n = l * i)), e("selected.marker.opacity", r), e("unselected.marker.opacity", n); } }), (r.validate = p); }, { "../components/color": 367, "../components/colorscale/scales": 382, "../constants/interactions": 490, "../plots/attributes": 562, "./array": 497, "./mod": 522, "./nested_property": 523, "./regex": 532, "fast-isnumeric": 190, tinycolor2: 313, }, ], 502: [ function (t, e, r) { "use strict"; var n, i, a = t("d3-time-format").timeFormat, o = t("fast-isnumeric"), s = t("./loggers"), l = t("./mod").mod, c = t("../constants/numerical"), u = c.BADNUM, f = c.ONEDAY, h = c.ONEHOUR, p = c.ONEMIN, d = c.ONESEC, m = c.EPOCHJD, g = t("../registry"), v = t("d3-time-format").utcFormat, y = /^\s*(-?\d\d\d\d|\d\d)(-(\d?\d)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m, x = /^\s*(-?\d\d\d\d|\d\d)(-(\d?\di?)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m, b = new Date().getFullYear() - 70; function _(t) { return ( t && g.componentsRegistry.calendars && "string" == typeof t && "gregorian" !== t ); } function w(t, e) { return String(t + Math.pow(10, e)).substr(1); } (r.dateTick0 = function (t, e) { var n = (function (t, e) { return _(t) ? e ? g.getComponentMethod( "calendars", "CANONICAL_SUNDAY", )[t] : g.getComponentMethod("calendars", "CANONICAL_TICK")[ t ] : e ? "2000-01-02" : "2000-01-01"; })(t, !!e); if (e < 2) return n; var i = r.dateTime2ms(n, t); return (i += f * (e - 1)), r.ms2DateTime(i, 0, t); }), (r.dfltRange = function (t) { return _(t) ? g.getComponentMethod("calendars", "DFLTRANGE")[t] : ["2000-01-01", "2001-01-01"]; }), (r.isJSDate = function (t) { return ( "object" == typeof t && null !== t && "function" == typeof t.getTime ); }), (r.dateTime2ms = function (t, e) { if (r.isJSDate(t)) { var a = t.getTimezoneOffset() * p, o = (t.getUTCMinutes() - t.getMinutes()) * p + (t.getUTCSeconds() - t.getSeconds()) * d + (t.getUTCMilliseconds() - t.getMilliseconds()); if (o) { var s = 3 * p; a = a - s / 2 + l(o - a + s / 2, s); } return (t = Number(t) - a) >= n && t <= i ? t : u; } if ("string" != typeof t && "number" != typeof t) return u; t = String(t); var c = _(e), v = t.charAt(0); !c || ("G" !== v && "g" !== v) || ((t = t.substr(1)), (e = "")); var w = c && "chinese" === e.substr(0, 7), T = t.match(w ? x : y); if (!T) return u; var k = T[1], A = T[3] || "1", M = Number(T[5] || 1), S = Number(T[7] || 0), E = Number(T[9] || 0), L = Number(T[11] || 0); if (c) { if (2 === k.length) return u; var C; k = Number(k); try { var P = g.getComponentMethod( "calendars", "getCal", )(e); if (w) { var I = "i" === A.charAt(A.length - 1); (A = parseInt(A, 10)), (C = P.newDate(k, P.toMonthIndex(k, A, I), M)); } else C = P.newDate(k, Number(A), M); } catch (t) { return u; } return C ? (C.toJD() - m) * f + S * h + E * p + L * d : u; } (k = 2 === k.length ? ((Number(k) + 2e3 - b) % 100) + b : Number(k)), (A -= 1); var O = new Date(Date.UTC(2e3, A, M, S, E)); return ( O.setUTCFullYear(k), O.getUTCMonth() !== A || O.getUTCDate() !== M ? u : O.getTime() + L * d ); }), (n = r.MIN_MS = r.dateTime2ms("-9999")), (i = r.MAX_MS = r.dateTime2ms("9999-12-31 23:59:59.9999")), (r.isDateTime = function (t, e) { return r.dateTime2ms(t, e) !== u; }); var T = 90 * f, k = 3 * h, A = 5 * p; function M(t, e, r, n, i) { if ( (e || r || n || i) && ((t += " " + w(e, 2) + ":" + w(r, 2)), (n || i) && ((t += ":" + w(n, 2)), i)) ) { for (var a = 4; i % 10 == 0; ) (a -= 1), (i /= 10); t += "." + w(i, a); } return t; } (r.ms2DateTime = function (t, e, r) { if ("number" != typeof t || !(t >= n && t <= i)) return u; e || (e = 0); var a, o, s, c, y, x, b = Math.floor(10 * l(t + 0.05, 1)), w = Math.round(t - b / 10); if (_(r)) { var S = Math.floor(w / f) + m, E = Math.floor(l(t, f)); try { a = g .getComponentMethod( "calendars", "getCal", )(r) .fromJD(S) .formatDate("yyyy-mm-dd"); } catch (t) { a = v("G%Y-%m-%d")(new Date(w)); } if ("-" === a.charAt(0)) for (; a.length < 11; ) a = "-0" + a.substr(1); else for (; a.length < 10; ) a = "0" + a; (o = e < T ? Math.floor(E / h) : 0), (s = e < T ? Math.floor((E % h) / p) : 0), (c = e < k ? Math.floor((E % p) / d) : 0), (y = e < A ? (E % d) * 10 + b : 0); } else (x = new Date(w)), (a = v("%Y-%m-%d")(x)), (o = e < T ? x.getUTCHours() : 0), (s = e < T ? x.getUTCMinutes() : 0), (c = e < k ? x.getUTCSeconds() : 0), (y = e < A ? 10 * x.getUTCMilliseconds() + b : 0); return M(a, o, s, c, y); }), (r.ms2DateTimeLocal = function (t) { if (!(t >= n + f && t <= i - f)) return u; var e = Math.floor(10 * l(t + 0.05, 1)), r = new Date(Math.round(t - e / 10)); return M( a("%Y-%m-%d")(r), r.getHours(), r.getMinutes(), r.getSeconds(), 10 * r.getUTCMilliseconds() + e, ); }), (r.cleanDate = function (t, e, n) { if (t === u) return e; if ( r.isJSDate(t) || ("number" == typeof t && isFinite(t)) ) { if (_(n)) return ( s.error( "JS Dates and milliseconds are incompatible with world calendars", t, ), e ); if (!(t = r.ms2DateTimeLocal(+t)) && void 0 !== e) return e; } else if (!r.isDateTime(t, n)) return s.error("unrecognized date", t), e; return t; }); var S = /%\d?f/g, E = /%h/g, L = { 1: "1", 2: "1", 3: "2", 4: "2" }; function C(t, e, r, n) { t = t.replace(S, function (t) { var r = Math.min(+t.charAt(1) || 6, 6); return ( (((e / 1e3) % 1) + 2) .toFixed(r) .substr(2) .replace(/0+$/, "") || "0" ); }); var i = new Date(Math.floor(e + 0.05)); if ( ((t = t.replace(E, function () { return L[r("%q")(i)]; })), _(n)) ) try { t = g.getComponentMethod("calendars", "worldCalFmt")( t, e, n, ); } catch (t) { return "Invalid"; } return r(t)(i); } var P = [59, 59.9, 59.99, 59.999, 59.9999]; r.formatDate = function (t, e, r, n, i, a) { if (((i = _(i) && i), !e)) if ("y" === r) e = a.year; else if ("m" === r) e = a.month; else { if ("d" !== r) return ( (function (t, e) { var r = l(t + 0.05, f), n = w(Math.floor(r / h), 2) + ":" + w(l(Math.floor(r / p), 60), 2); if ("M" !== e) { o(e) || (e = 0); var i = (100 + Math.min(l(t / d, 60), P[e])) .toFixed(e) .substr(1); e > 0 && (i = i .replace(/0+$/, "") .replace(/[\.]$/, "")), (n += ":" + i); } return n; })(t, r) + "\n" + C(a.dayMonthYear, t, n, i) ); e = a.dayMonth + "\n" + a.year; } return C(e, t, n, i); }; var I = 3 * f; (r.incrementMonth = function (t, e, r) { r = _(r) && r; var n = l(t, f); if (((t = Math.round(t - n)), r)) try { var i = Math.round(t / f) + m, a = g.getComponentMethod("calendars", "getCal")(r), o = a.fromJD(i); return ( e % 12 ? a.add(o, e, "m") : a.add(o, e / 12, "y"), (o.toJD() - m) * f + n ); } catch (e) { s.error("invalid ms " + t + " in calendar " + r); } var c = new Date(t + I); return c.setUTCMonth(c.getUTCMonth() + e) + n - I; }), (r.findExactDates = function (t, e) { for ( var r, n, i = 0, a = 0, s = 0, l = 0, c = _(e) && g.getComponentMethod("calendars", "getCal")(e), u = 0; u < t.length; u++ ) if (((n = t[u]), o(n))) { if (!(n % f)) if (c) try { 1 === (r = c.fromJD(n / f + m)).day() ? 1 === r.month() ? i++ : a++ : s++; } catch (t) {} else 1 === (r = new Date(n)).getUTCDate() ? 0 === r.getUTCMonth() ? i++ : a++ : s++; } else l++; s += a += i; var h = t.length - l; return { exactYears: i / h, exactMonths: a / h, exactDays: s / h, }; }); }, { "../constants/numerical": 491, "../registry": 647, "./loggers": 519, "./mod": 522, "d3-time-format": 120, "fast-isnumeric": 190, }, ], 503: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("./loggers"), a = t("./matrix"), o = t("gl-mat4"); function s(t) { var e = t && t.parentNode; e && e.removeChild(t); } function l(t, e, r) { var n = "plotly.js-style-" + t, a = document.getElementById(n); a || ((a = document.createElement("style")).setAttribute( "id", n, ), a.appendChild(document.createTextNode("")), document.head.appendChild(a)); var o = a.sheet; o.insertRule ? o.insertRule(e + "{" + r + "}", 0) : o.addRule ? o.addRule(e, r, 0) : i.warn("addStyleRule failed"); } function c(t) { var e = window.getComputedStyle(t, null), r = e.getPropertyValue("-webkit-transform") || e.getPropertyValue("-moz-transform") || e.getPropertyValue("-ms-transform") || e.getPropertyValue("-o-transform") || e.getPropertyValue("transform"); return "none" === r ? null : r .replace("matrix", "") .replace("3d", "") .slice(1, -1) .split(",") .map(function (t) { return +t; }); } function u(t) { for (var e = []; f(t); ) e.push(t), (t = t.parentNode); return e; } function f(t) { return ( t && (t instanceof Element || t instanceof HTMLElement) ); } e.exports = { getGraphDiv: function (t) { var e; if ("string" == typeof t) { if (null === (e = document.getElementById(t))) throw new Error( "No DOM element with id '" + t + "' exists on the page.", ); return e; } if (null == t) throw new Error( "DOM element provided is null or undefined", ); return t; }, isPlotDiv: function (t) { var e = n.select(t); return ( e.node() instanceof HTMLElement && e.size() && e.classed("js-plotly-plot") ); }, removeElement: s, addStyleRule: function (t, e) { l("global", t, e); }, addRelatedStyleRule: l, deleteRelatedStyleRule: function (t) { var e = "plotly.js-style-" + t, r = document.getElementById(e); r && s(r); }, getFullTransformMatrix: function (t) { var e = u(t), r = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; return ( e.forEach(function (t) { var e = c(t); if (e) { var n = a.convertCssMatrix(e); r = o.multiply(r, r, n); } }), r ); }, getElementTransformMatrix: c, getElementAndAncestors: u, equalDomRects: function (t, e) { return ( t && e && t.x === e.x && t.y === e.y && t.top === e.top && t.left === e.left && t.right === e.right && t.bottom === e.bottom ); }, }; }, { "./loggers": 519, "./matrix": 521, "@plotly/d3": 58, "gl-mat4": 210, }, ], 504: [ function (t, e, r) { "use strict"; var n = t("events").EventEmitter, i = { init: function (t) { if (t._ev instanceof n) return t; var e = new n(), r = new n(); return ( (t._ev = e), (t._internalEv = r), (t.on = e.on.bind(e)), (t.once = e.once.bind(e)), (t.removeListener = e.removeListener.bind(e)), (t.removeAllListeners = e.removeAllListeners.bind(e)), (t._internalOn = r.on.bind(r)), (t._internalOnce = r.once.bind(r)), (t._removeInternalListener = r.removeListener.bind(r)), (t._removeAllInternalListeners = r.removeAllListeners.bind(r)), (t.emit = function (n, i) { "undefined" != typeof jQuery && jQuery(t).trigger(n, i), e.emit(n, i), r.emit(n, i); }), t ); }, triggerHandler: function (t, e, r) { var n, i; "undefined" != typeof jQuery && (n = jQuery(t).triggerHandler(e, r)); var a = t._ev; if (!a) return n; var o, s = a._events[e]; if (!s) return n; function l(t) { return t.listener ? (a.removeListener(e, t.listener), t.fired ? void 0 : ((t.fired = !0), t.listener.apply(a, [r]))) : t.apply(a, [r]); } for ( s = Array.isArray(s) ? s : [s], o = 0; o < s.length - 1; o++ ) l(s[o]); return (i = l(s[o])), void 0 !== n ? n : i; }, purge: function (t) { return ( delete t._ev, delete t.on, delete t.once, delete t.removeListener, delete t.removeAllListeners, delete t.emit, delete t._ev, delete t._internalEv, delete t._internalOn, delete t._internalOnce, delete t._removeInternalListener, delete t._removeAllInternalListeners, t ); }, }; e.exports = i; }, { events: 84 }, ], 505: [ function (t, e, r) { "use strict"; var n = t("./is_plain_object.js"), i = Array.isArray; function a(t, e, r, o) { var s, l, c, u, f, h, p = t[0], d = t.length; if (2 === d && i(p) && i(t[1]) && 0 === p.length) { if ( (function (t, e) { var r, n; for (r = 0; r < t.length; r++) { if (null !== (n = t[r]) && "object" == typeof n) return !1; void 0 !== n && (e[r] = n); } return !0; })(t[1], p) ) return p; p.splice(0, p.length); } for (var m = 1; m < d; m++) for (l in (s = t[m])) (c = p[l]), (u = s[l]), o && i(u) ? (p[l] = u) : e && u && (n(u) || (f = i(u))) ? (f ? ((f = !1), (h = c && i(c) ? c : [])) : (h = c && n(c) ? c : {}), (p[l] = a([h, u], e, r, o))) : (void 0 !== u || r) && (p[l] = u); return p; } (r.extendFlat = function () { return a(arguments, !1, !1, !1); }), (r.extendDeep = function () { return a(arguments, !0, !1, !1); }), (r.extendDeepAll = function () { return a(arguments, !0, !0, !1); }), (r.extendDeepNoArrays = function () { return a(arguments, !0, !1, !0); }); }, { "./is_plain_object.js": 516 }, ], 506: [ function (t, e, r) { "use strict"; e.exports = function (t) { for (var e = {}, r = [], n = 0, i = 0; i < t.length; i++) { var a = t[i]; 1 !== e[a] && ((e[a] = 1), (r[n++] = a)); } return r; }; }, {}, ], 507: [ function (t, e, r) { "use strict"; function n(t) { return !0 === t.visible; } function i(t) { var e = t[0].trace; return !0 === e.visible && 0 !== e._length; } e.exports = function (t) { for ( var e, r = ((e = t), Array.isArray(e) && Array.isArray(e[0]) && e[0][0] && e[0][0].trace ? i : n), a = [], o = 0; o < t.length; o++ ) { var s = t[o]; r(s) && a.push(s); } return a; }; }, {}, ], 508: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("country-regex"), a = t("@turf/area"), o = t("@turf/centroid"), s = t("@turf/bbox"), l = t("./identity"), c = t("./loggers"), u = t("./is_plain_object"), f = t("./nested_property"), h = t("./polygon"), p = Object.keys(i), d = { "ISO-3": l, "USA-states": l, "country names": function (t) { for (var e = 0; e < p.length; e++) { var r = p[e]; if (new RegExp(i[r]).test(t.trim().toLowerCase())) return r; } return ( c.log("Unrecognized country name: " + t + "."), !1 ); }, }; function m(t) { var e = t.geojson, r = window.PlotlyGeoAssets || {}, n = "string" == typeof e ? r[e] : e; return u(n) ? n : (c.error( "Oops ... something went wrong when fetching " + e, ), !1); } e.exports = { locationToFeature: function (t, e, r) { if (!e || "string" != typeof e) return !1; var n, i, a, o = d[t](e); if (o) { if ("USA-states" === t) for (n = [], a = 0; a < r.length; a++) (i = r[a]).properties && i.properties.gu && "USA" === i.properties.gu && n.push(i); else n = r; for (a = 0; a < n.length; a++) if ((i = n[a]).id === o) return i; c.log( [ "Location with id", o, "does not have a matching topojson feature at this resolution.", ].join(" "), ); } return !1; }, feature2polygons: function (t) { var e, r, n, i, a = t.geometry, o = a.coordinates, s = t.id, l = []; function c(t) { for (var e = 0; e < t.length - 1; e++) if (t[e][0] > 0 && t[e + 1][0] < 0) return e; return null; } switch ( ((e = "RUS" === s || "FJI" === s ? function (t) { var e; if (null === c(t)) e = t; else for ( e = new Array(t.length), i = 0; i < t.length; i++ ) e[i] = [ t[i][0] < 0 ? t[i][0] + 360 : t[i][0], t[i][1], ]; l.push(h.tester(e)); } : "ATA" === s ? function (t) { var e = c(t); if (null === e) return l.push(h.tester(t)); var r = new Array(t.length + 1), n = 0; for (i = 0; i < t.length; i++) i > e ? (r[n++] = [t[i][0] + 360, t[i][1]]) : i === e ? ((r[n++] = t[i]), (r[n++] = [t[i][0], -90])) : (r[n++] = t[i]); var a = h.tester(r); a.pts.pop(), l.push(a); } : function (t) { l.push(h.tester(t)); }), a.type) ) { case "MultiPolygon": for (r = 0; r < o.length; r++) for (n = 0; n < o[r].length; n++) e(o[r][n]); break; case "Polygon": for (r = 0; r < o.length; r++) e(o[r]); } return l; }, getTraceGeojson: m, extractTraceFeature: function (t) { var e = t[0].trace, r = m(e); if (!r) return !1; var n, i = {}, s = []; for (n = 0; n < e._length; n++) { var l = t[n]; (l.loc || 0 === l.loc) && (i[l.loc] = l); } function u(t) { var r = f(t, e.featureidkey || "id").get(), n = i[r]; if (n) { var l = t.geometry; if ( "Polygon" === l.type || "MultiPolygon" === l.type ) { var u = { type: "Feature", id: r, geometry: l, properties: {}, }; (u.properties.ct = (function (t) { var e, r = t.geometry; if ("MultiPolygon" === r.type) for ( var n = r.coordinates, i = 0, s = 0; s < n.length; s++ ) { var l = { type: "Polygon", coordinates: n[s], }, c = a.default(l); c > i && ((i = c), (e = l)); } else e = r; return o.default(e).geometry.coordinates; })(u)), (n.fIn = t), (n.fOut = u), s.push(u); } else c.log( [ "Location", n.loc, "does not have a valid GeoJSON geometry.", "Traces with locationmode *geojson-id* only support", "*Polygon* and *MultiPolygon* geometries.", ].join(" "), ); } delete i[r]; } switch (r.type) { case "FeatureCollection": var h = r.features; for (n = 0; n < h.length; n++) u(h[n]); break; case "Feature": u(r); break; default: return ( c.warn( [ "Invalid GeoJSON type", (r.type || "none") + ".", "Traces with locationmode *geojson-id* only support", "*FeatureCollection* and *Feature* types.", ].join(" "), ), !1 ); } for (var p in i) c.log( [ "Location *" + p + "*", "does not have a matching feature with id-key", "*" + e.featureidkey + "*.", ].join(" "), ); return s; }, fetchTraceGeoData: function (t) { var e = window.PlotlyGeoAssets || {}, r = []; function i(t) { return new Promise(function (r, i) { n.json(t, function (n, a) { if (n) { delete e[t]; var o = 404 === n.status ? 'GeoJSON at URL "' + t + '" does not exist.' : "Unexpected error while fetching from " + t; return i(new Error(o)); } return (e[t] = a), r(a); }); }); } function a(t) { return new Promise(function (r, n) { var i = 0, a = setInterval(function () { return e[t] && "pending" !== e[t] ? (clearInterval(a), r(e[t])) : i > 100 ? (clearInterval(a), n( "Unexpected error while fetching from " + t, )) : void i++; }, 50); }); } for (var o = 0; o < t.length; o++) { var s = t[o][0].trace.geojson; "string" == typeof s && (e[s] ? "pending" === e[s] && r.push(a(s)) : ((e[s] = "pending"), r.push(i(s)))); } return r; }, computeBbox: function (t) { return s.default(t); }, }; }, { "./identity": 513, "./is_plain_object": 516, "./loggers": 519, "./nested_property": 523, "./polygon": 527, "@plotly/d3": 58, "@turf/area": 61, "@turf/bbox": 64, "@turf/centroid": 67, "country-regex": 94, }, ], 509: [ function (t, e, r) { "use strict"; var n = t("../constants/numerical").BADNUM; (r.calcTraceToLineCoords = function (t) { for ( var e = t[0].trace.connectgaps, r = [], i = [], a = 0; a < t.length; a++ ) { var o = t[a].lonlat; o[0] !== n ? i.push(o) : !e && i.length > 0 && (r.push(i), (i = [])); } return i.length > 0 && r.push(i), r; }), (r.makeLine = function (t) { return 1 === t.length ? { type: "LineString", coordinates: t[0] } : { type: "MultiLineString", coordinates: t }; }), (r.makePolygon = function (t) { if (1 === t.length) return { type: "Polygon", coordinates: t }; for ( var e = new Array(t.length), r = 0; r < t.length; r++ ) e[r] = [t[r]]; return { type: "MultiPolygon", coordinates: e }; }), (r.makeBlank = function () { return { type: "Point", coordinates: [] }; }); }, { "../constants/numerical": 491 }, ], 510: [ function (t, e, r) { "use strict"; var n, i, a, o = t("./mod").mod; function s(t, e, r, n, i, a, o, s) { var l = r - t, c = i - t, u = o - i, f = n - e, h = a - e, p = s - a, d = l * p - u * f; if (0 === d) return null; var m = (c * p - u * h) / d, g = (c * f - l * h) / d; return g < 0 || g > 1 || m < 0 || m > 1 ? null : { x: t + l * m, y: e + f * m }; } function l(t, e, r, n, i) { var a = n * t + i * e; if (a < 0) return n * n + i * i; if (a > r) { var o = n - t, s = i - e; return o * o + s * s; } var l = n * e - i * t; return (l * l) / r; } (r.segmentsIntersect = s), (r.segmentDistance = function (t, e, r, n, i, a, o, c) { if (s(t, e, r, n, i, a, o, c)) return 0; var u = r - t, f = n - e, h = o - i, p = c - a, d = u * u + f * f, m = h * h + p * p, g = Math.min( l(u, f, d, i - t, a - e), l(u, f, d, o - t, c - e), l(h, p, m, t - i, e - a), l(h, p, m, r - i, n - a), ); return Math.sqrt(g); }), (r.getTextLocation = function (t, e, r, s) { if ( ((t === i && s === a) || ((n = {}), (i = t), (a = s)), n[r]) ) return n[r]; var l = t.getPointAtLength(o(r - s / 2, e)), c = t.getPointAtLength(o(r + s / 2, e)), u = Math.atan((c.y - l.y) / (c.x - l.x)), f = t.getPointAtLength(o(r, e)), h = { x: (4 * f.x + l.x + c.x) / 6, y: (4 * f.y + l.y + c.y) / 6, theta: u, }; return (n[r] = h), h; }), (r.clearLocationCache = function () { i = null; }), (r.getVisibleSegment = function (t, e, r) { var n, i, a = e.left, o = e.right, s = e.top, l = e.bottom, c = 0, u = t.getTotalLength(), f = u; function h(e) { var r = t.getPointAtLength(e); 0 === e ? (n = r) : e === u && (i = r); var c = r.x < a ? a - r.x : r.x > o ? r.x - o : 0, f = r.y < s ? s - r.y : r.y > l ? r.y - l : 0; return Math.sqrt(c * c + f * f); } for (var p = h(c); p; ) { if ((c += p + r) > f) return; p = h(c); } for (p = h(f); p; ) { if (c > (f -= p + r)) return; p = h(f); } return { min: c, max: f, len: f - c, total: u, isClosed: 0 === c && f === u && Math.abs(n.x - i.x) < 0.1 && Math.abs(n.y - i.y) < 0.1, }; }), (r.findPointOnPath = function (t, e, r, n) { for ( var i, a, o, s = (n = n || {}).pathLength || t.getTotalLength(), l = n.tolerance || 0.001, c = n.iterationLimit || 30, u = t.getPointAtLength(0)[r] > t.getPointAtLength(s)[r] ? -1 : 1, f = 0, h = 0, p = s; f < c; ) { if ( ((i = (h + p) / 2), (o = (a = t.getPointAtLength(i))[r] - e), Math.abs(o) < l) ) return a; u * o > 0 ? (p = i) : (h = i), f++; } return a; }); }, { "./mod": 522 }, ], 511: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("tinycolor2"), a = t("color-normalize"), o = t("../components/colorscale"), s = t("../components/color/attributes").defaultLine, l = t("./array").isArrayOrTypedArray, c = a(s); function u(t, e) { var r = t; return (r[3] *= e), r; } function f(t) { if (n(t)) return c; var e = a(t); return e.length ? e : c; } function h(t) { return n(t) ? t : 1; } e.exports = { formatColor: function (t, e, r) { var n, i, s, p, d, m = t.color, g = l(m), v = l(e), y = o.extractOpts(t), x = []; if ( ((n = void 0 !== y.colorscale ? o.makeColorScaleFuncFromTrace(t) : f), (i = g ? function (t, e) { return void 0 === t[e] ? c : a(n(t[e])); } : f), (s = v ? function (t, e) { return void 0 === t[e] ? 1 : h(t[e]); } : h), g || v) ) for (var b = 0; b < r; b++) (p = i(m, b)), (d = s(e, b)), (x[b] = u(p, d)); else x = u(a(m), e); return x; }, parseColorScale: function (t) { var e = o.extractOpts(t), r = e.colorscale; return ( e.reversescale && (r = o.flipScale(e.colorscale)), r.map(function (t) { var e = t[0], r = i(t[1]).toRgb(); return { index: e, rgb: [r.r, r.g, r.b, r.a] }; }) ); }, }; }, { "../components/color/attributes": 366, "../components/colorscale": 379, "./array": 497, "color-normalize": 89, "fast-isnumeric": 190, tinycolor2: 313, }, ], 512: [ function (t, e, r) { "use strict"; var n = t("./identity"); function i(t) { return [t]; } e.exports = { keyFun: function (t) { return t.key; }, repeat: i, descend: n, wrap: i, unwrap: function (t) { return t[0]; }, }; }, { "./identity": 513 }, ], 513: [ function (t, e, r) { "use strict"; e.exports = function (t) { return t; }; }, {}, ], 514: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { if (!e) return t; var r = 1 / Math.abs(e), n = r > 1 ? (r * t + r * e) / r : t + e, i = String(n).length; if (i > 16) { var a = String(e).length; if (i >= String(t).length + a) { var o = parseFloat(n).toPrecision(12); -1 === o.indexOf("e+") && (n = +o); } } return n; }; }, {}, ], 515: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("d3-time-format").utcFormat, a = t("d3-format").format, o = t("fast-isnumeric"), s = t("../constants/numerical"), l = s.FP_SAFE, c = -l, u = s.BADNUM, f = (e.exports = {}); f.adjustFormat = function (t) { return !t || /^\d[.]\df/.test(t) || /[.]\d%/.test(t) ? t : "0.f" === t ? "~f" : /^\d%/.test(t) ? "~%" : /^\ds/.test(t) ? "~s" : !/^[~,.0$]/.test(t) && /[&fps]/.test(t) ? "~" + t : t; }; var h = {}; (f.warnBadFormat = function (t) { var e = String(t); h[e] || ((h[e] = 1), f.warn('encountered bad format: "' + e + '"')); }), (f.noFormat = function (t) { return String(t); }), (f.numberFormat = function (t) { var e; try { e = a(f.adjustFormat(t)); } catch (e) { return f.warnBadFormat(t), f.noFormat; } return e; }), (f.nestedProperty = t("./nested_property")), (f.keyedContainer = t("./keyed_container")), (f.relativeAttr = t("./relative_attr")), (f.isPlainObject = t("./is_plain_object")), (f.toLogRange = t("./to_log_range")), (f.relinkPrivateKeys = t("./relink_private")); var p = t("./array"); (f.isTypedArray = p.isTypedArray), (f.isArrayOrTypedArray = p.isArrayOrTypedArray), (f.isArray1D = p.isArray1D), (f.ensureArray = p.ensureArray), (f.concat = p.concat), (f.maxRowLength = p.maxRowLength), (f.minRowLength = p.minRowLength); var d = t("./mod"); (f.mod = d.mod), (f.modHalf = d.modHalf); var m = t("./coerce"); (f.valObjectMeta = m.valObjectMeta), (f.coerce = m.coerce), (f.coerce2 = m.coerce2), (f.coerceFont = m.coerceFont), (f.coercePattern = m.coercePattern), (f.coerceHoverinfo = m.coerceHoverinfo), (f.coerceSelectionMarkerOpacity = m.coerceSelectionMarkerOpacity), (f.validate = m.validate); var g = t("./dates"); (f.dateTime2ms = g.dateTime2ms), (f.isDateTime = g.isDateTime), (f.ms2DateTime = g.ms2DateTime), (f.ms2DateTimeLocal = g.ms2DateTimeLocal), (f.cleanDate = g.cleanDate), (f.isJSDate = g.isJSDate), (f.formatDate = g.formatDate), (f.incrementMonth = g.incrementMonth), (f.dateTick0 = g.dateTick0), (f.dfltRange = g.dfltRange), (f.findExactDates = g.findExactDates), (f.MIN_MS = g.MIN_MS), (f.MAX_MS = g.MAX_MS); var v = t("./search"); (f.findBin = v.findBin), (f.sorterAsc = v.sorterAsc), (f.sorterDes = v.sorterDes), (f.distinctVals = v.distinctVals), (f.roundUp = v.roundUp), (f.sort = v.sort), (f.findIndexOfMin = v.findIndexOfMin), (f.sortObjectKeys = t("./sort_object_keys")); var y = t("./stats"); (f.aggNums = y.aggNums), (f.len = y.len), (f.mean = y.mean), (f.median = y.median), (f.midRange = y.midRange), (f.variance = y.variance), (f.stdev = y.stdev), (f.interp = y.interp); var x = t("./matrix"); (f.init2dArray = x.init2dArray), (f.transposeRagged = x.transposeRagged), (f.dot = x.dot), (f.translationMatrix = x.translationMatrix), (f.rotationMatrix = x.rotationMatrix), (f.rotationXYMatrix = x.rotationXYMatrix), (f.apply3DTransform = x.apply3DTransform), (f.apply2DTransform = x.apply2DTransform), (f.apply2DTransform2 = x.apply2DTransform2), (f.convertCssMatrix = x.convertCssMatrix), (f.inverseTransformMatrix = x.inverseTransformMatrix); var b = t("./angles"); (f.deg2rad = b.deg2rad), (f.rad2deg = b.rad2deg), (f.angleDelta = b.angleDelta), (f.angleDist = b.angleDist), (f.isFullCircle = b.isFullCircle), (f.isAngleInsideSector = b.isAngleInsideSector), (f.isPtInsideSector = b.isPtInsideSector), (f.pathArc = b.pathArc), (f.pathSector = b.pathSector), (f.pathAnnulus = b.pathAnnulus); var _ = t("./anchor_utils"); (f.isLeftAnchor = _.isLeftAnchor), (f.isCenterAnchor = _.isCenterAnchor), (f.isRightAnchor = _.isRightAnchor), (f.isTopAnchor = _.isTopAnchor), (f.isMiddleAnchor = _.isMiddleAnchor), (f.isBottomAnchor = _.isBottomAnchor); var w = t("./geometry2d"); (f.segmentsIntersect = w.segmentsIntersect), (f.segmentDistance = w.segmentDistance), (f.getTextLocation = w.getTextLocation), (f.clearLocationCache = w.clearLocationCache), (f.getVisibleSegment = w.getVisibleSegment), (f.findPointOnPath = w.findPointOnPath); var T = t("./extend"); (f.extendFlat = T.extendFlat), (f.extendDeep = T.extendDeep), (f.extendDeepAll = T.extendDeepAll), (f.extendDeepNoArrays = T.extendDeepNoArrays); var k = t("./loggers"); (f.log = k.log), (f.warn = k.warn), (f.error = k.error); var A = t("./regex"); f.counterRegex = A.counter; var M = t("./throttle"); (f.throttle = M.throttle), (f.throttleDone = M.done), (f.clearThrottle = M.clear); var S = t("./dom"); function E(t) { var e = {}; for (var r in t) for (var n = t[r], i = 0; i < n.length; i++) e[n[i]] = +r; return e; } (f.getGraphDiv = S.getGraphDiv), (f.isPlotDiv = S.isPlotDiv), (f.removeElement = S.removeElement), (f.addStyleRule = S.addStyleRule), (f.addRelatedStyleRule = S.addRelatedStyleRule), (f.deleteRelatedStyleRule = S.deleteRelatedStyleRule), (f.getFullTransformMatrix = S.getFullTransformMatrix), (f.getElementTransformMatrix = S.getElementTransformMatrix), (f.getElementAndAncestors = S.getElementAndAncestors), (f.equalDomRects = S.equalDomRects), (f.clearResponsive = t("./clear_responsive")), (f.preserveDrawingBuffer = t("./preserve_drawing_buffer")), (f.makeTraceGroups = t("./make_trace_groups")), (f._ = t("./localize")), (f.notifier = t("./notifier")), (f.filterUnique = t("./filter_unique")), (f.filterVisible = t("./filter_visible")), (f.pushUnique = t("./push_unique")), (f.increment = t("./increment")), (f.cleanNumber = t("./clean_number")), (f.ensureNumber = function (t) { return o(t) ? ((t = Number(t)) > l || t < c ? u : t) : u; }), (f.isIndex = function (t, e) { return ( !(void 0 !== e && t >= e) && o(t) && t >= 0 && t % 1 == 0 ); }), (f.noop = t("./noop")), (f.identity = t("./identity")), (f.repeat = function (t, e) { for (var r = new Array(e), n = 0; n < e; n++) r[n] = t; return r; }), (f.swapAttrs = function (t, e, r, n) { r || (r = "x"), n || (n = "y"); for (var i = 0; i < e.length; i++) { var a = e[i], o = f.nestedProperty(t, a.replace("?", r)), s = f.nestedProperty(t, a.replace("?", n)), l = o.get(); o.set(s.get()), s.set(l); } }), (f.raiseToTop = function (t) { t.parentNode.appendChild(t); }), (f.cancelTransition = function (t) { return t.transition().duration(0); }), (f.constrain = function (t, e, r) { return e > r ? Math.max(r, Math.min(e, t)) : Math.max(e, Math.min(r, t)); }), (f.bBoxIntersect = function (t, e, r) { return ( (r = r || 0), t.left <= e.right + r && e.left <= t.right + r && t.top <= e.bottom + r && e.top <= t.bottom + r ); }), (f.simpleMap = function (t, e, r, n, i) { for ( var a = t.length, o = new Array(a), s = 0; s < a; s++ ) o[s] = e(t[s], r, n, i); return o; }), (f.randstr = function t(e, r, n, i) { if ((n || (n = 16), void 0 === r && (r = 24), r <= 0)) return "0"; var a, o, s = Math.log(Math.pow(2, r)) / Math.log(n), l = ""; for (a = 2; s === 1 / 0; a *= 2) s = (Math.log(Math.pow(2, r / a)) / Math.log(n)) * a; var c = s - Math.floor(s); for (a = 0; a < Math.floor(s); a++) l = Math.floor(Math.random() * n).toString(n) + l; c && ((o = Math.pow(n, c)), (l = Math.floor(Math.random() * o).toString(n) + l)); var u = parseInt(l, n); return (e && e[l]) || (u !== 1 / 0 && u >= Math.pow(2, r)) ? i > 10 ? (f.warn("randstr failed uniqueness"), l) : t(e, r, n, (i || 0) + 1) : l; }), (f.OptionControl = function (t, e) { t || (t = {}), e || (e = "opt"); var r = { optionList: [], _newoption: function (n) { (n[e] = t), (r[n.name] = n), r.optionList.push(n); }, }; return (r["_" + e] = t), r; }), (f.smooth = function (t, e) { if ((e = Math.round(e) || 0) < 2) return t; var r, n, i, a, o = t.length, s = 2 * o, l = 2 * e - 1, c = new Array(l), u = new Array(o); for (r = 0; r < l; r++) c[r] = (1 - Math.cos((Math.PI * (r + 1)) / e)) / (2 * e); for (r = 0; r < o; r++) { for (a = 0, n = 0; n < l; n++) (i = r + n + 1 - e) < -o ? (i -= s * Math.round(i / s)) : i >= s && (i -= s * Math.floor(i / s)), i < 0 ? (i = -1 - i) : i >= o && (i = s - 1 - i), (a += t[i] * c[n]); u[r] = a; } return u; }), (f.syncOrAsync = function (t, e, r) { var n; function i() { return f.syncOrAsync(t, e, r); } for (; t.length; ) if ((n = (0, t.splice(0, 1)[0])(e)) && n.then) return n.then(i); return r && r(e); }), (f.stripTrailingSlash = function (t) { return "/" === t.substr(-1) ? t.substr(0, t.length - 1) : t; }), (f.noneOrAll = function (t, e, r) { if (t) { var n, i = !1, a = !0; for (n = 0; n < r.length; n++) null != t[r[n]] ? (i = !0) : (a = !1); if (i && !a) for (n = 0; n < r.length; n++) t[r[n]] = e[r[n]]; } }), (f.mergeArray = function (t, e, r, n) { var i = "function" == typeof n; if (f.isArrayOrTypedArray(t)) for ( var a = Math.min(t.length, e.length), o = 0; o < a; o++ ) { var s = t[o]; e[o][r] = i ? n(s) : s; } }), (f.mergeArrayCastPositive = function (t, e, r) { return f.mergeArray(t, e, r, function (t) { var e = +t; return isFinite(e) && e > 0 ? e : 0; }); }), (f.fillArray = function (t, e, r, n) { if (((n = n || f.identity), f.isArrayOrTypedArray(t))) for (var i = 0; i < e.length; i++) e[i][r] = n(t[i]); }), (f.castOption = function (t, e, r, n) { n = n || f.identity; var i = f.nestedProperty(t, r).get(); return f.isArrayOrTypedArray(i) ? Array.isArray(e) && f.isArrayOrTypedArray(i[e[0]]) ? n(i[e[0]][e[1]]) : n(i[e]) : i; }), (f.extractOption = function (t, e, r, n) { if (r in t) return t[r]; var i = f.nestedProperty(e, n).get(); return Array.isArray(i) ? void 0 : i; }), (f.tagSelected = function (t, e, r) { var n, i, a = e.selectedpoints, o = e._indexToPoints; o && (n = E(o)); for (var s = 0; s < a.length; s++) { var l = a[s]; if ( f.isIndex(l) || (f.isArrayOrTypedArray(l) && f.isIndex(l[0]) && f.isIndex(l[1])) ) { var c = n ? n[l] : l, u = r ? r[c] : c; void 0 !== (i = u) && i < t.length && (t[u].selected = 1); } } }), (f.selIndices2selPoints = function (t) { var e = t.selectedpoints, r = t._indexToPoints; if (r) { for (var n = E(r), i = [], a = 0; a < e.length; a++) { var o = e[a]; if (f.isIndex(o)) { var s = n[o]; f.isIndex(s) && i.push(s); } } return i; } return e; }), (f.getTargetArray = function (t, e) { var r = e.target; if ("string" == typeof r && r) { var n = f.nestedProperty(t, r).get(); return !!Array.isArray(n) && n; } return !!Array.isArray(r) && r; }), (f.minExtend = function (t, e) { var r = {}; "object" != typeof e && (e = {}); var n, i, a, o = Object.keys(t); for (n = 0; n < o.length; n++) (a = t[(i = o[n])]), "_" !== i.charAt(0) && "function" != typeof a && ("module" === i ? (r[i] = a) : Array.isArray(a) ? (r[i] = "colorscale" === i ? a.slice() : a.slice(0, 3)) : f.isTypedArray(a) ? (r[i] = a.subarray(0, 3)) : (r[i] = a && "object" == typeof a ? f.minExtend(t[i], e[i]) : a)); for (o = Object.keys(e), n = 0; n < o.length; n++) ("object" == typeof (a = e[(i = o[n])]) && i in r && "object" == typeof r[i]) || (r[i] = a); return r; }), (f.titleCase = function (t) { return t.charAt(0).toUpperCase() + t.substr(1); }), (f.containsAny = function (t, e) { for (var r = 0; r < e.length; r++) if (-1 !== t.indexOf(e[r])) return !0; return !1; }), (f.isIE = function () { return void 0 !== window.navigator.msSaveBlob; }); var L = /Version\/[\d\.]+.*Safari/; f.isSafari = function () { return L.test(window.navigator.userAgent); }; var C = /iPad|iPhone|iPod/; f.isIOS = function () { return C.test(window.navigator.userAgent); }; var P = /Firefox\/(\d+)\.\d+/; (f.getFirefoxVersion = function () { var t = P.exec(window.navigator.userAgent); if (t && 2 === t.length) { var e = parseInt(t[1]); if (!isNaN(e)) return e; } return null; }), (f.isD3Selection = function (t) { return t instanceof n.selection; }), (f.ensureSingle = function (t, e, r, n) { var i = t.select(e + (r ? "." + r : "")); if (i.size()) return i; var a = t.append(e); return r && a.classed(r, !0), n && a.call(n), a; }), (f.ensureSingleById = function (t, e, r, n) { var i = t.select(e + "#" + r); if (i.size()) return i; var a = t.append(e).attr("id", r); return n && a.call(n), a; }), (f.objectFromPath = function (t, e) { for ( var r, n = t.split("."), i = (r = {}), a = 0; a < n.length; a++ ) { var o = n[a], s = null, l = n[a].match(/(.*)\[([0-9]+)\]/); l ? ((o = l[1]), (s = l[2]), (r = r[o] = []), a === n.length - 1 ? (r[s] = e) : (r[s] = {}), (r = r[s])) : (a === n.length - 1 ? (r[o] = e) : (r[o] = {}), (r = r[o])); } return i; }); var I = /^([^\[\.]+)\.(.+)?/, O = /^([^\.]+)\[([0-9]+)\](\.)?(.+)?/; (f.expandObjectPaths = function (t) { var e, r, n, i, a, o, s; if ("object" == typeof t && !Array.isArray(t)) for (r in t) t.hasOwnProperty(r) && ((e = r.match(I)) ? ((i = t[r]), (n = e[1]), delete t[r], (t[n] = f.extendDeepNoArrays( t[n] || {}, f.objectFromPath(r, f.expandObjectPaths(i))[n], ))) : (e = r.match(O)) ? ((i = t[r]), (n = e[1]), (a = parseInt(e[2])), delete t[r], (t[n] = t[n] || []), "." === e[3] ? ((s = e[4]), (o = t[n][a] = t[n][a] || {}), f.extendDeepNoArrays( o, f.objectFromPath( s, f.expandObjectPaths(i), ), )) : (t[n][a] = f.expandObjectPaths(i))) : (t[r] = f.expandObjectPaths(t[r]))); return t; }), (f.numSeparate = function (t, e, r) { if ( (r || (r = !1), "string" != typeof e || 0 === e.length) ) throw new Error( "Separator string required for formatting!", ); "number" == typeof t && (t = String(t)); var n = /(\d+)(\d{3})/, i = e.charAt(0), a = e.charAt(1), o = t.split("."), s = o[0], l = o.length > 1 ? i + o[1] : ""; if (a && (o.length > 1 || s.length > 4 || r)) for (; n.test(s); ) s = s.replace(n, "$1" + a + "$2"); return s + l; }), (f.TEMPLATE_STRING_REGEX = /%{([^\s%{}:]*)([:|\|][^}]*)?}/g); var z = /^\w*$/; f.templateString = function (t, e) { var r = {}; return t.replace(f.TEMPLATE_STRING_REGEX, function (t, n) { var i; return ( z.test(n) ? (i = e[n]) : ((r[n] = r[n] || f.nestedProperty(e, n).get), (i = r[n]())), f.isValidTextValue(i) ? i : "" ); }); }; var D = { max: 10, count: 0, name: "hovertemplate" }; f.hovertemplateString = function () { return B.apply(D, arguments); }; var R = { max: 10, count: 0, name: "texttemplate" }; f.texttemplateString = function () { return B.apply(R, arguments); }; var F = /^[:|\|]/; function B(t, e, r) { var n = this, a = arguments; e || (e = {}); var o = {}; return t.replace( f.TEMPLATE_STRING_REGEX, function (t, s, l) { var c, u, h, p = "_xother" === s || "_yother" === s, d = "_xother_" === s || "_yother_" === s, m = "xother_" === s || "yother_" === s, g = "xother" === s || "yother" === s || p || m || d, v = s; if ( ((p || d) && (v = v.substring(1)), (m || d) && (v = v.substring(0, v.length - 1)), g) ) { if (void 0 === (c = e[v])) return ""; } else for (h = 3; h < a.length; h++) if ((u = a[h])) { if (u.hasOwnProperty(v)) { c = u[v]; break; } if ( (z.test(v) || ((c = f.nestedProperty(u, v).get()), (c = o[v] || f.nestedProperty(u, v).get()) && (o[v] = c)), void 0 !== c) ) break; } if (void 0 === c && n) return ( n.count < n.max && (f.warn( "Variable '" + v + "' in " + n.name + " could not be found!", ), (c = t)), n.count === n.max && f.warn( "Too many " + n.name + " warnings - additional warnings will be suppressed", ), n.count++, t ); if (l) { var y; if ( (":" === l[0] && (c = (y = r ? r.numberFormat : f.numberFormat)( l.replace(F, ""), )(c)), "|" === l[0]) ) { y = r ? r.timeFormat : i; var x = f.dateTime2ms(c); c = f.formatDate(x, l.replace(F, ""), !1, y); } } else { var b = v + "Label"; e.hasOwnProperty(b) && (c = e[b]); } return ( g && ((c = "(" + c + ")"), (p || d) && (c = " " + c), (m || d) && (c += " ")), c ); }, ); } f.subplotSort = function (t, e) { for ( var r = Math.min(t.length, e.length) + 1, n = 0, i = 0, a = 0; a < r; a++ ) { var o = t.charCodeAt(a) || 0, s = e.charCodeAt(a) || 0, l = o >= 48 && o <= 57, c = s >= 48 && s <= 57; if ( (l && (n = 10 * n + o - 48), c && (i = 10 * i + s - 48), !l || !c) ) { if (n !== i) return n - i; if (o !== s) return o - s; } } return i - n; }; var N = 2e9; (f.seedPseudoRandom = function () { N = 2e9; }), (f.pseudoRandom = function () { var t = N; return ( (N = (69069 * N + 1) % 4294967296), Math.abs(N - t) < 429496729 ? f.pseudoRandom() : N / 4294967296 ); }), (f.fillText = function (t, e, r) { var n = Array.isArray(r) ? function (t) { r.push(t); } : function (t) { r.text = t; }, i = f.extractOption(t, e, "htx", "hovertext"); if (f.isValidTextValue(i)) return n(i); var a = f.extractOption(t, e, "tx", "text"); return f.isValidTextValue(a) ? n(a) : void 0; }), (f.isValidTextValue = function (t) { return t || 0 === t; }), (f.formatPercent = function (t, e) { e = e || 0; for ( var r = ( Math.round(100 * t * Math.pow(10, e)) * Math.pow(0.1, e) ).toFixed(e) + "%", n = 0; n < e; n++ ) -1 !== r.indexOf(".") && (r = (r = r.replace("0%", "%")).replace(".%", "%")); return r; }), (f.isHidden = function (t) { var e = window.getComputedStyle(t).display; return !e || "none" === e; }), (f.strTranslate = function (t, e) { return t || e ? "translate(" + t + "," + e + ")" : ""; }), (f.strRotate = function (t) { return t ? "rotate(" + t + ")" : ""; }), (f.strScale = function (t) { return 1 !== t ? "scale(" + t + ")" : ""; }), (f.getTextTransform = function (t) { var e = t.noCenter, r = t.textX, n = t.textY, i = t.targetX, a = t.targetY, o = t.anchorX || 0, s = t.anchorY || 0, l = t.rotate, c = t.scale; return ( c ? c > 1 && (c = 1) : (c = 0), f.strTranslate(i - c * (r + o), a - c * (n + s)) + f.strScale(c) + (l ? "rotate(" + l + (e ? "" : " " + r + " " + n) + ")" : "") ); }), (f.setTransormAndDisplay = function (t, e) { t.attr("transform", f.getTextTransform(e)), t.style("display", e.scale ? null : "none"); }), (f.ensureUniformFontSize = function (t, e) { var r = f.extendFlat({}, e); return ( (r.size = Math.max( e.size, t._fullLayout.uniformtext.minsize || 0, )), r ); }), (f.join2 = function (t, e, r) { var n = t.length; return n > 1 ? t.slice(0, -1).join(e) + r + t[n - 1] : t.join(e); }), (f.bigFont = function (t) { return Math.round(1.2 * t); }); var j = f.getFirefoxVersion(), U = null !== j && j < 86; f.getPositionFromD3Event = function () { return U ? [n.event.layerX, n.event.layerY] : [n.event.offsetX, n.event.offsetY]; }; }, { "../constants/numerical": 491, "./anchor_utils": 495, "./angles": 496, "./array": 497, "./clean_number": 498, "./clear_responsive": 500, "./coerce": 501, "./dates": 502, "./dom": 503, "./extend": 505, "./filter_unique": 506, "./filter_visible": 507, "./geometry2d": 510, "./identity": 513, "./increment": 514, "./is_plain_object": 516, "./keyed_container": 517, "./localize": 518, "./loggers": 519, "./make_trace_groups": 520, "./matrix": 521, "./mod": 522, "./nested_property": 523, "./noop": 524, "./notifier": 525, "./preserve_drawing_buffer": 529, "./push_unique": 530, "./regex": 532, "./relative_attr": 533, "./relink_private": 534, "./search": 535, "./sort_object_keys": 538, "./stats": 539, "./throttle": 542, "./to_log_range": 543, "@plotly/d3": 58, "d3-format": 112, "d3-time-format": 120, "fast-isnumeric": 190, }, ], 516: [ function (t, e, r) { "use strict"; e.exports = function (t) { return window && window.process && window.process.versions ? "[object Object]" === Object.prototype.toString.call(t) : "[object Object]" === Object.prototype.toString.call(t) && Object.getPrototypeOf(t).hasOwnProperty( "hasOwnProperty", ); }; }, {}, ], 517: [ function (t, e, r) { "use strict"; var n = t("./nested_property"), i = /^\w*$/; e.exports = function (t, e, r, a) { var o, s, l; (r = r || "name"), (a = a || "value"); var c = {}; e && e.length ? ((l = n(t, e)), (s = l.get())) : (s = t), (e = e || ""); var u = {}; if (s) for (o = 0; o < s.length; o++) u[s[o][r]] = o; var f = i.test(a), h = { set: function (t, e) { var i = null === e ? 4 : 0; if (!s) { if (!l || 4 === i) return; (s = []), l.set(s); } var o = u[t]; if (void 0 === o) { if (4 === i) return; (i |= 3), (o = s.length), (u[t] = o); } else e !== (f ? s[o][a] : n(s[o], a).get()) && (i |= 2); var p = (s[o] = s[o] || {}); return ( (p[r] = t), f ? (p[a] = e) : n(p, a).set(e), null !== e && (i &= -5), (c[o] = c[o] | i), h ); }, get: function (t) { if (s) { var e = u[t]; return void 0 === e ? void 0 : f ? s[e][a] : n(s[e], a).get(); } }, rename: function (t, e) { var n = u[t]; return ( void 0 === n || ((c[n] = 1 | c[n]), (u[e] = n), delete u[t], (s[n][r] = e)), h ); }, remove: function (t) { var e = u[t]; if (void 0 === e) return h; var i = s[e]; if (Object.keys(i).length > 2) return (c[e] = 2 | c[e]), h.set(t, null); if (f) { for (o = e; o < s.length; o++) c[o] = 3 | c[o]; for (o = e; o < s.length; o++) u[s[o][r]]--; s.splice(e, 1), delete u[t]; } else n(i, a).set(null), (c[e] = 6 | c[e]); return h; }, constructUpdate: function () { for ( var t, i, o = {}, l = Object.keys(c), u = 0; u < l.length; u++ ) (i = l[u]), (t = e + "[" + i + "]"), s[i] ? (1 & c[i] && (o[t + "." + r] = s[i][r]), 2 & c[i] && (o[t + "." + a] = f ? 4 & c[i] ? null : s[i][a] : 4 & c[i] ? null : n(s[i], a).get())) : (o[t] = null); return o; }, }; return h; }; }, { "./nested_property": 523 }, ], 518: [ function (t, e, r) { "use strict"; var n = t("../registry"); e.exports = function (t, e) { for (var r = t._context.locale, i = 0; i < 2; i++) { for (var a = t._context.locales, o = 0; o < 2; o++) { var s = (a[r] || {}).dictionary; if (s) { var l = s[e]; if (l) return l; } a = n.localeRegistry; } var c = r.split("-")[0]; if (c === r) break; r = c; } return e; }; }, { "../registry": 647 }, ], 519: [ function (t, e, r) { "use strict"; var n = t("../plot_api/plot_config").dfltConfig, i = t("./notifier"), a = (e.exports = {}); (a.log = function () { var t; if (n.logging > 1) { var e = ["LOG:"]; for (t = 0; t < arguments.length; t++) e.push(arguments[t]); console.trace.apply(console, e); } if (n.notifyOnLogging > 1) { var r = []; for (t = 0; t < arguments.length; t++) r.push(arguments[t]); i(r.join("
"), "long"); } }), (a.warn = function () { var t; if (n.logging > 0) { var e = ["WARN:"]; for (t = 0; t < arguments.length; t++) e.push(arguments[t]); console.trace.apply(console, e); } if (n.notifyOnLogging > 0) { var r = []; for (t = 0; t < arguments.length; t++) r.push(arguments[t]); i(r.join("
"), "stick"); } }), (a.error = function () { var t; if (n.logging > 0) { var e = ["ERROR:"]; for (t = 0; t < arguments.length; t++) e.push(arguments[t]); console.error.apply(console, e); } if (n.notifyOnLogging > 0) { var r = []; for (t = 0; t < arguments.length; t++) r.push(arguments[t]); i(r.join("
"), "stick"); } }); }, { "../plot_api/plot_config": 553, "./notifier": 525 }, ], 520: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"); e.exports = function (t, e, r) { var i = t .selectAll("g." + r.replace(/\s/g, ".")) .data(e, function (t) { return t[0].trace.uid; }); i.exit().remove(), i.enter().append("g").attr("class", r), i.order(); var a = t.classed("rangeplot") ? "nodeRangePlot3" : "node3"; return ( i.each(function (t) { t[0][a] = n.select(this); }), i ); }; }, { "@plotly/d3": 58 }, ], 521: [ function (t, e, r) { "use strict"; var n = t("gl-mat4"); (r.init2dArray = function (t, e) { for (var r = new Array(t), n = 0; n < t; n++) r[n] = new Array(e); return r; }), (r.transposeRagged = function (t) { var e, r, n = 0, i = t.length; for (e = 0; e < i; e++) n = Math.max(n, t[e].length); var a = new Array(n); for (e = 0; e < n; e++) for (a[e] = new Array(i), r = 0; r < i; r++) a[e][r] = t[r][e]; return a; }), (r.dot = function (t, e) { if (!t.length || !e.length || t.length !== e.length) return null; var n, i, a = t.length; if (t[0].length) for (n = new Array(a), i = 0; i < a; i++) n[i] = r.dot(t[i], e); else if (e[0].length) { var o = r.transposeRagged(e); for (n = new Array(o.length), i = 0; i < o.length; i++) n[i] = r.dot(t, o[i]); } else for (n = 0, i = 0; i < a; i++) n += t[i] * e[i]; return n; }), (r.translationMatrix = function (t, e) { return [ [1, 0, t], [0, 1, e], [0, 0, 1], ]; }), (r.rotationMatrix = function (t) { var e = (t * Math.PI) / 180; return [ [Math.cos(e), -Math.sin(e), 0], [Math.sin(e), Math.cos(e), 0], [0, 0, 1], ]; }), (r.rotationXYMatrix = function (t, e, n) { return r.dot( r.dot(r.translationMatrix(e, n), r.rotationMatrix(t)), r.translationMatrix(-e, -n), ); }), (r.apply3DTransform = function (t) { return function () { var e = arguments, n = 1 === arguments.length ? e[0] : [e[0], e[1], e[2] || 0]; return r.dot(t, [n[0], n[1], n[2], 1]).slice(0, 3); }; }), (r.apply2DTransform = function (t) { return function () { var e = arguments; 3 === e.length && (e = e[0]); var n = 1 === arguments.length ? e[0] : [e[0], e[1]]; return r.dot(t, [n[0], n[1], 1]).slice(0, 2); }; }), (r.apply2DTransform2 = function (t) { var e = r.apply2DTransform(t); return function (t) { return e(t.slice(0, 2)).concat(e(t.slice(2, 4))); }; }), (r.convertCssMatrix = function (t) { if (t) { var e = t.length; if (16 === e) return t; if (6 === e) return [ t[0], t[1], 0, 0, t[2], t[3], 0, 0, 0, 0, 1, 0, t[4], t[5], 0, 1, ]; } return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; }), (r.inverseTransformMatrix = function (t) { var e = []; return ( n.invert(e, t), [ [e[0], e[1], e[2], e[3]], [e[4], e[5], e[6], e[7]], [e[8], e[9], e[10], e[11]], [e[12], e[13], e[14], e[15]], ] ); }); }, { "gl-mat4": 210 }, ], 522: [ function (t, e, r) { "use strict"; e.exports = { mod: function (t, e) { var r = t % e; return r < 0 ? r + e : r; }, modHalf: function (t, e) { return Math.abs(t) > e / 2 ? t - Math.round(t / e) * e : t; }, }; }, {}, ], 523: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("./array").isArrayOrTypedArray; function a(t, e) { return function () { var r, n, o, s, l, c = t; for (s = 0; s < e.length - 1; s++) { if (-1 === (r = e[s])) { for (n = !0, o = [], l = 0; l < c.length; l++) (o[l] = a(c[l], e.slice(s + 1))()), o[l] !== o[0] && (n = !1); return n ? o[0] : o; } if ("number" == typeof r && !i(c)) return; if ("object" != typeof (c = c[r]) || null === c) return; } if ( "object" == typeof c && null !== c && null !== (o = c[e[s]]) ) return o; }; } e.exports = function (t, e) { if (n(e)) e = String(e); else if ( "string" != typeof e || "[-1]" === e.substr(e.length - 4) ) throw "bad property string"; for (var r, i, o, s = 0, c = e.split("."); s < c.length; ) { if ( (r = String(c[s]).match( /^([^\[\]]*)((\[\-?[0-9]*\])+)$/, )) ) { if (r[1]) c[s] = r[1]; else { if (0 !== s) throw "bad property string"; c.splice(0, 1); } for ( i = r[2].substr(1, r[2].length - 2).split("]["), o = 0; o < i.length; o++ ) s++, c.splice(s, 0, Number(i[o])); } s++; } return "object" != typeof t ? (function (t, e, r) { return { set: function () { throw "bad container"; }, get: function () {}, astr: e, parts: r, obj: t, }; })(t, e, c) : { set: l(t, c, e), get: a(t, c), astr: e, parts: c, obj: t, }; }; var o = /(^|\.)args\[/; function s(t, e) { return void 0 === t || (null === t && !e.match(o)); } function l(t, e, r) { return function (n) { var a, o, l = t, h = "", p = [[t, h]], d = s(n, r); for (o = 0; o < e.length - 1; o++) { if ("number" == typeof (a = e[o]) && !i(l)) throw "array index but container is not an array"; if (-1 === a) { if ((d = !u(l, e.slice(o + 1), n, r))) break; return; } if (!f(l, a, e[o + 1], d)) break; if ("object" != typeof (l = l[a]) || null === l) throw "container is not an object"; (h = c(h, a)), p.push([l, h]); } if (d) { if ( o === e.length - 1 && (delete l[e[o]], Array.isArray(l) && +e[o] == l.length - 1) ) for (; l.length && void 0 === l[l.length - 1]; ) l.pop(); } else l[e[o]] = n; }; } function c(t, e) { var r = e; return ( n(e) ? (r = "[" + e + "]") : t && (r = "." + e), t + r ); } function u(t, e, r, n) { var a, o = i(r), c = !0, u = r, h = n.replace("-1", 0), p = !o && s(r, h), d = e[0]; for (a = 0; a < t.length; a++) (h = n.replace("-1", a)), o && (p = s((u = r[a % r.length]), h)), p && (c = !1), f(t, a, d, p) && l(t[a], e, n.replace("-1", a))(u); return c; } function f(t, e, r, n) { if (void 0 === t[e]) { if (n) return !1; t[e] = "number" == typeof r ? [] : {}; } return !0; } }, { "./array": 497, "fast-isnumeric": 190 }, ], 524: [ function (t, e, r) { "use strict"; e.exports = function () {}; }, {}, ], 525: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("fast-isnumeric"), a = []; e.exports = function (t, e) { if (-1 === a.indexOf(t)) { a.push(t); var r = 1e3; i(e) ? (r = e) : "long" === e && (r = 3e3); var o = n .select("body") .selectAll(".plotly-notifier") .data([0]); o.enter().append("div").classed("plotly-notifier", !0), o .selectAll(".notifier-note") .data(a) .enter() .append("div") .classed("notifier-note", !0) .style("opacity", 0) .each(function (t) { var i = n.select(this); i.append("button") .classed("notifier-close", !0) .html("×") .on("click", function () { i.transition().call(s); }); for ( var a = i.append("p"), o = t.split(//g), l = 0; l < o.length; l++ ) l && a.append("br"), a.append("span").text(o[l]); "stick" === e ? i.transition().duration(350).style("opacity", 1) : i .transition() .duration(700) .style("opacity", 1) .transition() .delay(r) .call(s); }); } function s(t) { t.duration(700) .style("opacity", 0) .each("end", function (t) { var e = a.indexOf(t); -1 !== e && a.splice(e, 1), n.select(this).remove(); }); } }; }, { "@plotly/d3": 58, "fast-isnumeric": 190 }, ], 526: [ function (t, e, r) { "use strict"; var n = t("./setcursor"), i = "data-savedcursor"; e.exports = function (t, e) { var r = t.attr(i); if (e) { if (!r) { for ( var a = (t.attr("class") || "").split(" "), o = 0; o < a.length; o++ ) { var s = a[o]; 0 === s.indexOf("cursor-") && t.attr(i, s.substr(7)).classed(s, !1); } t.attr(i) || t.attr(i, "!!"); } n(t, e); } else r && (t.attr(i, null), "!!" === r ? n(t) : n(t, r)); }; }, { "./setcursor": 536 }, ], 527: [ function (t, e, r) { "use strict"; var n = t("./matrix").dot, i = t("../constants/numerical").BADNUM, a = (e.exports = {}); (a.tester = function (t) { var e, r = t.slice(), n = r[0][0], a = n, o = r[0][1], s = o; for ( (r[r.length - 1][0] === r[0][0] && r[r.length - 1][1] === r[0][1]) || r.push(r[0]), e = 1; e < r.length; e++ ) (n = Math.min(n, r[e][0])), (a = Math.max(a, r[e][0])), (o = Math.min(o, r[e][1])), (s = Math.max(s, r[e][1])); var l, c = !1; 5 === r.length && (r[0][0] === r[1][0] ? r[2][0] === r[3][0] && r[0][1] === r[3][1] && r[1][1] === r[2][1] && ((c = !0), (l = function (t) { return t[0] === r[0][0]; })) : r[0][1] === r[1][1] && r[2][1] === r[3][1] && r[0][0] === r[3][0] && r[1][0] === r[2][0] && ((c = !0), (l = function (t) { return t[1] === r[0][1]; }))); var u = !0, f = r[0]; for (e = 1; e < r.length; e++) if (f[0] !== r[e][0] || f[1] !== r[e][1]) { u = !1; break; } return { xmin: n, xmax: a, ymin: o, ymax: s, pts: r, contains: c ? function (t, e) { var r = t[0], c = t[1]; return ( !( r === i || r < n || r > a || c === i || c < o || c > s ) && (!e || !l(t)) ); } : function (t, e) { var l = t[0], c = t[1]; if ( l === i || l < n || l > a || c === i || c < o || c > s ) return !1; var u, f, h, p, d, m = r.length, g = r[0][0], v = r[0][1], y = 0; for (u = 1; u < m; u++) if ( ((f = g), (h = v), (g = r[u][0]), (v = r[u][1]), !( l < (p = Math.min(f, g)) || l > Math.max(f, g) || c > Math.max(h, v) )) ) if (c < Math.min(h, v)) l !== p && y++; else { if ( c === (d = g === f ? c : h + ((l - f) * (v - h)) / (g - f)) ) return 1 !== u || !e; c <= d && l !== p && y++; } return y % 2 == 1; }, isRect: c, degenerate: u, }; }), (a.isSegmentBent = function (t, e, r, i) { var a, o, s, l = t[e], c = [t[r][0] - l[0], t[r][1] - l[1]], u = n(c, c), f = Math.sqrt(u), h = [-c[1] / f, c[0] / f]; for (a = e + 1; a < r; a++) if ( ((o = [t[a][0] - l[0], t[a][1] - l[1]]), (s = n(o, c)) < 0 || s > u || Math.abs(n(o, h)) > i) ) return !0; return !1; }), (a.filter = function (t, e) { var r = [t[0]], n = 0, i = 0; function o(o) { t.push(o); var s = r.length, l = n; r.splice(i + 1); for (var c = l + 1; c < t.length; c++) (c === t.length - 1 || a.isSegmentBent(t, l, c + 1, e)) && (r.push(t[c]), r.length < s - 2 && ((n = c), (i = r.length - 1)), (l = c)); } t.length > 1 && o(t.pop()); return { addPt: o, raw: t, filtered: r }; }); }, { "../constants/numerical": 491, "./matrix": 521 }, ], 528: [ function (t, e, r) { (function (r) { (function () { "use strict"; var n = t("./show_no_webgl_msg"), i = t("regl"); e.exports = function (t, e, a) { var o = t._fullLayout, s = !0; return ( o._glcanvas.each(function (n) { if (n.regl) n.regl.preloadCachedCode(a); else if (!n.pick || o._has("parcoords")) { try { n.regl = i({ canvas: this, attributes: { antialias: !n.pick, preserveDrawingBuffer: !0, }, pixelRatio: t._context.plotGlPixelRatio || r.devicePixelRatio, extensions: e || [], cachedCode: a || {}, }); } catch (t) { s = !1; } n.regl || (s = !1), s && this.addEventListener( "webglcontextlost", function (e) { t && t.emit && t.emit("plotly_webglcontextlost", { event: e, layer: n.key, }); }, !1, ); } }), s || n({ container: o._glcontainer.node() }), s ); }; }).call(this); }).call( this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, ); }, { "./show_no_webgl_msg": 537, regl: 284 }, ], 529: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("is-mobile"); e.exports = function (t) { var e; if ( "string" != typeof (e = t && t.hasOwnProperty("userAgent") ? t.userAgent : (function () { var t; "undefined" != typeof navigator && (t = navigator.userAgent); t && t.headers && "string" == typeof t.headers["user-agent"] && (t = t.headers["user-agent"]); return t; })()) ) return !0; var r = i({ ua: { headers: { "user-agent": e } }, tablet: !0, featureDetect: !1, }); if (!r) for (var a = e.split(" "), o = 1; o < a.length; o++) { if (-1 !== a[o].indexOf("Safari")) for (var s = o - 1; s > -1; s--) { var l = a[s]; if ("Version/" === l.substr(0, 8)) { var c = l.substr(8).split(".")[0]; if ((n(c) && (c = +c), c >= 13)) return !0; } } } return r; }; }, { "fast-isnumeric": 190, "is-mobile": 234 }, ], 530: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { if (e instanceof RegExp) { for (var r = e.toString(), n = 0; n < t.length; n++) if (t[n] instanceof RegExp && t[n].toString() === r) return t; t.push(e); } else (!e && 0 !== e) || -1 !== t.indexOf(e) || t.push(e); return t; }; }, {}, ], 531: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("../plot_api/plot_config").dfltConfig; var a = { add: function (t, e, r, n, a) { var o, s; (t.undoQueue = t.undoQueue || { index: 0, queue: [], sequence: !1, }), (s = t.undoQueue.index), t.autoplay ? t.undoQueue.inSequence || (t.autoplay = !1) : (!t.undoQueue.sequence || t.undoQueue.beginSequence ? ((o = { undo: { calls: [], args: [] }, redo: { calls: [], args: [] }, }), t.undoQueue.queue.splice( s, t.undoQueue.queue.length - s, o, ), (t.undoQueue.index += 1)) : (o = t.undoQueue.queue[s - 1]), (t.undoQueue.beginSequence = !1), o && (o.undo.calls.unshift(e), o.undo.args.unshift(r), o.redo.calls.push(n), o.redo.args.push(a)), t.undoQueue.queue.length > i.queueLength && (t.undoQueue.queue.shift(), t.undoQueue.index--)); }, startSequence: function (t) { (t.undoQueue = t.undoQueue || { index: 0, queue: [], sequence: !1, }), (t.undoQueue.sequence = !0), (t.undoQueue.beginSequence = !0); }, stopSequence: function (t) { (t.undoQueue = t.undoQueue || { index: 0, queue: [], sequence: !1, }), (t.undoQueue.sequence = !1), (t.undoQueue.beginSequence = !1); }, undo: function (t) { var e, r; if ( !( void 0 === t.undoQueue || isNaN(t.undoQueue.index) || t.undoQueue.index <= 0 ) ) { for ( t.undoQueue.index--, e = t.undoQueue.queue[t.undoQueue.index], t.undoQueue.inSequence = !0, r = 0; r < e.undo.calls.length; r++ ) a.plotDo(t, e.undo.calls[r], e.undo.args[r]); (t.undoQueue.inSequence = !1), (t.autoplay = !1); } }, redo: function (t) { var e, r; if ( !( void 0 === t.undoQueue || isNaN(t.undoQueue.index) || t.undoQueue.index >= t.undoQueue.queue.length ) ) { for ( e = t.undoQueue.queue[t.undoQueue.index], t.undoQueue.inSequence = !0, r = 0; r < e.redo.calls.length; r++ ) a.plotDo(t, e.redo.calls[r], e.redo.args[r]); (t.undoQueue.inSequence = !1), (t.autoplay = !1), t.undoQueue.index++; } }, }; (a.plotDo = function (t, e, r) { (t.autoplay = !0), (r = (function (t, e) { for (var r, i = [], a = 0; a < e.length; a++) (r = e[a]), (i[a] = r === t ? r : "object" == typeof r ? Array.isArray(r) ? n.extendDeep([], r) : n.extendDeepAll({}, r) : r); return i; })(t, r)), e.apply(null, r); }), (e.exports = a); }, { "../lib": 515, "../plot_api/plot_config": 553 }, ], 532: [ function (t, e, r) { "use strict"; r.counter = function (t, e, r, n) { var i = (e || "") + (r ? "" : "$"), a = !1 === n ? "" : "^"; return "xy" === t ? new RegExp( a + "x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?" + i, ) : new RegExp(a + t + "([2-9]|[1-9][0-9]+)?" + i); }; }, {}, ], 533: [ function (t, e, r) { "use strict"; var n = /^(.*)(\.[^\.\[\]]+|\[\d\])$/, i = /^[^\.\[\]]+$/; e.exports = function (t, e) { for (; e; ) { var r = t.match(n); if (r) t = r[1]; else { if (!t.match(i)) throw new Error("bad relativeAttr call:" + [t, e]); t = ""; } if ("^" !== e.charAt(0)) break; e = e.slice(1); } return t && "[" !== e.charAt(0) ? t + "." + e : t + e; }; }, {}, ], 534: [ function (t, e, r) { "use strict"; var n = t("./array").isArrayOrTypedArray, i = t("./is_plain_object"); e.exports = function t(e, r) { for (var a in r) { var o = r[a], s = e[a]; if (s !== o) if ("_" === a.charAt(0) || "function" == typeof o) { if (a in e) continue; e[a] = o; } else if (n(o) && n(s) && i(o[0])) { if ("customdata" === a || "ids" === a) continue; for ( var l = Math.min(o.length, s.length), c = 0; c < l; c++ ) s[c] !== o[c] && i(o[c]) && i(s[c]) && t(s[c], o[c]); } else i(o) && i(s) && (t(s, o), Object.keys(s).length || delete e[a]); } }; }, { "./array": 497, "./is_plain_object": 516 }, ], 535: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("./loggers"), a = t("./identity"), o = t("../constants/numerical").BADNUM; function s(t, e) { return t < e; } function l(t, e) { return t <= e; } function c(t, e) { return t > e; } function u(t, e) { return t >= e; } (r.findBin = function (t, e, r) { if (n(e.start)) return r ? Math.ceil((t - e.start) / e.size - 1e-9) - 1 : Math.floor((t - e.start) / e.size + 1e-9); var a, o, f = 0, h = e.length, p = 0, d = h > 1 ? (e[h - 1] - e[0]) / (h - 1) : 1; for ( o = d >= 0 ? (r ? s : l) : r ? u : c, t += 1e-9 * d * (r ? -1 : 1) * (d >= 0 ? 1 : -1); f < h && p++ < 100; ) o(e[(a = Math.floor((f + h) / 2))], t) ? (f = a + 1) : (h = a); return p > 90 && i.log("Long binary search..."), f - 1; }), (r.sorterAsc = function (t, e) { return t - e; }), (r.sorterDes = function (t, e) { return e - t; }), (r.distinctVals = function (t) { var e, n = t.slice(); for ( n.sort(r.sorterAsc), e = n.length - 1; e > -1 && n[e] === o; e-- ); for ( var i, a = n[e] - n[0] || 1, s = a / (e || 1) / 1e4, l = [], c = 0; c <= e; c++ ) { var u = n[c], f = u - i; void 0 === i ? (l.push(u), (i = u)) : f > s && ((a = Math.min(a, f)), l.push(u), (i = u)); } return { vals: l, minDiff: a }; }), (r.roundUp = function (t, e, r) { for ( var n, i = 0, a = e.length - 1, o = 0, s = r ? 0 : 1, l = r ? 1 : 0, c = r ? Math.ceil : Math.floor; i < a && o++ < 100; ) e[(n = c((i + a) / 2))] <= t ? (i = n + s) : (a = n - l); return e[i]; }), (r.sort = function (t, e) { for (var r = 0, n = 0, i = 1; i < t.length; i++) { var a = e(t[i], t[i - 1]); if ((a < 0 ? (r = 1) : a > 0 && (n = 1), r && n)) return t.sort(e); } return n ? t : t.reverse(); }), (r.findIndexOfMin = function (t, e) { e = e || a; for (var r, n = 1 / 0, i = 0; i < t.length; i++) { var o = e(t[i]); o < n && ((n = o), (r = i)); } return r; }); }, { "../constants/numerical": 491, "./identity": 513, "./loggers": 519, "fast-isnumeric": 190, }, ], 536: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { (t.attr("class") || "").split(" ").forEach(function (e) { 0 === e.indexOf("cursor-") && t.classed(e, !1); }), e && t.classed("cursor-" + e, !0); }; }, {}, ], 537: [ function (t, e, r) { "use strict"; var n = t("../components/color"), i = function () {}; e.exports = function (t) { for (var e in t) "function" == typeof t[e] && (t[e] = i); t.destroy = function () { t.container.parentNode.removeChild(t.container); }; var r = document.createElement("div"); (r.className = "no-webgl"), (r.style.cursor = "pointer"), (r.style.fontSize = "24px"), (r.style.color = n.defaults[0]), (r.style.position = "absolute"), (r.style.left = r.style.top = "0px"), (r.style.width = r.style.height = "100%"), (r.style["background-color"] = n.lightLine), (r.style["z-index"] = 30); var a = document.createElement("p"); return ( (a.textContent = "WebGL is not supported by your browser - visit https://get.webgl.org for more info"), (a.style.position = "relative"), (a.style.top = "50%"), (a.style.left = "50%"), (a.style.height = "30%"), (a.style.width = "50%"), (a.style.margin = "-15% 0 0 -25%"), r.appendChild(a), t.container.appendChild(r), (t.container.style.background = "#FFFFFF"), (t.container.onclick = function () { window.open("https://get.webgl.org"); }), !1 ); }; }, { "../components/color": 367 }, ], 538: [ function (t, e, r) { "use strict"; e.exports = function (t) { return Object.keys(t).sort(); }; }, {}, ], 539: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("./array").isArrayOrTypedArray; (r.aggNums = function (t, e, a, o) { var s, l; if ( ((!o || o > a.length) && (o = a.length), n(e) || (e = !1), i(a[0])) ) { for (l = new Array(o), s = 0; s < o; s++) l[s] = r.aggNums(t, e, a[s]); a = l; } for (s = 0; s < o; s++) n(e) ? n(a[s]) && (e = t(+e, +a[s])) : (e = a[s]); return e; }), (r.len = function (t) { return r.aggNums( function (t) { return t + 1; }, 0, t, ); }), (r.mean = function (t, e) { return ( e || (e = r.len(t)), r.aggNums( function (t, e) { return t + e; }, 0, t, ) / e ); }), (r.midRange = function (t) { if (void 0 !== t && 0 !== t.length) return ( (r.aggNums(Math.max, null, t) + r.aggNums(Math.min, null, t)) / 2 ); }), (r.variance = function (t, e, i) { return ( e || (e = r.len(t)), n(i) || (i = r.mean(t, e)), r.aggNums( function (t, e) { return t + Math.pow(e - i, 2); }, 0, t, ) / e ); }), (r.stdev = function (t, e, n) { return Math.sqrt(r.variance(t, e, n)); }), (r.median = function (t) { var e = t.slice().sort(); return r.interp(e, 0.5); }), (r.interp = function (t, e) { if (!n(e)) throw "n should be a finite number"; if ((e = e * t.length - 0.5) < 0) return t[0]; if (e > t.length - 1) return t[t.length - 1]; var r = e % 1; return r * t[Math.ceil(e)] + (1 - r) * t[Math.floor(e)]; }); }, { "./array": 497, "fast-isnumeric": 190 }, ], 540: [ function (t, e, r) { "use strict"; var n = t("color-normalize"); e.exports = function (t) { return t ? n(t) : [0, 0, 0, 1]; }; }, { "color-normalize": 89 }, ], 541: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../lib"), a = i.strTranslate, o = t("../constants/xmlns_namespaces"), s = t("../constants/alignment").LINE_SPACING, l = /([^$]*)([$]+[^$]*[$]+)([^$]*)/; r.convertToTspans = function (t, e, m) { var M = t.text(), S = !t.attr("data-notex") && e && e._context.typesetMath && "undefined" != typeof MathJax && M.match(l), C = n.select(t.node().parentNode); if (!C.empty()) { var P = t.attr("class") ? t.attr("class").split(" ")[0] : "text"; return ( (P += "-math"), C.selectAll("svg." + P).remove(), C.selectAll("g." + P + "-group").remove(), t .style("display", null) .attr({ "data-unformatted": M, "data-math": "N" }), S ? ((e && e._promises) || []).push( new Promise(function (e) { t.style("display", "none"); var r = parseInt(t.node().style.fontSize, 10), o = { fontSize: r }; !(function (t, e, r) { var a, o, s, l, h = parseInt( (MathJax.version || "").split(".")[0], ); if (2 !== h && 3 !== h) return void i.warn( "No MathJax version:", MathJax.version, ); var p = function () { var r = "math-output-" + i.randstr({}, 64), a = (l = n .select("body") .append("div") .attr({ id: r }) .style({ visibility: "hidden", position: "absolute", "font-size": e.fontSize + "px", }) .text( t .replace(c, "\\lt ") .replace(u, "\\gt "), )).node(); return 2 === h ? MathJax.Hub.Typeset(a) : MathJax.typeset([a]); }, d = function () { var e = l.select( 2 === h ? ".MathJax_SVG" : ".MathJax", ), a = !e.empty() && l.select("svg").node(); if (a) { var o, s = a.getBoundingClientRect(); (o = 2 === h ? n .select("body") .select("#MathJax_SVG_glyphs") : e.select("defs")), r(e, o, s); } else i.log( "There was an error in the tex syntax.", t, ), r(); l.remove(); }; 2 === h ? MathJax.Hub.Queue( function () { return ( (o = i.extendDeepAll( {}, MathJax.Hub.config, )), (s = MathJax.Hub.processSectionDelay), void 0 !== MathJax.Hub.processSectionDelay && (MathJax.Hub.processSectionDelay = 0), MathJax.Hub.Config({ messageStyle: "none", tex2jax: { inlineMath: f }, displayAlign: "left", }) ); }, function () { if ( "SVG" !== (a = MathJax.Hub.config.menuSettings .renderer) ) return MathJax.Hub.setRenderer( "SVG", ); }, p, d, function () { if ("SVG" !== a) return MathJax.Hub.setRenderer(a); }, function () { return ( void 0 !== s && (MathJax.Hub.processSectionDelay = s), MathJax.Hub.Config(o) ); }, ) : 3 === h && ((o = i.extendDeepAll( {}, MathJax.config, )), MathJax.config.tex || (MathJax.config.tex = {}), (MathJax.config.tex.inlineMath = f), "svg" !== (a = MathJax.config.startup.output) && (MathJax.config.startup.output = "svg"), MathJax.startup.defaultReady(), MathJax.startup.promise.then(function () { p(), d(), "svg" !== a && (MathJax.config.startup.output = a), (MathJax.config = o); })); })(S[2], o, function (n, i, o) { C.selectAll("svg." + P).remove(), C.selectAll("g." + P + "-group").remove(); var s = n && n.select("svg"); if (!s || !s.node()) return I(), void e(); var l = C.append("g") .classed(P + "-group", !0) .attr({ "pointer-events": "none", "data-unformatted": M, "data-math": "Y", }); l.node().appendChild(s.node()), i && i.node() && s .node() .insertBefore( i.node().cloneNode(!0), s.node().firstChild, ); var c = o.width, u = o.height; s.attr({ class: P, height: u, preserveAspectRatio: "xMinYMin meet", }).style({ overflow: "visible", "pointer-events": "none", }); var f = t.node().style.fill || "black", h = s.select("g"); h.attr({ fill: f, stroke: f }); var p = h.node().getBoundingClientRect(), d = p.width, g = p.height; (d > c || g > u) && (s.style("overflow", "hidden"), (d = (p = s.node().getBoundingClientRect()) .width), (g = p.height)); var v = +t.attr("x"), y = +t.attr("y"), x = -( r || t.node().getBoundingClientRect().height ) / 4; if ("y" === P[0]) l.attr({ transform: "rotate(" + [-90, v, y] + ")" + a(-d / 2, x - g / 2), }); else if ("l" === P[0]) y = x - g / 2; else if ( "a" === P[0] && 0 !== P.indexOf("atitle") ) (v = 0), (y = x); else { var b = t.attr("text-anchor"); (v -= d * ("middle" === b ? 0.5 : "end" === b ? 1 : 0)), (y = y + x - g / 2); } s.attr({ x: v, y: y }), m && m.call(t, l), e(l); }); }), ) : I(), t ); } function I() { C.empty() || ((P = t.attr("class") + "-math"), C.select("svg." + P).remove()), t.text("").style("white-space", "pre"), (function (t, e) { e = e.replace(g, " "); var r, a = !1, l = [], c = -1; function u() { c++; var e = document.createElementNS(o.svg, "tspan"); n .select(e) .attr({ class: "line", dy: c * s + "em" }), t.appendChild(e), (r = e); var i = l; if (((l = [{ node: e }]), i.length > 1)) for (var a = 1; a < i.length; a++) f(i[a]); } function f(t) { var e, i = t.type, a = {}; if ("a" === i) { e = "a"; var s = t.target, c = t.href, u = t.popup; c && ((a = { "xlink:xlink:show": "_blank" === s || "_" !== s.charAt(0) ? "new" : "replace", target: s, "xlink:xlink:href": c, }), u && (a.onclick = 'window.open(this.href.baseVal,this.target.baseVal,"' + u + '");return false;')); } else e = "tspan"; t.style && (a.style = t.style); var f = document.createElementNS(o.svg, e); if ("sup" === i || "sub" === i) { m(r, "\u200b"), r.appendChild(f); var h = document.createElementNS(o.svg, "tspan"); m(h, "\u200b"), n.select(h).attr("dy", d[i]), (a.dy = p[i]), r.appendChild(f), r.appendChild(h); } else r.appendChild(f); n.select(f).attr(a), (r = t.node = f), l.push(t); } function m(t, e) { t.appendChild(document.createTextNode(e)); } function M(t) { if (1 !== l.length) { var n = l.pop(); t !== n.type && i.log( "Start tag <" + n.type + "> doesnt match end tag <" + t + ">. Pretending it did match.", e, ), (r = l[l.length - 1].node); } else i.log( "Ignoring unexpected end tag .", e, ); } x.test(e) ? u() : ((r = t), (l = [{ node: t }])); for (var S = e.split(v), C = 0; C < S.length; C++) { var P = S[C], I = P.match(y), O = I && I[2].toLowerCase(), z = h[O]; if ("br" === O) u(); else if (void 0 === z) m(r, E(P)); else if (I[1]) M(O); else { var D = I[4], R = { type: O }, F = k(D, b); if ( (F ? ((F = F.replace(A, "$1 fill:")), z && (F += ";" + z)) : z && (F = z), F && (R.style = F), "a" === O) ) { a = !0; var B = k(D, _); if (B) { var N = L(B); N && ((R.href = N), (R.target = k(D, w) || "_blank"), (R.popup = k(D, T))); } } f(R); } } return a; })(t.node(), M) && t.style("pointer-events", "all"), r.positionText(t), m && m.call(t); } }; var c = /(<|<|<)/g, u = /(>|>|>)/g; var f = [ ["$", "$"], ["\\(", "\\)"], ]; var h = { sup: "font-size:70%", sub: "font-size:70%", b: "font-weight:bold", i: "font-style:italic", a: "cursor:pointer", span: "", em: "font-style:italic;font-weight:bold", }, p = { sub: "0.3em", sup: "-0.6em" }, d = { sub: "-0.21em", sup: "0.42em" }, m = ["http:", "https:", "mailto:", "", void 0, ":"], g = (r.NEWLINES = /(\r\n?|\n)/g), v = /(<[^<>]*>)/, y = /<(\/?)([^ >]*)(\s+(.*))?>/i, x = //i; r.BR_TAG_ALL = //gi; var b = /(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i, _ = /(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i, w = /(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i, T = /(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i; function k(t, e) { if (!t) return null; var r = t.match(e), n = r && (r[3] || r[4]); return n && E(n); } var A = /(^|;)\s*color:/; r.plainText = function (t, e) { for ( var r = void 0 !== (e = e || {}).len && -1 !== e.len ? e.len : 1 / 0, n = void 0 !== e.allowedTags ? e.allowedTags : ["br"], i = "...".length, a = t.split(v), o = [], s = "", l = 0, c = 0; c < a.length; c++ ) { var u = a[c], f = u.match(y), h = f && f[2].toLowerCase(); if (h) -1 !== n.indexOf(h) && (o.push(u), (s = h)); else { var p = u.length; if (l + p < r) o.push(u), (l += p); else if (l < r) { var d = r - l; s && ("br" !== s || d <= i || p <= i) && o.pop(), r > i ? o.push(u.substr(0, d - i) + "...") : o.push(u.substr(0, d)); break; } s = ""; } } return o.join(""); }; var M = { mu: "\u03bc", amp: "&", lt: "<", gt: ">", nbsp: "\xa0", times: "\xd7", plusmn: "\xb1", deg: "\xb0", }, S = /&(#\d+|#x[\da-fA-F]+|[a-z]+);/g; function E(t) { return t.replace(S, function (t, e) { return ( ("#" === e.charAt(0) ? (function (t) { if (t > 1114111) return; var e = String.fromCodePoint; if (e) return e(t); var r = String.fromCharCode; return t <= 65535 ? r(t) : r(55232 + (t >> 10), (t % 1024) + 56320); })( "x" === e.charAt(1) ? parseInt(e.substr(2), 16) : parseInt(e.substr(1), 10), ) : M[e]) || t ); }); } function L(t) { var e = encodeURI(decodeURI(t)), r = document.createElement("a"), n = document.createElement("a"); (r.href = t), (n.href = e); var i = r.protocol, a = n.protocol; return -1 !== m.indexOf(i) && -1 !== m.indexOf(a) ? e : ""; } function C(t, e, r) { var n, a, o, s = r.horizontalAlign, l = r.verticalAlign || "top", c = t.node().getBoundingClientRect(), u = e.node().getBoundingClientRect(); return ( (a = "bottom" === l ? function () { return c.bottom - n.height; } : "middle" === l ? function () { return c.top + (c.height - n.height) / 2; } : function () { return c.top; }), (o = "right" === s ? function () { return c.right - n.width; } : "center" === s ? function () { return c.left + (c.width - n.width) / 2; } : function () { return c.left; }), function () { n = this.node().getBoundingClientRect(); var t = o() - u.left, e = a() - u.top, s = r.gd || {}; if (r.gd) { s._fullLayout._calcInverseTransform(s); var l = i.apply3DTransform( s._fullLayout._invTransform, )(t, e); (t = l[0]), (e = l[1]); } return ( this.style({ top: e + "px", left: t + "px", "z-index": 1e3, }), this ); } ); } (r.convertEntities = E), (r.sanitizeHTML = function (t) { t = t.replace(g, " "); for ( var e = document.createElement("p"), r = e, i = [], a = t.split(v), o = 0; o < a.length; o++ ) { var s = a[o], l = s.match(y), c = l && l[2].toLowerCase(); if (c in h) if (l[1]) i.length && (r = i.pop()); else { var u = l[4], f = k(u, b), p = f ? { style: f } : {}; if ("a" === c) { var d = k(u, _); if (d) { var m = L(d); if (m) { p.href = m; var x = k(u, w); x && (p.target = x); } } } var T = document.createElement(c); r.appendChild(T), n.select(T).attr(p), (r = T), i.push(T); } else r.appendChild(document.createTextNode(E(s))); } return e.innerHTML; }), (r.lineCount = function (t) { return t.selectAll("tspan.line").size() || 1; }), (r.positionText = function (t, e, r) { return t.each(function () { var t = n.select(this); function i(e, r) { return ( void 0 === r ? null === (r = t.attr(e)) && (t.attr(e, 0), (r = 0)) : t.attr(e, r), r ); } var a = i("x", e), o = i("y", r); "text" === this.nodeName && t.selectAll("tspan.line").attr({ x: a, y: o }); }); }); (r.makeTextShadow = function (t) { var e = "1px ", r = "1px ", n = "1px "; return ( e + r + n + t + ", -" + e + "-" + r + n + t + ", " + e + "-" + r + n + t + ", -" + e + r + n + t ); }), (r.makeEditable = function (t, e) { var r = e.gd, i = e.delegate, a = n.dispatch("edit", "input", "cancel"), o = i || t; if ( (t.style({ "pointer-events": i ? "none" : "all" }), 1 !== t.size()) ) throw new Error("boo"); function s() { !(function () { var i = n.select(r).select(".svg-container"), o = i.append("div"), s = t.node().style, c = parseFloat(s.fontSize || 12), u = e.text; void 0 === u && (u = t.attr("data-unformatted")); o.classed("plugin-editable editable", !0) .style({ position: "absolute", "font-family": s.fontFamily || "Arial", "font-size": c, color: e.fill || s.fill || "black", opacity: 1, "background-color": e.background || "transparent", outline: "#ffffff33 1px solid", margin: [-c / 8 + 1, 0, 0, -1].join("px ") + "px", padding: "0", "box-sizing": "border-box", }) .attr({ contenteditable: !0 }) .text(u) .call(C(t, i, e)) .on("blur", function () { (r._editing = !1), t.text(this.textContent).style({ opacity: 1 }); var e, i = n.select(this).attr("class"); (e = i ? "." + i.split(" ")[0] + "-math-group" : "[class*=-math-group]") && n .select(t.node().parentNode) .select(e) .style({ opacity: 0 }); var o = this.textContent; n.select(this).transition().duration(0).remove(), n.select(document).on("mouseup", null), a.edit.call(t, o); }) .on("focus", function () { var t = this; (r._editing = !0), n.select(document).on("mouseup", function () { if (n.event.target === t) return !1; document.activeElement === o.node() && o.node().blur(); }); }) .on("keyup", function () { 27 === n.event.which ? ((r._editing = !1), t.style({ opacity: 1 }), n .select(this) .style({ opacity: 0 }) .on("blur", function () { return !1; }) .transition() .remove(), a.cancel.call(t, this.textContent)) : (a.input.call(t, this.textContent), n.select(this).call(C(t, i, e))); }) .on("keydown", function () { 13 === n.event.which && this.blur(); }) .call(l); })(), t.style({ opacity: 0 }); var i, s = o.attr("class"); (i = s ? "." + s.split(" ")[0] + "-math-group" : "[class*=-math-group]") && n .select(t.node().parentNode) .select(i) .style({ opacity: 0 }); } function l(t) { var e = t.node(), r = document.createRange(); r.selectNodeContents(e); var n = window.getSelection(); n.removeAllRanges(), n.addRange(r), e.focus(); } return ( e.immediate ? s() : o.on("click", s), n.rebind(t, a, "on") ); }); }, { "../constants/alignment": 483, "../constants/xmlns_namespaces": 492, "../lib": 515, "@plotly/d3": 58, }, ], 542: [ function (t, e, r) { "use strict"; var n = {}; function i(t) { t && null !== t.timer && (clearTimeout(t.timer), (t.timer = null)); } (r.throttle = function (t, e, r) { var a = n[t], o = Date.now(); if (!a) { for (var s in n) n[s].ts < o - 6e4 && delete n[s]; a = n[t] = { ts: 0, timer: null }; } function l() { r(), (a.ts = Date.now()), a.onDone && (a.onDone(), (a.onDone = null)); } i(a), o > a.ts + e ? l() : (a.timer = setTimeout(function () { l(), (a.timer = null); }, e)); }), (r.done = function (t) { var e = n[t]; return e && e.timer ? new Promise(function (t) { var r = e.onDone; e.onDone = function () { r && r(), t(), (e.onDone = null); }; }) : Promise.resolve(); }), (r.clear = function (t) { if (t) i(n[t]), delete n[t]; else for (var e in n) r.clear(e); }); }, {}, ], 543: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"); e.exports = function (t, e) { if (t > 0) return Math.log(t) / Math.LN10; var r = Math.log(Math.min(e[0], e[1])) / Math.LN10; return ( n(r) || (r = Math.log(Math.max(e[0], e[1])) / Math.LN10 - 6), r ); }; }, { "fast-isnumeric": 190 }, ], 544: [ function (t, e, r) { "use strict"; var n = (e.exports = {}), i = t("../plots/geo/constants").locationmodeToLayer, a = t("topojson-client").feature; (n.getTopojsonName = function (t) { return [ t.scope.replace(/ /g, "-"), "_", t.resolution.toString(), "m", ].join(""); }), (n.getTopojsonPath = function (t, e) { return t + e + ".json"; }), (n.getTopojsonFeatures = function (t, e) { var r = i[t.locationmode], n = e.objects[r]; return a(e, n).features; }); }, { "../plots/geo/constants": 596, "topojson-client": 316 }, ], 545: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "locale", name: "en-US", dictionary: { "Click to enter Colorscale title": "Click to enter Colorscale title", }, format: { date: "%m/%d/%Y" }, }; }, {}, ], 546: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "locale", name: "en", dictionary: { "Click to enter Colorscale title": "Click to enter Colourscale title", }, format: { days: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", ], shortDays: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", ], months: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ], shortMonths: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ], periods: ["AM", "PM"], dateTime: "%a %b %e %X %Y", date: "%d/%m/%Y", time: "%H:%M:%S", decimal: ".", thousands: ",", grouping: [3], currency: ["$", ""], year: "%Y", month: "%b %Y", dayMonth: "%b %-d", dayMonthYear: "%b %-d, %Y", }, }; }, {}, ], 547: [ function (t, e, r) { "use strict"; var n = t("../registry"); e.exports = function (t) { for ( var e, r, i = n.layoutArrayContainers, a = n.layoutArrayRegexes, o = t.split("[")[0], s = 0; s < a.length; s++ ) if ((r = t.match(a[s])) && 0 === r.index) { e = r[0]; break; } if ((e || (e = i[i.indexOf(o)]), !e)) return !1; var l = t.substr(e.length); return l ? !!(r = l.match(/^\[(0|[1-9][0-9]*)\](\.(.+))?$/)) && { array: e, index: Number(r[1]), property: r[3] || "", } : { array: e, index: "", property: "" }; }; }, { "../registry": 647 }, ], 548: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = n.extendFlat, a = n.isPlainObject, o = { valType: "flaglist", extras: ["none"], flags: [ "calc", "clearAxisTypes", "plot", "style", "markerSize", "colorbars", ], }, s = { valType: "flaglist", extras: ["none"], flags: [ "calc", "plot", "legend", "ticks", "axrange", "layoutstyle", "modebar", "camera", "arraydraw", "colorbars", ], }, l = o.flags.slice().concat(["fullReplot"]), c = s.flags.slice().concat("layoutReplot"); function u(t) { for (var e = {}, r = 0; r < t.length; r++) e[t[r]] = !1; return e; } function f(t, e, r) { var n = i({}, t); for (var o in n) { var s = n[o]; a(s) && (n[o] = h(s, e, r, o)); } return "from-root" === r && (n.editType = e), n; } function h(t, e, r, n) { if (t.valType) { var a = i({}, t); if (((a.editType = e), Array.isArray(t.items))) { a.items = new Array(t.items.length); for (var o = 0; o < t.items.length; o++) a.items[o] = h(t.items[o], e, "from-root"); } return a; } return f( t, e, "_" === n.charAt(0) ? "nested" : "from-root", ); } e.exports = { traces: o, layout: s, traceFlags: function () { return u(l); }, layoutFlags: function () { return u(c); }, update: function (t, e) { var r = e.editType; if (r && "none" !== r) for (var n = r.split("+"), i = 0; i < n.length; i++) t[n[i]] = !0; }, overrideAll: f, }; }, { "../lib": 515 }, ], 549: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("gl-mat4/fromQuat"), a = t("../registry"), o = t("../lib"), s = t("../plots/plots"), l = t("../plots/cartesian/axis_ids"), c = t("../components/color"), u = l.cleanId, f = l.getFromTrace, h = a.traceIs; function p(t, e) { var r = t[e], n = e.charAt(0); r && "paper" !== r && (t[e] = u(r, n, !0)); } function d(t) { function e(e, r) { var n = t[e], i = t.title && t.title[r]; n && !i && (t.title || (t.title = {}), (t.title[r] = t[e]), delete t[e]); } t && (("string" != typeof t.title && "number" != typeof t.title) || (t.title = { text: t.title }), e("titlefont", "font"), e("titleposition", "position"), e("titleside", "side"), e("titleoffset", "offset")); } function m(t) { if (!o.isPlainObject(t)) return !1; var e = t.name; return ( delete t.name, delete t.showlegend, ("string" == typeof e || "number" == typeof e) && String(e) ); } function g(t, e, r, n) { if (r && !n) return t; if (n && !r) return e; if (!t.trim()) return e; if (!e.trim()) return t; var i, a = Math.min(t.length, e.length); for (i = 0; i < a && t.charAt(i) === e.charAt(i); i++); return t.substr(0, i).trim(); } function v(t) { var e = "middle", r = "center"; return ( "string" == typeof t && (-1 !== t.indexOf("top") ? (e = "top") : -1 !== t.indexOf("bottom") && (e = "bottom"), -1 !== t.indexOf("left") ? (r = "left") : -1 !== t.indexOf("right") && (r = "right")), e + " " + r ); } function y(t, e) { return ( e in t && "object" == typeof t[e] && 0 === Object.keys(t[e]).length ); } (r.clearPromiseQueue = function (t) { Array.isArray(t._promises) && t._promises.length > 0 && o.log("Clearing previous rejected promises from queue."), (t._promises = []); }), (r.cleanLayout = function (t) { var e, n; t || (t = {}), t.xaxis1 && (t.xaxis || (t.xaxis = t.xaxis1), delete t.xaxis1), t.yaxis1 && (t.yaxis || (t.yaxis = t.yaxis1), delete t.yaxis1), t.scene1 && (t.scene || (t.scene = t.scene1), delete t.scene1); var a = (s.subplotsRegistry.cartesian || {}).attrRegex, l = (s.subplotsRegistry.polar || {}).attrRegex, f = (s.subplotsRegistry.ternary || {}).attrRegex, h = (s.subplotsRegistry.gl3d || {}).attrRegex, m = Object.keys(t); for (e = 0; e < m.length; e++) { var g = m[e]; if (a && a.test(g)) { var v = t[g]; v.anchor && "free" !== v.anchor && (v.anchor = u(v.anchor)), v.overlaying && (v.overlaying = u(v.overlaying)), v.type || (v.isdate ? (v.type = "date") : v.islog ? (v.type = "log") : !1 === v.isdate && !1 === v.islog && (v.type = "linear")), ("withzero" !== v.autorange && "tozero" !== v.autorange) || ((v.autorange = !0), (v.rangemode = "tozero")), delete v.islog, delete v.isdate, delete v.categories, y(v, "domain") && delete v.domain, void 0 !== v.autotick && (void 0 === v.tickmode && (v.tickmode = v.autotick ? "auto" : "linear"), delete v.autotick), d(v); } else if (l && l.test(g)) { d(t[g].radialaxis); } else if (f && f.test(g)) { var x = t[g]; d(x.aaxis), d(x.baxis), d(x.caxis); } else if (h && h.test(g)) { var b = t[g], _ = b.cameraposition; if (Array.isArray(_) && 4 === _[0].length) { var w = _[0], T = _[1], k = _[2], A = i([], w), M = []; for (n = 0; n < 3; ++n) M[n] = T[n] + k * A[2 + 4 * n]; (b.camera = { eye: { x: M[0], y: M[1], z: M[2] }, center: { x: T[0], y: T[1], z: T[2] }, up: { x: 0, y: 0, z: 1 }, }), delete b.cameraposition; } d(b.xaxis), d(b.yaxis), d(b.zaxis); } } var S = Array.isArray(t.annotations) ? t.annotations.length : 0; for (e = 0; e < S; e++) { var E = t.annotations[e]; o.isPlainObject(E) && (E.ref && ("paper" === E.ref ? ((E.xref = "paper"), (E.yref = "paper")) : "data" === E.ref && ((E.xref = "x"), (E.yref = "y")), delete E.ref), p(E, "xref"), p(E, "yref")); } var L = Array.isArray(t.shapes) ? t.shapes.length : 0; for (e = 0; e < L; e++) { var C = t.shapes[e]; o.isPlainObject(C) && (p(C, "xref"), p(C, "yref")); } var P = Array.isArray(t.images) ? t.images.length : 0; for (e = 0; e < P; e++) { var I = t.images[e]; o.isPlainObject(I) && (p(I, "xref"), p(I, "yref")); } var O = t.legend; return ( O && (O.x > 3 ? ((O.x = 1.02), (O.xanchor = "left")) : O.x < -2 && ((O.x = -0.02), (O.xanchor = "right")), O.y > 3 ? ((O.y = 1.02), (O.yanchor = "bottom")) : O.y < -2 && ((O.y = -0.02), (O.yanchor = "top"))), d(t), "rotate" === t.dragmode && (t.dragmode = "orbit"), c.clean(t), t.template && t.template.layout && r.cleanLayout(t.template.layout), t ); }), (r.cleanData = function (t) { for (var e = 0; e < t.length; e++) { var n, i = t[e]; if ( ("histogramy" === i.type && "xbins" in i && !("ybins" in i) && ((i.ybins = i.xbins), delete i.xbins), i.error_y && "opacity" in i.error_y) ) { var l = c.defaults, f = i.error_y.color || (h(i, "bar") ? c.defaultLine : l[e % l.length]); (i.error_y.color = c.addOpacity( c.rgb(f), c.opacity(f) * i.error_y.opacity, )), delete i.error_y.opacity; } if ( ("bardir" in i && ("h" !== i.bardir || (!h(i, "bar") && "histogram" !== i.type.substr(0, 9)) || ((i.orientation = "h"), r.swapXYData(i)), delete i.bardir), "histogramy" === i.type && r.swapXYData(i), ("histogramx" !== i.type && "histogramy" !== i.type) || (i.type = "histogram"), "scl" in i && !("colorscale" in i) && ((i.colorscale = i.scl), delete i.scl), "reversescl" in i && !("reversescale" in i) && ((i.reversescale = i.reversescl), delete i.reversescl), i.xaxis && (i.xaxis = u(i.xaxis, "x")), i.yaxis && (i.yaxis = u(i.yaxis, "y")), h(i, "gl3d") && i.scene && (i.scene = s.subplotsRegistry.gl3d.cleanId( i.scene, )), !h(i, "pie-like") && !h(i, "bar-like")) ) if (Array.isArray(i.textposition)) for (n = 0; n < i.textposition.length; n++) i.textposition[n] = v(i.textposition[n]); else i.textposition && (i.textposition = v(i.textposition)); var p = a.getModule(i); if (p && p.colorbar) { var x = p.colorbar.container, b = x ? i[x] : i; b && b.colorscale && ("YIGnBu" === b.colorscale && (b.colorscale = "YlGnBu"), "YIOrRd" === b.colorscale && (b.colorscale = "YlOrRd")); } if ( "surface" === i.type && o.isPlainObject(i.contours) ) { var _ = ["x", "y", "z"]; for (n = 0; n < _.length; n++) { var w = i.contours[_[n]]; o.isPlainObject(w) && (w.highlightColor && ((w.highlightcolor = w.highlightColor), delete w.highlightColor), w.highlightWidth && ((w.highlightwidth = w.highlightWidth), delete w.highlightWidth)); } } if ("candlestick" === i.type || "ohlc" === i.type) { var T = !1 !== (i.increasing || {}).showlegend, k = !1 !== (i.decreasing || {}).showlegend, A = m(i.increasing), M = m(i.decreasing); if (!1 !== A && !1 !== M) { var S = g(A, M, T, k); S && (i.name = S); } else (!A && !M) || i.name || (i.name = A || M); } if (Array.isArray(i.transforms)) { var E = i.transforms; for (n = 0; n < E.length; n++) { var L = E[n]; if (o.isPlainObject(L)) switch (L.type) { case "filter": L.filtersrc && ((L.target = L.filtersrc), delete L.filtersrc), L.calendar && (L.valuecalendar || (L.valuecalendar = L.calendar), delete L.calendar); break; case "groupby": if ( ((L.styles = L.styles || L.style), L.styles && !Array.isArray(L.styles)) ) { var C = L.styles, P = Object.keys(C); L.styles = []; for (var I = 0; I < P.length; I++) L.styles.push({ target: P[I], value: C[P[I]], }); } } } } y(i, "line") && delete i.line, "marker" in i && (y(i.marker, "line") && delete i.marker.line, y(i, "marker") && delete i.marker), c.clean(i), i.autobinx && (delete i.autobinx, delete i.xbins), i.autobiny && (delete i.autobiny, delete i.ybins), d(i), i.colorbar && d(i.colorbar), i.marker && i.marker.colorbar && d(i.marker.colorbar), i.line && i.line.colorbar && d(i.line.colorbar), i.aaxis && d(i.aaxis), i.baxis && d(i.baxis); } }), (r.swapXYData = function (t) { var e; if ( (o.swapAttrs(t, [ "?", "?0", "d?", "?bins", "nbins?", "autobin?", "?src", "error_?", ]), Array.isArray(t.z) && Array.isArray(t.z[0]) && (t.transpose ? delete t.transpose : (t.transpose = !0)), t.error_x && t.error_y) ) { var r = t.error_y, n = "copy_ystyle" in r ? r.copy_ystyle : !(r.color || r.thickness || r.width); o.swapAttrs(t, ["error_?.copy_ystyle"]), n && o.swapAttrs(t, [ "error_?.color", "error_?.thickness", "error_?.width", ]); } if ("string" == typeof t.hoverinfo) { var i = t.hoverinfo.split("+"); for (e = 0; e < i.length; e++) "x" === i[e] ? (i[e] = "y") : "y" === i[e] && (i[e] = "x"); t.hoverinfo = i.join("+"); } }), (r.coerceTraceIndices = function (t, e) { if (n(e)) return [e]; if (!Array.isArray(e) || !e.length) return t.data.map(function (t, e) { return e; }); if (Array.isArray(e)) { for (var r = [], i = 0; i < e.length; i++) o.isIndex(e[i], t.data.length) ? r.push(e[i]) : o.warn( "trace index (", e[i], ") is not a number or is out of bounds", ); return r; } return e; }), (r.manageArrayContainers = function (t, e, r) { var i = t.obj, a = t.parts, s = a.length, l = a[s - 1], c = n(l); if (c && null === e) { var u = a.slice(0, s - 1).join("."); o.nestedProperty(i, u).get().splice(l, 1); } else c && void 0 === t.get() ? (void 0 === t.get() && (r[t.astr] = null), t.set(e)) : t.set(e); }); var x = /(\.[^\[\]\.]+|\[[^\[\]\.]+\])$/; function b(t) { var e = t.search(x); if (e > 0) return t.substr(0, e); } r.hasParent = function (t, e) { for (var r = b(e); r; ) { if (r in t) return !0; r = b(r); } return !1; }; var _ = ["x", "y", "z"]; r.clearAxisTypes = function (t, e, r) { for (var n = 0; n < e.length; n++) for (var i = t._fullData[n], a = 0; a < 3; a++) { var s = f(t, i, _[a]); if (s && "log" !== s.type) { var l = s._name, c = s._id.substr(1); if ("scene" === c.substr(0, 5)) { if (void 0 !== r[c]) continue; l = c + "." + l; } var u = l + ".type"; void 0 === r[l] && void 0 === r[u] && o.nestedProperty(t.layout, u).set(null); } } }; }, { "../components/color": 367, "../lib": 515, "../plots/cartesian/axis_ids": 570, "../plots/plots": 628, "../registry": 647, "fast-isnumeric": 190, "gl-mat4/fromQuat": 200, }, ], 550: [ function (t, e, r) { "use strict"; var n = t("./plot_api"); (r._doPlot = n._doPlot), (r.newPlot = n.newPlot), (r.restyle = n.restyle), (r.relayout = n.relayout), (r.redraw = n.redraw), (r.update = n.update), (r._guiRestyle = n._guiRestyle), (r._guiRelayout = n._guiRelayout), (r._guiUpdate = n._guiUpdate), (r._storeDirectGUIEdit = n._storeDirectGUIEdit), (r.react = n.react), (r.extendTraces = n.extendTraces), (r.prependTraces = n.prependTraces), (r.addTraces = n.addTraces), (r.deleteTraces = n.deleteTraces), (r.moveTraces = n.moveTraces), (r.purge = n.purge), (r.addFrames = n.addFrames), (r.deleteFrames = n.deleteFrames), (r.animate = n.animate), (r.setPlotConfig = n.setPlotConfig), (r.toImage = t("./to_image")), (r.validate = t("./validate")), (r.downloadImage = t("../snapshot/download")); var i = t("./template_api"); (r.makeTemplate = i.makeTemplate), (r.validateTemplate = i.validateTemplate); }, { "../snapshot/download": 649, "./plot_api": 552, "./template_api": 557, "./to_image": 558, "./validate": 559, }, ], 551: [ function (t, e, r) { "use strict"; var n = t("../lib/is_plain_object"), i = t("../lib/noop"), a = t("../lib/loggers"), o = t("../lib/search").sorterAsc, s = t("../registry"); r.containerArrayMatch = t("./container_array_match"); var l = (r.isAddVal = function (t) { return "add" === t || n(t); }), c = (r.isRemoveVal = function (t) { return null === t || "remove" === t; }); r.applyContainerArrayChanges = function (t, e, r, n, u) { var f = e.astr, h = s.getComponentMethod(f, "supplyLayoutDefaults"), p = s.getComponentMethod(f, "draw"), d = s.getComponentMethod(f, "drawOne"), m = n.replot || n.recalc || h === i || p === i, g = t.layout, v = t._fullLayout; if (r[""]) { Object.keys(r).length > 1 && a.warn( "Full array edits are incompatible with other edits", f, ); var y = r[""][""]; if (c(y)) e.set(null); else { if (!Array.isArray(y)) return ( a.warn("Unrecognized full array edit value", f, y), !0 ); e.set(y); } return !m && (h(g, v), p(t), !0); } var x, b, _, w, T, k, A, M, S = Object.keys(r).map(Number).sort(o), E = e.get(), L = E || [], C = u(v, f).get(), P = [], I = -1, O = L.length; for (x = 0; x < S.length; x++) if ( ((w = r[(_ = S[x])]), (T = Object.keys(w)), (k = w[""]), (A = l(k)), _ < 0 || _ > L.length - (A ? 0 : 1)) ) a.warn("index out of range", f, _); else if (void 0 !== k) T.length > 1 && a.warn( "Insertion & removal are incompatible with edits to the same index.", f, _, ), c(k) ? P.push(_) : A ? ("add" === k && (k = {}), L.splice(_, 0, k), C && C.splice(_, 0, {})) : a.warn( "Unrecognized full object edit value", f, _, k, ), -1 === I && (I = _); else for (b = 0; b < T.length; b++) (M = f + "[" + _ + "]."), u(L[_], T[b], M).set(w[T[b]]); for (x = P.length - 1; x >= 0; x--) L.splice(P[x], 1), C && C.splice(P[x], 1); if ((L.length ? E || e.set(L) : e.set(null), m)) return !1; if ((h(g, v), d !== i)) { var z; if (-1 === I) z = S; else { for ( O = Math.max(L.length, O), z = [], x = 0; x < S.length && !((_ = S[x]) >= I); x++ ) z.push(_); for (x = I; x < O; x++) z.push(x); } for (x = 0; x < z.length; x++) d(t, z[x]); } else p(t); return !0; }; }, { "../lib/is_plain_object": 516, "../lib/loggers": 519, "../lib/noop": 524, "../lib/search": 535, "../registry": 647, "./container_array_match": 547, }, ], 552: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("fast-isnumeric"), a = t("has-hover"), o = t("../lib"), s = o.nestedProperty, l = t("../lib/events"), c = t("../lib/queue"), u = t("../registry"), f = t("./plot_schema"), h = t("../plots/plots"), p = t("../plots/cartesian/axes"), d = t("../components/drawing"), m = t("../components/color"), g = t("../plots/cartesian/graph_interact").initInteractions, v = t("../constants/xmlns_namespaces"), y = t("../components/selections").clearOutline, x = t("./plot_config").dfltConfig, b = t("./manage_arrays"), _ = t("./helpers"), w = t("./subroutines"), T = t("./edit_types"), k = t("../plots/cartesian/constants").AX_NAME_PATTERN, A = 0; function M(t) { var e = t._fullLayout; e._redrawFromAutoMarginCount ? e._redrawFromAutoMarginCount-- : t.emit("plotly_afterplot"); } function S(t, e) { try { t._fullLayout._paper.style("background", e); } catch (t) { o.error(t); } } function E(t, e) { S(t, m.combine(e, "white")); } function L(t, e) { if (!t._context) { t._context = o.extendDeep({}, x); var r = n.select("base"); t._context._baseUrl = r.size() && r.attr("href") ? window.location.href.split("#")[0] : ""; } var i, s, l, c = t._context; if (e) { for (s = Object.keys(e), i = 0; i < s.length; i++) "editable" !== (l = s[i]) && "edits" !== l && l in c && ("setBackground" === l && "opaque" === e[l] ? (c[l] = E) : (c[l] = e[l])); e.plot3dPixelRatio && !c.plotGlPixelRatio && (c.plotGlPixelRatio = c.plot3dPixelRatio); var u = e.editable; if (void 0 !== u) for ( c.editable = u, s = Object.keys(c.edits), i = 0; i < s.length; i++ ) c.edits[s[i]] = u; if (e.edits) for (s = Object.keys(e.edits), i = 0; i < s.length; i++) (l = s[i]) in c.edits && (c.edits[l] = e.edits[l]); c._exportedPlot = e._exportedPlot; } c.staticPlot && ((c.editable = !1), (c.edits = {}), (c.autosizable = !1), (c.scrollZoom = !1), (c.doubleClick = !1), (c.showTips = !1), (c.showLink = !1), (c.displayModeBar = !1)), "hover" !== c.displayModeBar || a || (c.displayModeBar = !0), ("transparent" !== c.setBackground && "function" == typeof c.setBackground) || (c.setBackground = S), (c._hasZeroHeight = c._hasZeroHeight || 0 === t.clientHeight), (c._hasZeroWidth = c._hasZeroWidth || 0 === t.clientWidth); var f = c.scrollZoom, h = (c._scrollZoom = {}); if (!0 === f) (h.cartesian = 1), (h.gl3d = 1), (h.geo = 1), (h.mapbox = 1); else if ("string" == typeof f) { var p = f.split("+"); for (i = 0; i < p.length; i++) h[p[i]] = 1; } else !1 !== f && ((h.gl3d = 1), (h.geo = 1), (h.mapbox = 1)); } function C(t, e) { var r, n, i = e + 1, a = []; for (r = 0; r < t.length; r++) (n = t[r]) < 0 ? a.push(i + n) : a.push(n); return a; } function P(t, e, r) { var n, i; for (n = 0; n < e.length; n++) { if ((i = e[n]) !== parseInt(i, 10)) throw new Error( "all values in " + r + " must be integers", ); if (i >= t.data.length || i < -t.data.length) throw new Error( r + " must be valid indices for gd.data.", ); if ( e.indexOf(i, n + 1) > -1 || (i >= 0 && e.indexOf(-t.data.length + i) > -1) || (i < 0 && e.indexOf(t.data.length + i) > -1) ) throw new Error( "each index in " + r + " must be unique.", ); } } function I(t, e, r) { if (!Array.isArray(t.data)) throw new Error("gd.data must be an array."); if (void 0 === e) throw new Error("currentIndices is a required argument."); if ( (Array.isArray(e) || (e = [e]), P(t, e, "currentIndices"), void 0 === r || Array.isArray(r) || (r = [r]), void 0 !== r && P(t, r, "newIndices"), void 0 !== r && e.length !== r.length) ) throw new Error( "current and new indices must be of equal length.", ); } function O(t, e, r, n, a) { !(function (t, e, r, n) { var i = o.isPlainObject(n); if (!Array.isArray(t.data)) throw new Error("gd.data must be an array"); if (!o.isPlainObject(e)) throw new Error("update must be a key:value object"); if (void 0 === r) throw new Error( "indices must be an integer or array of integers", ); for (var a in (P(t, r, "indices"), e)) { if (!Array.isArray(e[a]) || e[a].length !== r.length) throw new Error( "attribute " + a + " must be an array of length equal to indices array length", ); if ( i && (!(a in n) || !Array.isArray(n[a]) || n[a].length !== e[a].length) ) throw new Error( "when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object", ); } })(t, e, r, n); for ( var l = (function (t, e, r, n) { var a, l, c, u, f, h = o.isPlainObject(n), p = []; for (var d in (Array.isArray(r) || (r = [r]), (r = C(r, t.data.length - 1)), e)) for (var m = 0; m < r.length; m++) { if ( ((a = t.data[r[m]]), (l = (c = s(a, d)).get()), (u = e[d][m]), !o.isArrayOrTypedArray(u)) ) throw new Error( "attribute: " + d + " index: " + m + " must be an array", ); if (!o.isArrayOrTypedArray(l)) throw new Error( "cannot extend missing or non-array attribute: " + d, ); if (l.constructor !== u.constructor) throw new Error( "cannot extend array with an array of a different type: " + d, ); (f = h ? n[d][m] : n), i(f) || (f = -1), p.push({ prop: c, target: l, insert: u, maxp: Math.floor(f), }); } return p; })(t, e, r, n), c = {}, u = {}, f = 0; f < l.length; f++ ) { var h = l[f].prop, p = l[f].maxp, d = a(l[f].target, l[f].insert, p); h.set(d[0]), Array.isArray(c[h.astr]) || (c[h.astr] = []), c[h.astr].push(d[1]), Array.isArray(u[h.astr]) || (u[h.astr] = []), u[h.astr].push(l[f].target.length); } return { update: c, maxPoints: u }; } function z(t, e) { var r = new t.constructor(t.length + e.length); return r.set(t), r.set(e, t.length), r; } function D(t, e, n, i) { (t = o.getGraphDiv(t)), _.clearPromiseQueue(t); var a = {}; if ("string" == typeof e) a[e] = n; else { if (!o.isPlainObject(e)) return ( o.warn("Restyle fail.", e, n, i), Promise.reject() ); (a = o.extendFlat({}, e)), void 0 === i && (i = n); } Object.keys(a).length && (t.changed = !0); var s = _.coerceTraceIndices(t, i), l = N(t, a, s), u = l.flags; u.calc && (t.calcdata = void 0), u.clearAxisTypes && _.clearAxisTypes(t, s, {}); var f = []; u.fullReplot ? f.push(r._doPlot) : (f.push(h.previousPromises), h.supplyDefaults(t), u.markerSize && (h.doCalcdata(t), H(f)), u.style && f.push(w.doTraceStyle), u.colorbars && f.push(w.doColorBars), f.push(M)), f.push(h.rehover, h.redrag, h.reselect), c.add(t, D, [t, l.undoit, l.traces], D, [ t, l.redoit, l.traces, ]); var p = o.syncOrAsync(f, t); return ( (p && p.then) || (p = Promise.resolve()), p.then(function () { return t.emit("plotly_restyle", l.eventData), t; }) ); } function R(t) { return void 0 === t ? null : t; } function F(t, e) { return e ? function (e, r, n) { var i = s(e, r), a = i.set; return ( (i.set = function (e) { B((n || "") + r, i.get(), e, t), a(e); }), i ); } : s; } function B(t, e, r, n) { if (Array.isArray(e) || Array.isArray(r)) for ( var i = Array.isArray(e) ? e : [], a = Array.isArray(r) ? r : [], s = Math.max(i.length, a.length), l = 0; l < s; l++ ) B(t + "[" + l + "]", i[l], a[l], n); else if (o.isPlainObject(e) || o.isPlainObject(r)) { var c = o.isPlainObject(e) ? e : {}, u = o.isPlainObject(r) ? r : {}, f = o.extendFlat({}, c, u); for (var h in f) B(t + "." + h, c[h], u[h], n); } else void 0 === n[t] && (n[t] = R(e)); } function N(t, e, r) { var n, i = t._fullLayout, a = t._fullData, l = t.data, c = i._guiEditing, d = F(i._preGUI, c), m = o.extendDeepAll({}, e); j(e); var g, v = T.traceFlags(), y = {}, x = {}; function b() { return r.map(function () {}); } function w(t) { var e = p.id2name(t); -1 === g.indexOf(e) && g.push(e); } function k(t) { return "LAYOUT" + t + ".autorange"; } function A(t) { return "LAYOUT" + t + ".range"; } function M(t) { for (var e = t; e < a.length; e++) if (a[e]._input === l[t]) return a[e]; } function S(n, a, o) { if (Array.isArray(n)) n.forEach(function (t) { S(t, a, o); }); else if (!(n in e) && !_.hasParent(e, n)) { var s; if ("LAYOUT" === n.substr(0, 6)) s = d(t.layout, n.replace("LAYOUT", "")); else { var u = r[o]; s = F(i._tracePreGUI[M(u)._fullInput.uid], c)( l[u], n, ); } n in x || (x[n] = b()), void 0 === x[n][o] && (x[n][o] = R(s.get())), void 0 !== a && s.set(a); } } function E(t) { return function (e) { return a[e][t]; }; } function L(t) { return function (e, n) { return !1 === e ? a[r[n]][t] : null; }; } for (var C in e) { if (_.hasParent(e, C)) throw new Error( "cannot set " + C + " and a parent attribute simultaneously", ); var P, I, O, z, D, B, N = e[C]; if ( (("autobinx" !== C && "autobiny" !== C) || ((C = C.charAt(C.length - 1) + "bins"), (N = Array.isArray(N) ? N.map(L(C)) : !1 === N ? r.map(E(C)) : null)), (y[C] = N), "LAYOUT" !== C.substr(0, 6)) ) { for (x[C] = b(), n = 0; n < r.length; n++) { if ( ((P = l[r[n]]), (I = M(r[n])), (z = (O = F(i._tracePreGUI[I._fullInput.uid], c)( P, C, )).get()), void 0 !== (D = Array.isArray(N) ? N[n % N.length] : N)) ) { var U = O.parts[O.parts.length - 1], V = C.substr(0, C.length - U.length - 1), H = V ? V + "." : "", q = V ? s(I, V).get() : I; if ( (B = f.getTraceValObject(I, O.parts)) && B.impliedEdits && null !== D ) for (var G in B.impliedEdits) S(o.relativeAttr(C, G), B.impliedEdits[G], n); else if ( ("thicknessmode" !== U && "lenmode" !== U) || z === D || ("fraction" !== D && "pixels" !== D) || !q ) { if ( "type" === C && (("pie" === D) != ("pie" === z) || ("funnelarea" === D) != ("funnelarea" === z)) ) { var Y = "x", W = "y"; ("bar" !== D && "bar" !== z) || "h" !== P.orientation || ((Y = "y"), (W = "x")), o.swapAttrs(P, ["?", "?src"], "labels", Y), o.swapAttrs(P, ["d?", "?0"], "label", Y), o.swapAttrs(P, ["?", "?src"], "values", W), "pie" === z || "funnelarea" === z ? (s(P, "marker.color").set( s(P, "marker.colors").get(), ), i._pielayer.selectAll("g.trace").remove()) : u.traceIs(P, "cartesian") && s(P, "marker.colors").set( s(P, "marker.color").get(), ); } } else { var Z = i._size, X = q.orient, J = "top" === X || "bottom" === X; if ("thicknessmode" === U) { var K = J ? Z.h : Z.w; S( H + "thickness", q.thickness * ("fraction" === D ? 1 / K : K), n, ); } else { var Q = J ? Z.w : Z.h; S( H + "len", q.len * ("fraction" === D ? 1 / Q : Q), n, ); } } x[C][n] = R(z); if ( -1 !== [ "swapxy", "swapxyaxes", "orientation", "orientationaxes", ].indexOf(C) ) { if ("orientation" === C) { O.set(D); var $ = P.x && !P.y ? "h" : "v"; if ((O.get() || $) === I.orientation) continue; } else "orientationaxes" === C && (P.orientation = { v: "h", h: "v" }[ I.orientation ]); _.swapXYData(P), (v.calc = v.clearAxisTypes = !0); } else -1 !== h.dataArrayContainers.indexOf(O.parts[0]) ? (_.manageArrayContainers(O, D, x), (v.calc = !0)) : (B ? B.arrayOk && !u.traceIs(I, "regl") && (o.isArrayOrTypedArray(D) || o.isArrayOrTypedArray(z)) ? (v.calc = !0) : T.update(v, B) : (v.calc = !0), O.set(D)); } } if ( (-1 !== ["swapxyaxes", "orientationaxes"].indexOf(C) && p.swap(t, r), "orientationaxes" === C) ) { var tt = s(t.layout, "hovermode"), et = tt.get(); "x" === et ? tt.set("y") : "y" === et ? tt.set("x") : "x unified" === et ? tt.set("y unified") : "y unified" === et && tt.set("x unified"); } if (-1 !== ["orientation", "type"].indexOf(C)) { for (g = [], n = 0; n < r.length; n++) { var rt = l[r[n]]; u.traceIs(rt, "cartesian") && (w(rt.xaxis || "x"), w(rt.yaxis || "y")); } S(g.map(k), !0, 0), S(g.map(A), [0, 1], 0); } } else (O = d(t.layout, C.replace("LAYOUT", ""))), (x[C] = [R(O.get())]), O.set(Array.isArray(N) ? N[0] : N), (v.calc = !0); } return ( (v.calc || v.plot) && (v.fullReplot = !0), { flags: v, undoit: x, redoit: y, traces: r, eventData: o.extendDeepNoArrays([], [m, r]), } ); } function j(t) { var e, r, n, i = o.counterRegex("axis", ".title", !1, !1), a = /colorbar\.title$/, s = Object.keys(t); for (e = 0; e < s.length; e++) (r = s[e]), (n = t[r]), ("title" !== r && !i.test(r) && !a.test(r)) || ("string" != typeof n && "number" != typeof n) ? r.indexOf("titlefont") > -1 && -1 === r.indexOf("grouptitlefont") ? l(r, r.replace("titlefont", "title.font")) : r.indexOf("titleposition") > -1 ? l( r, r.replace("titleposition", "title.position"), ) : r.indexOf("titleside") > -1 ? l(r, r.replace("titleside", "title.side")) : r.indexOf("titleoffset") > -1 && l(r, r.replace("titleoffset", "title.offset")) : l(r, r.replace("title", "title.text")); function l(e, r) { (t[r] = t[e]), delete t[e]; } } function U(t, e, r) { (t = o.getGraphDiv(t)), _.clearPromiseQueue(t); var n = {}; if ("string" == typeof e) n[e] = r; else { if (!o.isPlainObject(e)) return o.warn("Relayout fail.", e, r), Promise.reject(); n = o.extendFlat({}, e); } Object.keys(n).length && (t.changed = !0); var i = W(t, n), a = i.flags; a.calc && (t.calcdata = void 0); var s = [h.previousPromises]; a.layoutReplot ? s.push(w.layoutReplot) : Object.keys(n).length && (V(t, a, i) || h.supplyDefaults(t), a.legend && s.push(w.doLegend), a.layoutstyle && s.push(w.layoutStyles), a.axrange && H(s, i.rangesAltered), a.ticks && s.push(w.doTicksRelayout), a.modebar && s.push(w.doModeBar), a.camera && s.push(w.doCamera), a.colorbars && s.push(w.doColorBars), s.push(M)), s.push(h.rehover, h.redrag, h.reselect), c.add(t, U, [t, i.undoit], U, [t, i.redoit]); var l = o.syncOrAsync(s, t); return ( (l && l.then) || (l = Promise.resolve(t)), l.then(function () { return t.emit("plotly_relayout", i.eventData), t; }) ); } function V(t, e, r) { var n = t._fullLayout; if (!e.axrange) return !1; for (var i in e) if ("axrange" !== i && e[i]) return !1; for (var a in r.rangesAltered) { var o = p.id2name(a), s = t.layout[o], l = n[o]; if ( ((l.autorange = s.autorange), s.range && (l.range = s.range.slice()), l.cleanRange(), l._matchGroup) ) for (var c in l._matchGroup) if (c !== a) { var u = n[p.id2name(c)]; (u.autorange = l.autorange), (u.range = l.range.slice()), (u._input.range = l.range.slice()); } } return !0; } function H(t, e) { var r = e ? function (t) { var r = []; for (var n in e) { var i = p.getFromId(t, n); if ( (r.push(n), -1 !== (i.ticklabelposition || "").indexOf("inside") && i._anchorAxis && r.push(i._anchorAxis._id), i._matchGroup) ) for (var a in i._matchGroup) e[a] || r.push(a); } return p.draw(t, r, { skipTitle: !0 }); } : function (t) { return p.draw(t, "redraw"); }; t.push( y, w.doAutoRangeAndConstraints, r, w.drawData, w.finalDraw, ); } var q = /^[xyz]axis[0-9]*\.range(\[[0|1]\])?$/, G = /^[xyz]axis[0-9]*\.autorange$/, Y = /^[xyz]axis[0-9]*\.domain(\[[0|1]\])?$/; function W(t, e) { var r, n, i, a = t.layout, l = t._fullLayout, c = l._guiEditing, h = F(l._preGUI, c), d = Object.keys(e), m = p.list(t), g = o.extendDeepAll({}, e), v = {}; for (j(e), d = Object.keys(e), n = 0; n < d.length; n++) if (0 === d[n].indexOf("allaxes")) { for (i = 0; i < m.length; i++) { var y = m[i]._id.substr(1), x = -1 !== y.indexOf("scene") ? y + "." : "", w = d[n].replace("allaxes", x + m[i]._name); e[w] || (e[w] = e[d[n]]); } delete e[d[n]]; } var A = T.layoutFlags(), M = {}, S = {}; function E(t, r) { if (Array.isArray(t)) t.forEach(function (t) { E(t, r); }); else if (!(t in e) && !_.hasParent(e, t)) { var n = h(a, t); t in S || (S[t] = R(n.get())), void 0 !== r && n.set(r); } } var L, C = {}; function P(t) { var e = p.name2id(t.split(".")[0]); return (C[e] = 1), e; } for (var I in e) { if (_.hasParent(e, I)) throw new Error( "cannot set " + I + " and a parent attribute simultaneously", ); for ( var O = h(a, I), z = e[I], D = O.parts.length - 1; D > 0 && "string" != typeof O.parts[D]; ) D--; var B = O.parts[D], N = O.parts[D - 1] + "." + B, U = O.parts.slice(0, D).join("."), V = s(t.layout, U).get(), H = s(l, U).get(), W = O.get(); if (void 0 !== z) { (M[I] = z), (S[I] = "reverse" === B ? z : R(W)); var X = f.getLayoutValObject(l, O.parts); if (X && X.impliedEdits && null !== z) for (var J in X.impliedEdits) E(o.relativeAttr(I, J), X.impliedEdits[J]); if (-1 !== ["width", "height"].indexOf(I)) if (z) { E("autosize", null); var K = "height" === I ? "width" : "height"; E(K, l[K]); } else l[I] = t._initialAutoSize[I]; else if ("autosize" === I) E("width", z ? null : l.width), E("height", z ? null : l.height); else if (N.match(q)) P(N), s(l, U + "._inputRange").set(null); else if (N.match(G)) { P(N), s(l, U + "._inputRange").set(null); var Q = s(l, U).get(); Q._inputDomain && (Q._input.domain = Q._inputDomain.slice()); } else N.match(Y) && s(l, U + "._inputDomain").set(null); if ("type" === B) { L = V; var $ = "linear" === H.type && "log" === z, tt = "log" === H.type && "linear" === z; if ($ || tt) { if (L && L.range) if (H.autorange) $ && (L.range = L.range[1] > L.range[0] ? [1, 2] : [2, 1]); else { var et = L.range[0], rt = L.range[1]; $ ? (et <= 0 && rt <= 0 && E(U + ".autorange", !0), et <= 0 ? (et = rt / 1e6) : rt <= 0 && (rt = et / 1e6), E( U + ".range[0]", Math.log(et) / Math.LN10, ), E( U + ".range[1]", Math.log(rt) / Math.LN10, )) : (E(U + ".range[0]", Math.pow(10, et)), E(U + ".range[1]", Math.pow(10, rt))); } else E(U + ".autorange", !0); Array.isArray(l._subplots.polar) && l._subplots.polar.length && l[O.parts[0]] && "radialaxis" === O.parts[1] && delete l[O.parts[0]]._subplot.viewInitial[ "radialaxis.range" ], u.getComponentMethod( "annotations", "convertCoords", )(t, H, z, E), u.getComponentMethod("images", "convertCoords")( t, H, z, E, ); } else E(U + ".autorange", !0), E(U + ".range", null); s(l, U + "._inputRange").set(null); } else if (B.match(k)) { var nt = s(l, I).get(), it = (z || {}).type; (it && "-" !== it) || (it = "linear"), u.getComponentMethod( "annotations", "convertCoords", )(t, nt, it, E), u.getComponentMethod("images", "convertCoords")( t, nt, it, E, ); } var at = b.containerArrayMatch(I); if (at) { (r = at.array), (n = at.index); var ot = at.property, st = X || { editType: "calc" }; "" !== n && "" === ot && (b.isAddVal(z) ? (S[I] = null) : b.isRemoveVal(z) ? (S[I] = (s(a, r).get() || [])[n]) : o.warn("unrecognized full object value", e)), T.update(A, st), v[r] || (v[r] = {}); var lt = v[r][n]; lt || (lt = v[r][n] = {}), (lt[ot] = z), delete e[I]; } else "reverse" === B ? (V.range ? V.range.reverse() : (E(U + ".autorange", !0), (V.range = [1, 0])), H.autorange ? (A.calc = !0) : (A.plot = !0)) : (("dragmode" === I && ((!1 === z && !1 !== W) || (!1 !== z && !1 === W))) || (l._has("scatter-like") && l._has("regl") && "dragmode" === I && ("lasso" === z || "select" === z) && "lasso" !== W && "select" !== W) || l._has("gl2d") ? (A.plot = !0) : X ? T.update(A, X) : (A.calc = !0), O.set(z)); } } for (r in v) { b.applyContainerArrayChanges(t, h(a, r), v[r], A, h) || (A.plot = !0); } for (var ct in C) { var ut = (L = p.getFromId(t, ct)) && L._constraintGroup; if (ut) for (var ft in ((A.calc = !0), ut)) C[ft] || (p.getFromId(t, ft)._constraintShrinkable = !0); } return ( (Z(t) || e.height || e.width) && (A.plot = !0), (A.plot || A.calc) && (A.layoutReplot = !0), { flags: A, rangesAltered: C, undoit: S, redoit: M, eventData: g, } ); } function Z(t) { var e = t._fullLayout, r = e.width, n = e.height; return ( t.layout.autosize && h.plotAutoSize(t, t.layout, e), e.width !== r || e.height !== n ); } function X(t, e, n, i) { (t = o.getGraphDiv(t)), _.clearPromiseQueue(t), o.isPlainObject(e) || (e = {}), o.isPlainObject(n) || (n = {}), Object.keys(e).length && (t.changed = !0), Object.keys(n).length && (t.changed = !0); var a = _.coerceTraceIndices(t, i), s = N(t, o.extendFlat({}, e), a), l = s.flags, u = W(t, o.extendFlat({}, n)), f = u.flags; (l.calc || f.calc) && (t.calcdata = void 0), l.clearAxisTypes && _.clearAxisTypes(t, a, n); var p = []; f.layoutReplot ? p.push(w.layoutReplot) : l.fullReplot ? p.push(r._doPlot) : (p.push(h.previousPromises), V(t, f, u) || h.supplyDefaults(t), l.style && p.push(w.doTraceStyle), (l.colorbars || f.colorbars) && p.push(w.doColorBars), f.legend && p.push(w.doLegend), f.layoutstyle && p.push(w.layoutStyles), f.axrange && H(p, u.rangesAltered), f.ticks && p.push(w.doTicksRelayout), f.modebar && p.push(w.doModeBar), f.camera && p.push(w.doCamera), p.push(M)), p.push(h.rehover, h.redrag, h.reselect), c.add(t, X, [t, s.undoit, u.undoit, s.traces], X, [ t, s.redoit, u.redoit, s.traces, ]); var d = o.syncOrAsync(p, t); return ( (d && d.then) || (d = Promise.resolve(t)), d.then(function () { return ( t.emit("plotly_update", { data: s.eventData, layout: u.eventData, }), t ); }) ); } function J(t) { return function (e) { e._fullLayout._guiEditing = !0; var r = t.apply(null, arguments); return (e._fullLayout._guiEditing = !1), r; }; } var K = [ { pattern: /^hiddenlabels/, attr: "legend.uirevision" }, { pattern: /^((x|y)axis\d*)\.((auto)?range|title\.text)/, }, { pattern: /axis\d*\.showspikes$/, attr: "modebar.uirevision", }, { pattern: /(hover|drag)mode$/, attr: "modebar.uirevision", }, { pattern: /^(scene\d*)\.camera/ }, { pattern: /^(geo\d*)\.(projection|center|fitbounds)/ }, { pattern: /^(ternary\d*\.[abc]axis)\.(min|title\.text)$/, }, { pattern: /^(polar\d*\.radialaxis)\.((auto)?range|angle|title\.text)/, }, { pattern: /^(polar\d*\.angularaxis)\.rotation/ }, { pattern: /^(mapbox\d*)\.(center|zoom|bearing|pitch)/ }, { pattern: /^legend\.(x|y)$/, attr: "editrevision" }, { pattern: /^(shapes|annotations)/, attr: "editrevision", }, { pattern: /^title\.text$/, attr: "editrevision" }, ], Q = [ { pattern: /^selectedpoints$/, attr: "selectionrevision", }, { pattern: /(^|value\.)visible$/, attr: "legend.uirevision", }, { pattern: /^dimensions\[\d+\]\.constraintrange/ }, { pattern: /^node\.(x|y|groups)/ }, { pattern: /^level$/ }, { pattern: /(^|value\.)name$/ }, { pattern: /colorbar\.title\.text$/ }, { pattern: /colorbar\.(x|y)$/, attr: "editrevision" }, ]; function $(t, e) { for (var r = 0; r < e.length; r++) { var n = e[r], i = t.match(n.pattern); if (i) { var a = i[1] || ""; return { head: a, tail: t.substr(a.length + 1), attr: n.attr, }; } } } function tt(t, e) { var r = s(e, t).get(); if (void 0 !== r) return r; var n = t.split("."); for (n.pop(); n.length > 1; ) if ( (n.pop(), void 0 !== (r = s(e, n.join(".") + ".uirevision").get())) ) return r; return e.uirevision; } function et(t, e) { for (var r = 0; r < e.length; r++) if (e[r]._fullInput.uid === t) return r; return -1; } function rt(t, e, r) { for (var n = 0; n < e.length; n++) if (e[n].uid === t) return n; return !e[r] || e[r].uid ? -1 : r; } function nt(t, e) { var r = o.isPlainObject(t), n = Array.isArray(t); return r || n ? ((r && o.isPlainObject(e)) || (n && Array.isArray(e))) && JSON.stringify(t) === JSON.stringify(e) : t === e; } function it(t, e, r, n) { var i, a, l, c = n.getValObject, u = n.flags, f = n.immutable, h = n.inArray, p = n.arrayIndex; function d() { var t = i.editType; h && -1 !== t.indexOf("arraydraw") ? o.pushUnique(u.arrays[h], p) : (T.update(u, i), "none" !== t && u.nChanges++, n.transition && i.anim && u.nChangesAnim++, (q.test(l) || G.test(l)) && (u.rangesAltered[r[0]] = 1), Y.test(l) && s(e, "_inputDomain").set(null), "datarevision" === a && (u.newDataRevision = 1)); } function m(t) { return "data_array" === t.valType || t.arrayOk; } for (a in t) { if (u.calc && !n.transition) return; var g = t[a], v = e[a], y = r.concat(a); if ( ((l = y.join(".")), "_" !== a.charAt(0) && "function" != typeof g && g !== v) ) { if ( ("tick0" === a || "dtick" === a) && "geo" !== r[0] ) { var x = e.tickmode; if ("auto" === x || "array" === x || !x) continue; } if ( ("range" !== a || !e.autorange) && (("zmin" !== a && "zmax" !== a) || "contourcarpet" !== e.type) && (i = c(y)) && (!i._compareAsJSON || JSON.stringify(g) !== JSON.stringify(v)) ) { var b, _ = i.valType, w = m(i), k = Array.isArray(g), A = Array.isArray(v); if (k && A) { var M = "_input_" + a, S = t[M], E = e[M]; if (Array.isArray(S) && S === E) continue; } if (void 0 === v) w && k ? (u.calc = !0) : d(); else if (i._isLinkedToArray) { var L = [], C = !1; h || (u.arrays[a] = L); var P = Math.min(g.length, v.length), I = Math.max(g.length, v.length); if (P !== I) { if ("arraydraw" !== i.editType) { d(); continue; } C = !0; } for (b = 0; b < P; b++) it( g[b], v[b], y.concat(b), o.extendFlat({ inArray: a, arrayIndex: b }, n), ); if (C) for (b = P; b < I; b++) L.push(b); } else !_ && o.isPlainObject(g) ? it(g, v, y, n) : w ? k && A ? (f && (u.calc = !0), (f || n.newDataRevision) && d()) : k !== A ? (u.calc = !0) : d() : (k && A && g.length === v.length && String(g) === String(v)) || d(); } } } for (a in e) if ( !(a in t) && "_" !== a.charAt(0) && "function" != typeof e[a] ) { if (m((i = c(r.concat(a)))) && Array.isArray(e[a])) return void (u.calc = !0); d(); } } function at(t) { var e = t._fullLayout, r = t.getBoundingClientRect(); if (!o.equalDomRects(r, e._lastBBox)) { var n = (e._invTransform = o.inverseTransformMatrix( o.getFullTransformMatrix(t), )); (e._invScaleX = Math.sqrt( n[0][0] * n[0][0] + n[0][1] * n[0][1] + n[0][2] * n[0][2], )), (e._invScaleY = Math.sqrt( n[1][0] * n[1][0] + n[1][1] * n[1][1] + n[1][2] * n[1][2], )), (e._lastBBox = r); } } (r.animate = function (t, e, r) { if (((t = o.getGraphDiv(t)), !o.isPlotDiv(t))) throw new Error( "This element is not a Plotly plot: " + t + ". It's likely that you've failed to create a plot before animating it. For more details, see https://plotly.com/javascript/animations/", ); var n = t._transitionData; n._frameQueue || (n._frameQueue = []); var i = (r = h.supplyAnimationDefaults(r)).transition, a = r.frame; function s(t) { return Array.isArray(i) ? t >= i.length ? i[0] : i[t] : i; } function l(t) { return Array.isArray(a) ? t >= a.length ? a[0] : a[t] : a; } function c(t, e) { var r = 0; return function () { if (t && ++r === e) return t(); }; } return ( void 0 === n._frameWaitingCnt && (n._frameWaitingCnt = 0), new Promise(function (a, u) { function f() { n._currentFrame && n._currentFrame.onComplete && n._currentFrame.onComplete(); var e = (n._currentFrame = n._frameQueue.shift()); if (e) { var r = e.name ? e.name.toString() : null; (t._fullLayout._currentFrame = r), (n._lastFrameAt = Date.now()), (n._timeToNext = e.frameOpts.duration), h .transition( t, e.frame.data, e.frame.layout, _.coerceTraceIndices(t, e.frame.traces), e.frameOpts, e.transitionOpts, ) .then(function () { e.onComplete && e.onComplete(); }), t.emit("plotly_animatingframe", { name: r, frame: e.frame, animation: { frame: e.frameOpts, transition: e.transitionOpts, }, }); } else t.emit("plotly_animated"), window.cancelAnimationFrame(n._animationRaf), (n._animationRaf = null); } function p() { t.emit("plotly_animating"), (n._lastFrameAt = -1 / 0), (n._timeToNext = 0), (n._runningTransitions = 0), (n._currentFrame = null); var e = function () { (n._animationRaf = window.requestAnimationFrame(e)), Date.now() - n._lastFrameAt > n._timeToNext && f(); }; e(); } var d, m, g = 0; function v(t) { return ( Array.isArray(i) ? g >= i.length ? (t.transitionOpts = i[g]) : (t.transitionOpts = i[0]) : (t.transitionOpts = i), g++, t ); } var y = [], x = null == e, b = Array.isArray(e); if (!x && !b && o.isPlainObject(e)) y.push({ type: "object", data: v(o.extendFlat({}, e)), }); else if ( x || -1 !== ["string", "number"].indexOf(typeof e) ) for (d = 0; d < n._frames.length; d++) (m = n._frames[d]) && (x || String(m.group) === String(e)) && y.push({ type: "byname", name: String(m.name), data: v({ name: m.name }), }); else if (b) for (d = 0; d < e.length; d++) { var w = e[d]; -1 !== ["number", "string"].indexOf(typeof w) ? ((w = String(w)), y.push({ type: "byname", name: w, data: v({ name: w }), })) : o.isPlainObject(w) && y.push({ type: "object", data: v(o.extendFlat({}, w)), }); } for (d = 0; d < y.length; d++) if ( "byname" === (m = y[d]).type && !n._frameHash[m.data.name] ) return ( o.warn( 'animate failure: frame not found: "' + m.data.name + '"', ), void u() ); -1 !== ["next", "immediate"].indexOf(r.mode) && (function () { if (0 !== n._frameQueue.length) { for (; n._frameQueue.length; ) { var e = n._frameQueue.pop(); e.onInterrupt && e.onInterrupt(); } t.emit("plotly_animationinterrupted", []); } })(), "reverse" === r.direction && y.reverse(); var T = t._fullLayout._currentFrame; if (T && r.fromcurrent) { var k = -1; for (d = 0; d < y.length; d++) if ("byname" === (m = y[d]).type && m.name === T) { k = d; break; } if (k > 0 && k < y.length - 1) { var A = []; for (d = 0; d < y.length; d++) (m = y[d]), ("byname" !== y[d].type || d > k) && A.push(m); y = A; } } y.length > 0 ? (function (e) { if (0 !== e.length) { for (var i = 0; i < e.length; i++) { var o; o = "byname" === e[i].type ? h.computeFrame(t, e[i].name) : e[i].data; var f = l(i), d = s(i); d.duration = Math.min(d.duration, f.duration); var m = { frame: o, name: e[i].name, frameOpts: f, transitionOpts: d, }; i === e.length - 1 && ((m.onComplete = c(a, 2)), (m.onInterrupt = u)), n._frameQueue.push(m); } "immediate" === r.mode && (n._lastFrameAt = -1 / 0), n._animationRaf || p(); } })(y) : (t.emit("plotly_animated"), a()); }) ); }), (r.addFrames = function (t, e, r) { if (((t = o.getGraphDiv(t)), null == e)) return Promise.resolve(); if (!o.isPlotDiv(t)) throw new Error( "This element is not a Plotly plot: " + t + ". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/", ); var n, i, a, s, l = t._transitionData._frames, u = t._transitionData._frameHash; if (!Array.isArray(e)) throw new Error( "addFrames failure: frameList must be an Array of frame definitions" + e, ); var f = l.length + 2 * e.length, p = [], d = {}; for (n = e.length - 1; n >= 0; n--) if (o.isPlainObject(e[n])) { var m = e[n].name, g = (u[m] || d[m] || {}).name, v = e[n].name, y = u[g] || d[g]; g && v && "number" == typeof v && y && A < 5 && (A++, o.warn( 'addFrames: overwriting frame "' + (u[g] || d[g]).name + '" with a frame whose name of type "number" also equates to "' + g + '". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.', ), 5 === A && o.warn( "addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.", )), (d[m] = { name: m }), p.push({ frame: h.supplyFrameDefaults(e[n]), index: r && void 0 !== r[n] && null !== r[n] ? r[n] : f + n, }); } p.sort(function (t, e) { return t.index > e.index ? -1 : t.index < e.index ? 1 : 0; }); var x = [], b = [], _ = l.length; for (n = p.length - 1; n >= 0; n--) { if ( ("number" == typeof (i = p[n].frame).name && o.warn( "Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings", ), !i.name) ) for ( ; u[ (i.name = "frame " + t._transitionData._counter++) ]; ); if (u[i.name]) { for ( a = 0; a < l.length && (l[a] || {}).name !== i.name; a++ ); x.push({ type: "replace", index: a, value: i }), b.unshift({ type: "replace", index: a, value: l[a], }); } else (s = Math.max(0, Math.min(p[n].index, _))), x.push({ type: "insert", index: s, value: i }), b.unshift({ type: "delete", index: s }), _++; } var w = h.modifyFrames, T = h.modifyFrames, k = [t, b], M = [t, x]; return c && c.add(t, w, k, T, M), h.modifyFrames(t, x); }), (r.deleteFrames = function (t, e) { if (((t = o.getGraphDiv(t)), !o.isPlotDiv(t))) throw new Error( "This element is not a Plotly plot: " + t, ); var r, n, i = t._transitionData._frames, a = [], s = []; if (!e) for (e = [], r = 0; r < i.length; r++) e.push(r); for ( (e = e.slice()).sort(), r = e.length - 1; r >= 0; r-- ) (n = e[r]), a.push({ type: "delete", index: n }), s.unshift({ type: "insert", index: n, value: i[n] }); var l = h.modifyFrames, u = h.modifyFrames, f = [t, s], p = [t, a]; return c && c.add(t, l, f, u, p), h.modifyFrames(t, a); }), (r.addTraces = function t(e, n, i) { e = o.getGraphDiv(e); var a, s, l = [], u = r.deleteTraces, f = t, h = [e, l], p = [e, n]; for ( (function (t, e, r) { var n, i; if (!Array.isArray(t.data)) throw new Error("gd.data must be an array."); if (void 0 === e) throw new Error("traces must be defined."); for ( Array.isArray(e) || (e = [e]), n = 0; n < e.length; n++ ) if ( "object" != typeof (i = e[n]) || Array.isArray(i) || null === i ) throw new Error( "all values in traces array must be non-array objects", ); if ( (void 0 === r || Array.isArray(r) || (r = [r]), void 0 !== r && r.length !== e.length) ) throw new Error( "if indices is specified, traces.length must equal indices.length", ); })(e, n, i), Array.isArray(n) || (n = [n]), n = n.map(function (t) { return o.extendFlat({}, t); }), _.cleanData(n), a = 0; a < n.length; a++ ) e.data.push(n[a]); for (a = 0; a < n.length; a++) l.push(-n.length + a); if (void 0 === i) return (s = r.redraw(e)), c.add(e, u, h, f, p), s; Array.isArray(i) || (i = [i]); try { I(e, l, i); } catch (t) { throw ( (e.data.splice(e.data.length - n.length, n.length), t) ); } return ( c.startSequence(e), c.add(e, u, h, f, p), (s = r.moveTraces(e, l, i)), c.stopSequence(e), s ); }), (r.deleteTraces = function t(e, n) { e = o.getGraphDiv(e); var i, a, s = [], l = r.addTraces, u = t, f = [e, s, n], h = [e, n]; if (void 0 === n) throw new Error( "indices must be an integer or array of integers.", ); for ( Array.isArray(n) || (n = [n]), P(e, n, "indices"), (n = C(n, e.data.length - 1)).sort(o.sorterDes), i = 0; i < n.length; i += 1 ) (a = e.data.splice(n[i], 1)[0]), s.push(a); var p = r.redraw(e); return c.add(e, l, f, u, h), p; }), (r.extendTraces = function t(e, n, i, a) { function s(t, e, r) { var n, i; if (o.isTypedArray(t)) if (r < 0) { var a = new t.constructor(0), s = z(t, e); r < 0 ? ((n = s), (i = a)) : ((n = a), (i = s)); } else if ( ((n = new t.constructor(r)), (i = new t.constructor(t.length + e.length - r)), r === e.length) ) n.set(e), i.set(t); else if (r < e.length) { var l = e.length - r; n.set(e.subarray(l)), i.set(t), i.set(e.subarray(0, l), t.length); } else { var c = r - e.length, u = t.length - c; n.set(t.subarray(u)), n.set(e, c), i.set(t.subarray(0, u)); } else (n = t.concat(e)), (i = r >= 0 && r < n.length ? n.splice(0, n.length - r) : []); return [n, i]; } var l = O((e = o.getGraphDiv(e)), n, i, a, s), u = r.redraw(e), f = [e, l.update, i, l.maxPoints]; return c.add(e, r.prependTraces, f, t, arguments), u; }), (r.moveTraces = function t(e, n, i) { var a, s = [], l = [], u = t, f = t, h = [(e = o.getGraphDiv(e)), i, n], p = [e, n, i]; if ( (I(e, n, i), (n = Array.isArray(n) ? n : [n]), void 0 === i) ) for (i = [], a = 0; a < n.length; a++) i.push(-n.length + a); for ( i = Array.isArray(i) ? i : [i], n = C(n, e.data.length - 1), i = C(i, e.data.length - 1), a = 0; a < e.data.length; a++ ) -1 === n.indexOf(a) && s.push(e.data[a]); for (a = 0; a < n.length; a++) l.push({ newIndex: i[a], trace: e.data[n[a]] }); for ( l.sort(function (t, e) { return t.newIndex - e.newIndex; }), a = 0; a < l.length; a += 1 ) s.splice(l[a].newIndex, 0, l[a].trace); e.data = s; var d = r.redraw(e); return c.add(e, u, h, f, p), d; }), (r.prependTraces = function t(e, n, i, a) { function s(t, e, r) { var n, i; if (o.isTypedArray(t)) if (r <= 0) { var a = new t.constructor(0), s = z(e, t); r < 0 ? ((n = s), (i = a)) : ((n = a), (i = s)); } else if ( ((n = new t.constructor(r)), (i = new t.constructor(t.length + e.length - r)), r === e.length) ) n.set(e), i.set(t); else if (r < e.length) { var l = e.length - r; n.set(e.subarray(0, l)), i.set(e.subarray(l)), i.set(t, l); } else { var c = r - e.length; n.set(e), n.set(t.subarray(0, c), e.length), i.set(t.subarray(c)); } else (n = e.concat(t)), (i = r >= 0 && r < n.length ? n.splice(r, n.length) : []); return [n, i]; } var l = O((e = o.getGraphDiv(e)), n, i, a, s), u = r.redraw(e), f = [e, l.update, i, l.maxPoints]; return c.add(e, r.extendTraces, f, t, arguments), u; }), (r.newPlot = function (t, e, n, i) { return ( (t = o.getGraphDiv(t)), h.cleanPlot( [], {}, t._fullData || [], t._fullLayout || {}, ), h.purge(t), r._doPlot(t, e, n, i) ); }), (r._doPlot = function (t, e, i, a) { var s; if ( ((t = o.getGraphDiv(t)), l.init(t), o.isPlainObject(e)) ) { var c = e; (e = c.data), (i = c.layout), (a = c.config), (s = c.frames); } if ( !1 === l.triggerHandler(t, "plotly_beforeplot", [e, i, a]) ) return Promise.reject(); e || i || o.isPlotDiv(t) || o.warn( "Calling _doPlot as if redrawing but this container doesn't yet have a plot.", t, ), L(t, a), i || (i = {}), n.select(t).classed("js-plotly-plot", !0), d.makeTester(), Array.isArray(t._promises) || (t._promises = []); var f = 0 === (t.data || []).length && Array.isArray(e); Array.isArray(e) && (_.cleanData(e), f ? (t.data = e) : t.data.push.apply(t.data, e), (t.empty = !1)), (t.layout && !f) || (t.layout = _.cleanLayout(i)), h.supplyDefaults(t); var m = t._fullLayout, y = m._has("cartesian"); (m._replotting = !0), (f || m._shouldCreateBgLayer) && (!(function (t) { var e = n.select(t), r = t._fullLayout; if ( ((r._calcInverseTransform = at), r._calcInverseTransform(t), (r._container = e .selectAll(".plot-container") .data([0])), r._container .enter() .insert("div", ":first-child") .classed("plot-container", !0) .classed("plotly", !0), (r._paperdiv = r._container .selectAll(".svg-container") .data([0])), r._paperdiv .enter() .append("div") .classed("user-select-none", !0) .classed("svg-container", !0) .style("position", "relative"), (r._glcontainer = r._paperdiv .selectAll(".gl-container") .data([{}])), r._glcontainer .enter() .append("div") .classed("gl-container", !0), r._paperdiv.selectAll(".main-svg").remove(), r._paperdiv.select(".modebar-container").remove(), (r._paper = r._paperdiv .insert("svg", ":first-child") .classed("main-svg", !0)), (r._toppaper = r._paperdiv .append("svg") .classed("main-svg", !0)), (r._modebardiv = r._paperdiv.append("div")), delete r._modeBar, (r._hoverpaper = r._paperdiv .append("svg") .classed("main-svg", !0)), !r._uid) ) { var i = {}; n.selectAll("defs").each(function () { this.id && (i[this.id.split("-")[1]] = 1); }), (r._uid = o.randstr(i)); } r._paperdiv.selectAll(".main-svg").attr(v.svgAttrs), (r._defs = r._paper .append("defs") .attr("id", "defs-" + r._uid)), (r._clips = r._defs .append("g") .classed("clips", !0)), (r._topdefs = r._toppaper .append("defs") .attr("id", "topdefs-" + r._uid)), (r._topclips = r._topdefs .append("g") .classed("clips", !0)), (r._bgLayer = r._paper .append("g") .classed("bglayer", !0)), (r._draggers = r._paper .append("g") .classed("draglayer", !0)); var a = r._paper .append("g") .classed("layer-below", !0); (r._imageLowerLayer = a .append("g") .classed("imagelayer", !0)), (r._shapeLowerLayer = a .append("g") .classed("shapelayer", !0)), (r._cartesianlayer = r._paper .append("g") .classed("cartesianlayer", !0)), (r._polarlayer = r._paper .append("g") .classed("polarlayer", !0)), (r._smithlayer = r._paper .append("g") .classed("smithlayer", !0)), (r._ternarylayer = r._paper .append("g") .classed("ternarylayer", !0)), (r._geolayer = r._paper .append("g") .classed("geolayer", !0)), (r._funnelarealayer = r._paper .append("g") .classed("funnelarealayer", !0)), (r._pielayer = r._paper .append("g") .classed("pielayer", !0)), (r._iciclelayer = r._paper .append("g") .classed("iciclelayer", !0)), (r._treemaplayer = r._paper .append("g") .classed("treemaplayer", !0)), (r._sunburstlayer = r._paper .append("g") .classed("sunburstlayer", !0)), (r._indicatorlayer = r._toppaper .append("g") .classed("indicatorlayer", !0)), (r._glimages = r._paper .append("g") .classed("glimages", !0)); var s = r._toppaper .append("g") .classed("layer-above", !0); (r._imageUpperLayer = s .append("g") .classed("imagelayer", !0)), (r._shapeUpperLayer = s .append("g") .classed("shapelayer", !0)), (r._selectionLayer = r._toppaper .append("g") .classed("selectionlayer", !0)), (r._infolayer = r._toppaper .append("g") .classed("infolayer", !0)), (r._menulayer = r._toppaper .append("g") .classed("menulayer", !0)), (r._zoomlayer = r._toppaper .append("g") .classed("zoomlayer", !0)), (r._hoverlayer = r._hoverpaper .append("g") .classed("hoverlayer", !0)), r._modebardiv .classed("modebar-container", !0) .style("position", "absolute") .style("top", "0px") .style("right", "0px"), t.emit("plotly_framework"); })(t), m._shouldCreateBgLayer && delete m._shouldCreateBgLayer), d.initGradients(t), d.initPatterns(t), f && p.saveShowSpikeInitial(t); var x = !t.calcdata || t.calcdata.length !== (t._fullData || []).length; x && h.doCalcdata(t); for (var b = 0; b < t.calcdata.length; b++) t.calcdata[b][0].trace = t._fullData[b]; t._context.responsive ? t._responsiveChartHandler || ((t._responsiveChartHandler = function () { o.isHidden(t) || h.resize(t); }), window.addEventListener( "resize", t._responsiveChartHandler, )) : o.clearResponsive(t); var T = o.extendFlat({}, m._size), k = 0; function A() { if ( (h.clearAutoMarginIds(t), w.drawMarginPushers(t), p.allowAutoMargin(t), m._has("pie")) ) for (var e = t._fullData, r = 0; r < e.length; r++) { var n = e[r]; "pie" === n.type && n.automargin && h.allowAutoMargin( t, "pie." + n.uid + ".automargin", ); } return h.doAutoMargin(t), h.previousPromises(t); } function S() { t._transitioning || (w.doAutoRangeAndConstraints(t), f && p.saveRangeInitial(t), u.getComponentMethod( "rangeslider", "calcAutorange", )(t)); } var E = [ h.previousPromises, function () { if (s) return r.addFrames(t, s); }, function e() { for ( var r = m._basePlotModules, n = 0; n < r.length; n++ ) r[n].drawFramework && r[n].drawFramework(t); !m._glcanvas && m._has("gl") && ((m._glcanvas = m._glcontainer .selectAll(".gl-canvas") .data( [ { key: "contextLayer", context: !0, pick: !1, }, { key: "focusLayer", context: !1, pick: !1 }, { key: "pickLayer", context: !1, pick: !0 }, ], function (t) { return t.key; }, )), m._glcanvas .enter() .append("canvas") .attr("class", function (t) { return ( "gl-canvas gl-canvas-" + t.key.replace("Layer", "") ); }) .style({ position: "absolute", top: 0, left: 0, overflow: "visible", "pointer-events": "none", })); var i = t._context.plotGlPixelRatio; if (m._glcanvas) { m._glcanvas .attr("width", m.width * i) .attr("height", m.height * i) .style("width", m.width + "px") .style("height", m.height + "px"); var a = m._glcanvas.data()[0].regl; if ( a && (Math.floor(m.width * i) !== a._gl.drawingBufferWidth || Math.floor(m.height * i) !== a._gl.drawingBufferHeight) ) { var s = "WebGL context buffer and canvas dimensions do not match due to browser/WebGL bug."; if (!k) return ( o.log( s + " Clearing graph and plotting again.", ), h.cleanPlot([], {}, t._fullData, m), h.supplyDefaults(t), (m = t._fullLayout), h.doCalcdata(t), k++, e() ); o.error(s); } } return ( "h" === m.modebar.orientation ? m._modebardiv .style("height", null) .style("width", "100%") : m._modebardiv .style("width", null) .style("height", m.height + "px"), h.previousPromises(t) ); }, A, function () { if (h.didMarginChange(T, m._size)) return o.syncOrAsync([A, w.layoutStyles], t); }, ]; y && E.push(function () { if (x) return o.syncOrAsync( [ u.getComponentMethod("shapes", "calcAutorange"), u.getComponentMethod( "annotations", "calcAutorange", ), S, ], t, ); S(); }), E.push(w.layoutStyles), y && E.push( function () { return p.draw(t, f ? "" : "redraw"); }, function (t) { t._fullLayout._insideTickLabelsAutorange && U( t, t._fullLayout._insideTickLabelsAutorange, ).then(function () { t._fullLayout._insideTickLabelsAutorange = void 0; }); }, ), E.push( w.drawData, w.finalDraw, g, h.addLinks, h.rehover, h.redrag, h.reselect, h.doAutoMargin, function (t) { t._fullLayout._insideTickLabelsAutorange && f && p.saveRangeInitial(t, !0); }, h.previousPromises, ); var C = o.syncOrAsync(E, t); return ( (C && C.then) || (C = Promise.resolve()), C.then(function () { return M(t), t; }) ); }), (r.purge = function (t) { var e = (t = o.getGraphDiv(t))._fullLayout || {}, r = t._fullData || []; return ( h.cleanPlot([], {}, r, e), h.purge(t), l.purge(t), e._container && e._container.remove(), delete t._context, t ); }), (r.react = function (t, e, n, i) { var a, l; (t = o.getGraphDiv(t)), _.clearPromiseQueue(t); var c = t._fullData, p = t._fullLayout; if (o.isPlotDiv(t) && c && p) { if (o.isPlainObject(e)) { var d = e; (e = d.data), (n = d.layout), (i = d.config), (a = d.frames); } var m = !1; if (i) { var g = o.extendDeep({}, t._context); (t._context = void 0), L(t, i), (m = (function t(e, r) { var n; for (n in e) if ("_" !== n.charAt(0)) { var i = e[n], a = r[n]; if (i !== a) if ( o.isPlainObject(i) && o.isPlainObject(a) ) { if (t(i, a)) return !0; } else { if ( !Array.isArray(i) || !Array.isArray(a) ) return !0; if (i.length !== a.length) return !0; for (var s = 0; s < i.length; s++) if (i[s] !== a[s]) { if ( !o.isPlainObject(i[s]) || !o.isPlainObject(a[s]) ) return !0; if (t(i[s], a[s])) return !0; } } } })(g, t._context)); } (t.data = e || []), _.cleanData(t.data), (t.layout = n || {}), _.cleanLayout(t.layout), (function (t, e, r, n) { var i, a, l, c, u, f, h, p, d, m, g = n._preGUI, v = [], y = {}, x = {}; for (i in g) { if ((u = $(i, K))) { if ( ((d = u.head), (m = u.tail), (a = u.attr || d + ".uirevision"), (c = (l = s(n, a).get()) && tt(a, e)) && c === l) ) { if ( (null === (f = g[i]) && (f = void 0), nt((p = (h = s(e, i)).get()), f)) ) { void 0 === p && "autorange" === m && v.push(d), h.set(R(s(n, i).get())); continue; } if ( "autorange" === m || "range[" === m.substr(0, 6) ) { var b = g[d + ".range[0]"], _ = g[d + ".range[1]"], w = g[d + ".autorange"]; if ( w || (null === w && null === b && null === _) ) { if (!(d in y)) { var T = s(e, d).get(); y[d] = T && (T.autorange || (!1 !== T.autorange && (!T.range || 2 !== T.range.length))); } if (y[d]) { h.set(R(s(n, i).get())); continue; } } } } } else o.warn("unrecognized GUI edit: " + i); delete g[i], u && "range[" === u.tail.substr(0, 6) && (x[u.head] = 1); } for (var k = 0; k < v.length; k++) { var A = v[k]; if (x[A]) { var M = s(e, A).get(); M && delete M.autorange; } } var S = n._tracePreGUI; for (var E in S) { var L, C = S[E], P = null; for (i in C) { if (!P) { var I = et(E, r); if (I < 0) { delete S[E]; break; } var O = rt(E, t, (L = r[I]._fullInput).index); if (O < 0) { delete S[E]; break; } P = t[O]; } if ((u = $(i, Q))) { if ( (u.attr ? (c = (l = s(n, u.attr).get()) && tt(u.attr, e)) : ((l = L.uirevision), void 0 === (c = P.uirevision) && (c = e.uirevision)), c && c === l && (null === (f = C[i]) && (f = void 0), nt((p = (h = s(P, i)).get()), f))) ) { h.set(R(s(L, i).get())); continue; } } else o.warn( "unrecognized GUI edit: " + i + " in trace uid " + E, ); delete C[i]; } } })(t.data, t.layout, c, p), h.supplyDefaults(t, { skipUpdateCalc: !0 }); var v = t._fullData, y = t._fullLayout, x = void 0 === y.datarevision, b = y.transition, k = (function (t, e, r, n, i) { var a = T.layoutFlags(); function o(t) { return f.getLayoutValObject(r, t); } (a.arrays = {}), (a.rangesAltered = {}), (a.nChanges = 0), (a.nChangesAnim = 0), it(e, r, [], { getValObject: o, flags: a, immutable: n, transition: i, gd: t, }), (a.plot || a.calc) && (a.layoutReplot = !0); i && a.nChanges && a.nChangesAnim && (a.anim = a.nChanges === a.nChangesAnim ? "all" : "some"); return a; })(t, p, y, x, b), A = k.newDataRevision, S = (function (t, e, r, n, i, a) { var o = e.length === r.length; if (!i && !o) return { fullReplot: !0, calc: !0 }; var s, l, c = T.traceFlags(); (c.arrays = {}), (c.nChanges = 0), (c.nChangesAnim = 0); var u = { getValObject: function (t) { var e = f.getTraceValObject(l, t); return ( !l._module.animatable && e.anim && (e.anim = !1), e ); }, flags: c, immutable: n, transition: i, newDataRevision: a, gd: t, }, p = {}; for (s = 0; s < e.length; s++) if (r[s]) { if ( ((l = r[s]._fullInput), h.hasMakesDataTransform(l) && (l = r[s]), p[l.uid]) ) continue; (p[l.uid] = 1), it(e[s]._fullInput, l, [], u); } (c.calc || c.plot) && (c.fullReplot = !0); i && c.nChanges && c.nChangesAnim && (c.anim = c.nChanges === c.nChangesAnim && o ? "all" : "some"); return c; })(t, c, v, x, b, A); if ((Z(t) && (k.layoutReplot = !0), S.calc || k.calc)) { t.calcdata = void 0; for ( var E = Object.getOwnPropertyNames(y), C = 0; C < E.length; C++ ) { var P = E[C], I = P.substring(0, 5); if ("xaxis" === I || "yaxis" === I) { var O = y[P]._emptyCategories; O && O(); } } } else h.supplyDefaultsUpdateCalc(t.calcdata, v); var z = []; if ( (a && ((t._transitionData = {}), h.createTransitionData(t), z.push(function () { return r.addFrames(t, a); })), y.transition && !m && (S.anim || k.anim)) ) k.ticks && z.push(w.doTicksRelayout), h.doCalcdata(t), w.doAutoRangeAndConstraints(t), z.push(function () { return h.transitionFromReact(t, S, k, p); }); else if (S.fullReplot || k.layoutReplot || m) (t._fullLayout._skipDefaults = !0), z.push(r._doPlot); else { for (var D in k.arrays) { var F = k.arrays[D]; if (F.length) { var B = u.getComponentMethod(D, "drawOne"); if (B !== o.noop) for (var N = 0; N < F.length; N++) B(t, F[N]); else { var j = u.getComponentMethod(D, "draw"); if (j === o.noop) throw new Error( "cannot draw components: " + D, ); j(t); } } } z.push(h.previousPromises), S.style && z.push(w.doTraceStyle), (S.colorbars || k.colorbars) && z.push(w.doColorBars), k.legend && z.push(w.doLegend), k.layoutstyle && z.push(w.layoutStyles), k.axrange && H(z), k.ticks && z.push(w.doTicksRelayout), k.modebar && z.push(w.doModeBar), k.camera && z.push(w.doCamera), z.push(M); } z.push(h.rehover, h.redrag, h.reselect), ((l = o.syncOrAsync(z, t)) && l.then) || (l = Promise.resolve(t)); } else l = r.newPlot(t, e, n, i); return l.then(function () { return ( t.emit("plotly_react", { data: e, layout: n }), t ); }); }), (r.redraw = function (t) { if (((t = o.getGraphDiv(t)), !o.isPlotDiv(t))) throw new Error( "This element is not a Plotly plot: " + t, ); return ( _.cleanData(t.data), _.cleanLayout(t.layout), (t.calcdata = void 0), r._doPlot(t).then(function () { return t.emit("plotly_redraw"), t; }) ); }), (r.relayout = U), (r.restyle = D), (r.setPlotConfig = function (t) { return o.extendFlat(x, t); }), (r.update = X), (r._guiRelayout = J(U)), (r._guiRestyle = J(D)), (r._guiUpdate = J(X)), (r._storeDirectGUIEdit = function (t, e, r) { for (var n in r) { B(n, s(t, n).get(), r[n], e); } }); }, { "../components/color": 367, "../components/drawing": 389, "../components/selections": 455, "../constants/xmlns_namespaces": 492, "../lib": 515, "../lib/events": 504, "../lib/queue": 531, "../plots/cartesian/axes": 566, "../plots/cartesian/constants": 573, "../plots/cartesian/graph_interact": 576, "../plots/plots": 628, "../registry": 647, "./edit_types": 548, "./helpers": 549, "./manage_arrays": 551, "./plot_config": 553, "./plot_schema": 554, "./subroutines": 556, "@plotly/d3": 58, "fast-isnumeric": 190, "has-hover": 228, }, ], 553: [ function (t, e, r) { "use strict"; var n = { staticPlot: { valType: "boolean", dflt: !1 }, typesetMath: { valType: "boolean", dflt: !0 }, plotlyServerURL: { valType: "string", dflt: "" }, editable: { valType: "boolean", dflt: !1 }, edits: { annotationPosition: { valType: "boolean", dflt: !1 }, annotationTail: { valType: "boolean", dflt: !1 }, annotationText: { valType: "boolean", dflt: !1 }, axisTitleText: { valType: "boolean", dflt: !1 }, colorbarPosition: { valType: "boolean", dflt: !1 }, colorbarTitleText: { valType: "boolean", dflt: !1 }, legendPosition: { valType: "boolean", dflt: !1 }, legendText: { valType: "boolean", dflt: !1 }, shapePosition: { valType: "boolean", dflt: !1 }, titleText: { valType: "boolean", dflt: !1 }, }, editSelection: { valType: "boolean", dflt: !0 }, autosizable: { valType: "boolean", dflt: !1 }, responsive: { valType: "boolean", dflt: !1 }, fillFrame: { valType: "boolean", dflt: !1 }, frameMargins: { valType: "number", dflt: 0, min: 0, max: 0.5, }, scrollZoom: { valType: "flaglist", flags: ["cartesian", "gl3d", "geo", "mapbox"], extras: [!0, !1], dflt: "gl3d+geo+mapbox", }, doubleClick: { valType: "enumerated", values: [!1, "reset", "autosize", "reset+autosize"], dflt: "reset+autosize", }, doubleClickDelay: { valType: "number", dflt: 300, min: 0, }, showAxisDragHandles: { valType: "boolean", dflt: !0 }, showAxisRangeEntryBoxes: { valType: "boolean", dflt: !0 }, showTips: { valType: "boolean", dflt: !0 }, showLink: { valType: "boolean", dflt: !1 }, linkText: { valType: "string", dflt: "Edit chart", noBlank: !0, }, sendData: { valType: "boolean", dflt: !0 }, showSources: { valType: "any", dflt: !1 }, displayModeBar: { valType: "enumerated", values: ["hover", !0, !1], dflt: "hover", }, showSendToCloud: { valType: "boolean", dflt: !1 }, showEditInChartStudio: { valType: "boolean", dflt: !1 }, modeBarButtonsToRemove: { valType: "any", dflt: [] }, modeBarButtonsToAdd: { valType: "any", dflt: [] }, modeBarButtons: { valType: "any", dflt: !1 }, toImageButtonOptions: { valType: "any", dflt: {} }, displaylogo: { valType: "boolean", dflt: !0 }, watermark: { valType: "boolean", dflt: !1 }, plotGlPixelRatio: { valType: "number", dflt: 2, min: 1, max: 4, }, setBackground: { valType: "any", dflt: "transparent" }, topojsonURL: { valType: "string", noBlank: !0, dflt: "https://cdn.plot.ly/", }, mapboxAccessToken: { valType: "string", dflt: null }, logging: { valType: "integer", min: 0, max: 2, dflt: 1 }, notifyOnLogging: { valType: "integer", min: 0, max: 2, dflt: 0, }, queueLength: { valType: "integer", min: 0, dflt: 0 }, globalTransforms: { valType: "any", dflt: [] }, locale: { valType: "string", dflt: "en-US" }, locales: { valType: "any", dflt: {} }, }, i = {}; !(function t(e, r) { for (var n in e) { var i = e[n]; i.valType ? (r[n] = i.dflt) : (r[n] || (r[n] = {}), t(i, r[n])); } })(n, i), (e.exports = { configAttributes: n, dfltConfig: i }); }, {}, ], 554: [ function (t, e, r) { "use strict"; var n = t("../registry"), i = t("../lib"), a = t("../plots/attributes"), o = t("../plots/layout_attributes"), s = t("../plots/frame_attributes"), l = t("../plots/animation_attributes"), c = t("./plot_config").configAttributes, u = t("./edit_types"), f = i.extendDeepAll, h = i.isPlainObject, p = i.isArrayOrTypedArray, d = i.nestedProperty, m = i.valObjectMeta, g = [ "_isSubplotObj", "_isLinkedToArray", "_arrayAttrRegexps", "_deprecated", ]; function v(t, e, r) { if (!t) return !1; if (t._isLinkedToArray) if (y(e[r])) r++; else if (r < e.length) return !1; for (; r < e.length; r++) { var n = t[e[r]]; if (!h(n)) break; if (((t = n), r === e.length - 1)) break; if (t._isLinkedToArray) { if (!y(e[++r])) return !1; } else if ("info_array" === t.valType) { var i = e[++r]; if (!y(i)) return !1; var a = t.items; if (Array.isArray(a)) { if (i >= a.length) return !1; if (2 === t.dimensions) { if ((r++, e.length === r)) return t; var o = e[r]; if (!y(o)) return !1; t = a[i][o]; } else t = a[i]; } else t = a; } } return t; } function y(t) { return t === Math.round(t) && t >= 0; } function x() { var t, e, r = {}; for (t in (f(r, o), n.subplotsRegistry)) { if ((e = n.subplotsRegistry[t]).layoutAttributes) if (Array.isArray(e.attr)) for (var i = 0; i < e.attr.length; i++) w(r, e, e.attr[i]); else w(r, e, "subplot" === e.attr ? e.name : e.attr); } for (t in n.componentsRegistry) { var a = (e = n.componentsRegistry[t]).schema; if (a && (a.subplots || a.layout)) { var s = a.subplots; if (s && s.xaxis && !s.yaxis) for (var l in s.xaxis) delete r.yaxis[l]; } else "colorscale" === e.name ? f(r, e.layoutAttributes) : e.layoutAttributes && T(r, e.layoutAttributes, e.name); } return { layoutAttributes: _(r) }; } function b() { var t = { frames: f({}, s) }; return _(t), t.frames; } function _(t) { return ( (function (t) { r.crawl(t, function (t, e, n) { r.isValObject(t) ? (!0 !== t.arrayOk && "data_array" !== t.valType) || (n[e + "src"] = { valType: "string", editType: "none", }) : h(t) && (t.role = "object"); }); })(t), (function (t) { r.crawl(t, function (t, e, r) { if (t) { var n = t._isLinkedToArray; n && (delete t._isLinkedToArray, (r[e] = { items: {} }), (r[e].items[n] = t), (r[e].role = "object")); } }); })(t), (function (t) { !(function t(e) { for (var r in e) if (h(e[r])) t(e[r]); else if (Array.isArray(e[r])) for (var n = 0; n < e[r].length; n++) t(e[r][n]); else e[r] instanceof RegExp && (e[r] = e[r].toString()); })(t); })(t), t ); } function w(t, e, r) { var n = d(t, r), i = f({}, e.layoutAttributes); (i._isSubplotObj = !0), n.set(i); } function T(t, e, r) { var n = d(t, r); n.set(f(n.get() || {}, e)); } (r.IS_SUBPLOT_OBJ = "_isSubplotObj"), (r.IS_LINKED_TO_ARRAY = "_isLinkedToArray"), (r.DEPRECATED = "_deprecated"), (r.UNDERSCORE_ATTRS = g), (r.get = function () { var t = {}; n.allTypes.forEach(function (e) { t[e] = (function (t) { var e, i; (e = n.modules[t]._module), (i = e.basePlotModule); var o = { type: null }, s = f({}, a), l = f({}, e.attributes); r.crawl(l, function (t, e, r, n, i) { d(s, i).set(void 0), void 0 === t && d(l, i).set(void 0); }), f(o, s), n.traceIs(t, "noOpacity") && delete o.opacity; n.traceIs(t, "showLegend") || (delete o.showlegend, delete o.legendgroup); n.traceIs(t, "noHover") && (delete o.hoverinfo, delete o.hoverlabel); e.selectPoints || delete o.selectedpoints; f(o, l), i.attributes && f(o, i.attributes); o.type = t; var c = { meta: e.meta || {}, categories: e.categories || {}, animatable: Boolean(e.animatable), type: t, attributes: _(o), }; if (e.layoutAttributes) { var u = {}; f(u, e.layoutAttributes), (c.layoutAttributes = _(u)); } e.animatable || r.crawl(c, function (t) { r.isValObject(t) && "anim" in t && delete t.anim; }); return c; })(e); }); var e = {}; return ( Object.keys(n.transformsRegistry).forEach(function (t) { e[t] = (function (t) { var e = n.transformsRegistry[t], r = f({}, e.attributes); return ( Object.keys(n.componentsRegistry).forEach( function (e) { var i = n.componentsRegistry[e]; i.schema && i.schema.transforms && i.schema.transforms[t] && Object.keys(i.schema.transforms[t]).forEach( function (e) { T(r, i.schema.transforms[t][e], e); }, ); }, ), { attributes: _(r) } ); })(t); }), { defs: { valObjects: m, metaKeys: g.concat([ "description", "role", "editType", "impliedEdits", ]), editType: { traces: u.traces, layout: u.layout }, impliedEdits: {}, }, traces: t, layout: x(), transforms: e, frames: b(), animation: _(l), config: _(c), } ); }), (r.crawl = function (t, e, n, i) { var a = n || 0; (i = i || ""), Object.keys(t).forEach(function (n) { var o = t[n]; if (-1 === g.indexOf(n)) { var s = (i ? i + "." : "") + n; e(o, n, t, a, s), r.isValObject(o) || (h(o) && "impliedEdits" !== n && r.crawl(o, e, a + 1, s)); } }); }), (r.isValObject = function (t) { return t && void 0 !== t.valType; }), (r.findArrayAttributes = function (t) { var e, n, i = [], o = [], s = []; function l(t, r, a, l) { (o = o.slice(0, l).concat([r])), (s = s.slice(0, l).concat([t && t._isLinkedToArray])), t && ("data_array" === t.valType || !0 === t.arrayOk) && !( "colorbar" === o[l - 1] && ("ticktext" === r || "tickvals" === r) ) && (function t(e, r, a) { var l = e[o[r]], c = a + o[r]; if (r === o.length - 1) p(l) && i.push(n + c); else if (s[r]) { if (Array.isArray(l)) for (var u = 0; u < l.length; u++) h(l[u]) && t(l[u], r + 1, c + "[" + u + "]."); } else h(l) && t(l, r + 1, c + "."); })(e, 0, ""); } (e = t), (n = ""), r.crawl(a, l), t._module && t._module.attributes && r.crawl(t._module.attributes, l); var c = t.transforms; if (c) for (var u = 0; u < c.length; u++) { var f = c[u], d = f._module; d && ((n = "transforms[" + u + "]."), (e = f), r.crawl(d.attributes, l)); } return i; }), (r.getTraceValObject = function (t, e) { var r, i, o = e[0], s = 1; if ("transforms" === o) { if (1 === e.length) return a.transforms; var l = t.transforms; if (!Array.isArray(l) || !l.length) return !1; var c = e[1]; if (!y(c) || c >= l.length) return !1; (i = (r = (n.transformsRegistry[l[c].type] || {}) .attributes) && r[e[2]]), (s = 3); } else { var u = t._module; if ( (u || (u = (n.modules[t.type || a.type.dflt] || {}) ._module), !u) ) return !1; if (!(i = (r = u.attributes) && r[o])) { var f = u.basePlotModule; f && f.attributes && (i = f.attributes[o]); } i || (i = a[o]); } return v(i, e, s); }), (r.getLayoutValObject = function (t, e) { return v( (function (t, e) { var r, i, a, s, l = t._basePlotModules; if (l) { var c; for (r = 0; r < l.length; r++) { if ((a = l[r]).attrRegex && a.attrRegex.test(e)) { if (a.layoutAttrOverrides) return a.layoutAttrOverrides; !c && a.layoutAttributes && (c = a.layoutAttributes); } var u = a.baseLayoutAttrOverrides; if (u && e in u) return u[e]; } if (c) return c; } var f = t._modules; if (f) for (r = 0; r < f.length; r++) if ((s = f[r].layoutAttributes) && e in s) return s[e]; for (i in n.componentsRegistry) { if ( "colorscale" === (a = n.componentsRegistry[i]).name && 0 === e.indexOf("coloraxis") ) return a.layoutAttributes[e]; if (!a.schema && e === a.name) return a.layoutAttributes; } return e in o && o[e]; })(t, e[0]), e, 1, ); }); }, { "../lib": 515, "../plots/animation_attributes": 560, "../plots/attributes": 562, "../plots/frame_attributes": 595, "../plots/layout_attributes": 619, "../registry": 647, "./edit_types": 548, "./plot_config": 553, }, ], 555: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("../plots/attributes"), a = { name: { valType: "string", editType: "none" } }; function o(t) { return t && "string" == typeof t; } function s(t) { var e = t.length - 1; return ( "s" !== t.charAt(e) && n.warn("bad argument to arrayDefaultKey: " + t), t.substr(0, t.length - 1) + "defaults" ); } (a.templateitemname = { valType: "string", editType: "calc", }), (r.templatedArray = function (t, e) { return ( (e._isLinkedToArray = t), (e.name = a.name), (e.templateitemname = a.templateitemname), e ); }), (r.traceTemplater = function (t) { var e, r, a = {}; for (e in t) (r = t[e]), Array.isArray(r) && r.length && (a[e] = 0); return { newTrace: function (o) { var s = { type: (e = n.coerce(o, {}, i, "type")), _template: null, }; if (e in a) { r = t[e]; var l = a[e] % r.length; a[e]++, (s._template = r[l]); } return s; }, }; }), (r.newContainer = function (t, e, r) { var i = t._template, a = i && (i[e] || (r && i[r])); return ( n.isPlainObject(a) || (a = null), (t[e] = { _template: a }) ); }), (r.arrayTemplater = function (t, e, r) { var n = t._template, i = n && n[s(e)], a = n && n[e]; (Array.isArray(a) && a.length) || (a = []); var l = {}; return { newItem: function (t) { var e = { name: t.name, _input: t }, n = (e.templateitemname = t.templateitemname); if (!o(n)) return (e._template = i), e; for (var s = 0; s < a.length; s++) { var c = a[s]; if (c.name === n) return (l[n] = 1), (e._template = c), e; } return (e[r] = t[r] || !1), (e._template = !1), e; }, defaultItems: function () { for (var t = [], e = 0; e < a.length; e++) { var r = a[e], n = r.name; if (o(n) && !l[n]) { var i = { _template: r, name: n, _input: { _templateitemname: n }, }; (i.templateitemname = r.templateitemname), t.push(i), (l[n] = 1); } } return t; }, }; }), (r.arrayDefaultKey = s), (r.arrayEditor = function (t, e, r) { var i = (n.nestedProperty(t, e).get() || []).length, a = r._index, o = a >= i && (r._input || {})._templateitemname; o && (a = i); var s, l = e + "[" + a + "]"; function c() { (s = {}), o && ((s[l] = {}), (s[l].templateitemname = o)); } function u(t, e) { o ? n.nestedProperty(s[l], t).set(e) : (s[l + "." + t] = e); } function f() { var t = s; return c(), t; } return ( c(), { modifyBase: function (t, e) { s[t] = e; }, modifyItem: u, getUpdateObj: f, applyUpdate: function (e, r) { e && u(e, r); var i = f(); for (var a in i) n.nestedProperty(t, a).set(i[a]); }, } ); }); }, { "../lib": 515, "../plots/attributes": 562 }, ], 556: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../registry"), a = t("../plots/plots"), o = t("../lib"), s = t("../lib/clear_gl_canvases"), l = t("../components/color"), c = t("../components/drawing"), u = t("../components/titles"), f = t("../components/modebar"), h = t("../plots/cartesian/axes"), p = t("../constants/alignment"), d = t("../plots/cartesian/constraints"), m = d.enforce, g = d.clean, v = t("../plots/cartesian/autorange").doAutoRange; function y(t, e, r) { for (var n = 0; n < r.length; n++) { var i = r[n][0], a = r[n][1]; if ( !(i[0] >= t[1] || i[1] <= t[0]) && a[0] < e[1] && a[1] > e[0] ) return !0; } return !1; } function x(t) { var e, i, s, u, d, m, g = t._fullLayout, v = g._size, x = v.p, _ = h.list(t, "", !0); if ( (g._paperdiv .style({ width: t._context.responsive && g.autosize && !t._context._hasZeroWidth && !t.layout.width ? "100%" : g.width + "px", height: t._context.responsive && g.autosize && !t._context._hasZeroHeight && !t.layout.height ? "100%" : g.height + "px", }) .selectAll(".main-svg") .call(c.setSize, g.width, g.height), t._context.setBackground(t, g.paper_bgcolor), r.drawMainTitle(t), f.manage(t), !g._has("cartesian")) ) return a.previousPromises(t); function T(t, e, r) { var n = t._lw / 2; return "x" === t._id.charAt(0) ? e ? "top" === r ? e._offset - x - n : e._offset + e._length + x + n : v.t + v.h * (1 - (t.position || 0)) + (n % 1) : e ? "right" === r ? e._offset + e._length + x + n : e._offset - x - n : v.l + v.w * (t.position || 0) + (n % 1); } for (e = 0; e < _.length; e++) { var k = (u = _[e])._anchorAxis; (u._linepositions = {}), (u._lw = c.crispRound(t, u.linewidth, 1)), (u._mainLinePosition = T(u, k, u.side)), (u._mainMirrorPosition = u.mirror && k ? T(u, k, p.OPPOSITE_SIDE[u.side]) : null); } var A = [], M = [], S = [], E = 1 === l.opacity(g.paper_bgcolor) && 1 === l.opacity(g.plot_bgcolor) && g.paper_bgcolor === g.plot_bgcolor; for (i in g._plots) if ((s = g._plots[i]).mainplot) s.bg && s.bg.remove(), (s.bg = void 0); else { var L = s.xaxis.domain, C = s.yaxis.domain, P = s.plotgroup; if (y(L, C, S)) { var I = P.node(), O = (s.bg = o.ensureSingle(P, "rect", "bg")); I.insertBefore(O.node(), I.childNodes[0]), M.push(i); } else P.select("rect.bg").remove(), S.push([L, C]), E || (A.push(i), M.push(i)); } var z, D, R, F, B, N, j, U, V, H, q, G, Y, W = g._bgLayer.selectAll(".bg").data(A); for ( W.enter().append("rect").classed("bg", !0), W.exit().remove(), W.each(function (t) { g._plots[t].bg = n.select(this); }), e = 0; e < M.length; e++ ) (s = g._plots[M[e]]), (d = s.xaxis), (m = s.yaxis), s.bg && void 0 !== d._offset && void 0 !== m._offset && s.bg .call( c.setRect, d._offset - x, m._offset - x, d._length + 2 * x, m._length + 2 * x, ) .call(l.fill, g.plot_bgcolor) .style("stroke-width", 0); if (!g._hasOnlyLargeSploms) for (i in g._plots) { (s = g._plots[i]), (d = s.xaxis), (m = s.yaxis); var Z, X, J = (s.clipId = "clip" + g._uid + i + "plot"), K = o.ensureSingleById( g._clips, "clipPath", J, function (t) { t.classed("plotclip", !0).append("rect"); }, ); (s.clipRect = K.select("rect").attr({ width: d._length, height: m._length, })), c.setTranslate(s.plot, d._offset, m._offset), s._hasClipOnAxisFalse ? ((Z = null), (X = J)) : ((Z = J), (X = null)), c.setClipUrl(s.plot, Z, t), (s.layerClipId = X); } function Q(t) { return "M" + z + "," + t + "H" + D; } function $(t) { return "M" + d._offset + "," + t + "h" + d._length; } function tt(t) { return "M" + t + "," + U + "V" + j; } function et(t) { return "M" + t + "," + m._offset + "v" + m._length; } function rt(t, e, r) { if (!t.showline || i !== t._mainSubplot) return ""; if (!t._anchorAxis) return r(t._mainLinePosition); var n = e(t._mainLinePosition); return t.mirror && (n += e(t._mainMirrorPosition)), n; } for (i in g._plots) { (s = g._plots[i]), (d = s.xaxis), (m = s.yaxis); var nt = "M0,0"; b(d, i) && ((B = w(d, "left", m, _)), (z = d._offset - (B ? x + B : 0)), (N = w(d, "right", m, _)), (D = d._offset + d._length + (N ? x + N : 0)), (R = T(d, m, "bottom")), (F = T(d, m, "top")), !(Y = !d._anchorAxis || i !== d._mainSubplot) || ("allticks" !== d.mirror && "all" !== d.mirror) || (d._linepositions[i] = [R, F]), (nt = rt(d, Q, $)), Y && d.showline && ("all" === d.mirror || "allticks" === d.mirror) && (nt += Q(R) + Q(F)), s.xlines .style("stroke-width", d._lw + "px") .call( l.stroke, d.showline ? d.linecolor : "rgba(0,0,0,0)", )), s.xlines.attr("d", nt); var it = "M0,0"; b(m, i) && ((q = w(m, "bottom", d, _)), (j = m._offset + m._length + (q ? x : 0)), (G = w(m, "top", d, _)), (U = m._offset - (G ? x : 0)), (V = T(m, d, "left")), (H = T(m, d, "right")), !(Y = !m._anchorAxis || i !== m._mainSubplot) || ("allticks" !== m.mirror && "all" !== m.mirror) || (m._linepositions[i] = [V, H]), (it = rt(m, tt, et)), Y && m.showline && ("all" === m.mirror || "allticks" === m.mirror) && (it += tt(V) + tt(H)), s.ylines .style("stroke-width", m._lw + "px") .call( l.stroke, m.showline ? m.linecolor : "rgba(0,0,0,0)", )), s.ylines.attr("d", it); } return h.makeClipPaths(t), a.previousPromises(t); } function b(t, e) { return ( (t.ticks || t.showline) && (e === t._mainSubplot || "all" === t.mirror || "allticks" === t.mirror) ); } function _(t, e, r) { if (!r.showline || !r._lw) return !1; if ("all" === r.mirror || "allticks" === r.mirror) return !0; var n = r._anchorAxis; if (!n) return !1; var i = p.FROM_BL[e]; return r.side === e ? n.domain[i] === t.domain[i] : r.mirror && n.domain[1 - i] === t.domain[1 - i]; } function w(t, e, r, n) { if (_(t, e, r)) return r._lw; for (var i = 0; i < n.length; i++) { var a = n[i]; if (a._mainAxis === r._mainAxis && _(t, e, a)) return a._lw; } return 0; } function T(t, e) { var r = t.title, n = t._size, i = 0; switch ( ("start" === e ? (i = r.pad.l) : "end" === e && (i = -r.pad.r), r.xref) ) { case "paper": return n.l + n.w * r.x + i; case "container": default: return t.width * r.x + i; } } function k(t, e) { var r = t.title, n = t._size, i = 0; if ( ("0em" !== e && e ? e === p.CAP_SHIFT + "em" && (i = r.pad.t) : (i = -r.pad.b), "auto" === r.y) ) return n.t / 2; switch (r.yref) { case "paper": return n.t + n.h - n.h * r.y + i; case "container": default: return t.height - t.height * r.y + i; } } (r.layoutStyles = function (t) { return o.syncOrAsync([a.doAutoMargin, x], t); }), (r.drawMainTitle = function (t) { var e = t._fullLayout, r = (function (t) { var e = t.title, r = "middle"; o.isRightAnchor(e) ? (r = "end") : o.isLeftAnchor(e) && (r = "start"); return r; })(e), n = (function (t) { var e = t.title, r = "0em"; o.isTopAnchor(e) ? (r = p.CAP_SHIFT + "em") : o.isMiddleAnchor(e) && (r = p.MID_SHIFT + "em"); return r; })(e); u.draw(t, "gtitle", { propContainer: e, propName: "title.text", placeholder: e._dfltTitle.plot, attributes: { x: T(e, r), y: k(e, n), "text-anchor": r, dy: n, }, }); }), (r.doTraceStyle = function (t) { var e, n = t.calcdata, o = []; for (e = 0; e < n.length; e++) { var l = n[e], c = l[0] || {}, u = c.trace || {}, f = u._module || {}, h = f.arraysToCalcdata; h && h(l, u); var p = f.editStyle; p && o.push({ fn: p, cd0: c }); } if (o.length) { for (e = 0; e < o.length; e++) { var d = o[e]; d.fn(t, d.cd0); } s(t), r.redrawReglTraces(t); } return ( a.style(t), i.getComponentMethod("legend", "draw")(t), a.previousPromises(t) ); }), (r.doColorBars = function (t) { return ( i.getComponentMethod("colorbar", "draw")(t), a.previousPromises(t) ); }), (r.layoutReplot = function (t) { var e = t.layout; return (t.layout = void 0), i.call("_doPlot", t, "", e); }), (r.doLegend = function (t) { return ( i.getComponentMethod("legend", "draw")(t), a.previousPromises(t) ); }), (r.doTicksRelayout = function (t) { return ( h.draw(t, "redraw"), t._fullLayout._hasOnlyLargeSploms && (i.subplotsRegistry.splom.updateGrid(t), s(t), r.redrawReglTraces(t)), r.drawMainTitle(t), a.previousPromises(t) ); }), (r.doModeBar = function (t) { var e = t._fullLayout; f.manage(t); for (var r = 0; r < e._basePlotModules.length; r++) { var n = e._basePlotModules[r].updateFx; n && n(t); } return a.previousPromises(t); }), (r.doCamera = function (t) { for ( var e = t._fullLayout, r = e._subplots.gl3d, n = 0; n < r.length; n++ ) { var i = e[r[n]]; i._scene.setViewport(i); } }), (r.drawData = function (t) { var e = t._fullLayout; s(t); for (var n = e._basePlotModules, o = 0; o < n.length; o++) n[o].plot(t); return ( r.redrawReglTraces(t), a.style(t), i.getComponentMethod("selections", "draw")(t), i.getComponentMethod("shapes", "draw")(t), i.getComponentMethod("annotations", "draw")(t), i.getComponentMethod("images", "draw")(t), (e._replotting = !1), a.previousPromises(t) ); }), (r.redrawReglTraces = function (t) { var e = t._fullLayout; if (e._has("regl")) { var r, n, i = t._fullData, a = [], s = []; for ( e._hasOnlyLargeSploms && e._splomGrid.draw(), r = 0; r < i.length; r++ ) { var l = i[r]; !0 === l.visible && 0 !== l._length && ("splom" === l.type ? e._splomScenes[l.uid].draw() : "scattergl" === l.type ? o.pushUnique(a, l.xaxis + l.yaxis) : "scatterpolargl" === l.type && o.pushUnique(s, l.subplot)); } for (r = 0; r < a.length; r++) (n = e._plots[a[r]])._scene && n._scene.draw(); for (r = 0; r < s.length; r++) (n = e[s[r]]._subplot)._scene && n._scene.draw(); } }), (r.doAutoRangeAndConstraints = function (t) { for ( var e, r = h.list(t, "", !0), n = {}, i = 0; i < r.length; i++ ) if (!n[(e = r[i])._id]) { (n[e._id] = 1), g(t, e), v(t, e); var a = e._matchGroup; if (a) for (var o in a) { var s = h.getFromId(t, o); v(t, s, e.range), (n[o] = 1); } } m(t); }), (r.finalDraw = function (t) { i.getComponentMethod("rangeslider", "draw")(t), i.getComponentMethod("rangeselector", "draw")(t); }), (r.drawMarginPushers = function (t) { i.getComponentMethod("legend", "draw")(t), i.getComponentMethod("rangeselector", "draw")(t), i.getComponentMethod("sliders", "draw")(t), i.getComponentMethod("updatemenus", "draw")(t), i.getComponentMethod("colorbar", "draw")(t); }); }, { "../components/color": 367, "../components/drawing": 389, "../components/modebar": 430, "../components/titles": 476, "../constants/alignment": 483, "../lib": 515, "../lib/clear_gl_canvases": 499, "../plots/cartesian/autorange": 565, "../plots/cartesian/axes": 566, "../plots/cartesian/constraints": 574, "../plots/plots": 628, "../registry": 647, "@plotly/d3": 58, }, ], 557: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = n.isPlainObject, a = t("./plot_schema"), o = t("../plots/plots"), s = t("../plots/attributes"), l = t("./plot_template"), c = t("./plot_config").dfltConfig; function u(t, e) { t = n.extendDeep({}, t); var r, a, o = Object.keys(t).sort(); function s(e, r, n) { if (i(r) && i(e)) u(e, r); else if (Array.isArray(r) && Array.isArray(e)) { var o = l.arrayTemplater({ _template: t }, n); for (a = 0; a < r.length; a++) { var s = r[a], c = o.newItem(s)._template; c && u(c, s); } var f = o.defaultItems(); for (a = 0; a < f.length; a++) r.push(f[a]._template); for (a = 0; a < r.length; a++) delete r[a].templateitemname; } } for (r = 0; r < o.length; r++) { var c = o[r], h = t[c]; if ((c in e ? s(h, e[c], c) : (e[c] = h), f(c) === c)) for (var p in e) { var d = f(p); p === d || d !== c || p in t || s(h, e[p], c); } } } function f(t) { return t.replace(/[0-9]+$/, ""); } function h(t, e, r, a, o) { var s = o && r(o); for (var c in t) { var u = t[c], p = m(t, c, a), d = m(t, c, o), g = r(d); if (!g) { var v = f(c); v !== c && (g = r((d = m(t, v, o)))); } if ( (!s || s !== g) && !( !g || g._noTemplating || "data_array" === g.valType || (g.arrayOk && Array.isArray(u)) ) ) if (!g.valType && i(u)) h(u, e, r, p, d); else if (g._isLinkedToArray && Array.isArray(u)) for ( var y = !1, x = 0, b = {}, _ = 0; _ < u.length; _++ ) { var w = u[_]; if (i(w)) { var T = w.name; if (T) b[T] || (h(w, e, r, m(u, x, p), m(u, x, d)), x++, (b[T] = 1)); else if (!y) { var k = m(t, l.arrayDefaultKey(c), a), A = m(u, x, p); h(w, e, r, A, m(u, x, d)); var M = n.nestedProperty(e, A); n.nestedProperty(e, k).set(M.get()), M.set(null), (y = !0); } } } else { n.nestedProperty(e, p).set(u); } } } function p(t, e) { return a.getLayoutValObject( t, n.nestedProperty({}, e).parts, ); } function d(t, e) { return a.getTraceValObject( t, n.nestedProperty({}, e).parts, ); } function m(t, e, r) { return r ? Array.isArray(t) ? r + "[" + e + "]" : r + "." + e : e; } function g(t) { for (var e = 0; e < t.length; e++) if (i(t[e])) return !0; } function v(t) { var e; switch (t.code) { case "data": e = "The template has no key data."; break; case "layout": e = "The template has no key layout."; break; case "missing": e = t.path ? "There are no templates for item " + t.path + " with name " + t.templateitemname : "There are no templates for trace " + t.index + ", of type " + t.traceType + "."; break; case "unused": e = t.path ? "The template item at " + t.path + " was not used in constructing the plot." : t.dataCount ? "Some of the templates of type " + t.traceType + " were not used. The template has " + t.templateCount + " traces, the data only has " + t.dataCount + " of this type." : "The template has " + t.templateCount + " traces of type " + t.traceType + " but there are none in the data."; break; case "reused": e = "Some of the templates of type " + t.traceType + " were used more than once. The template has " + t.templateCount + " traces, the data has " + t.dataCount + " of this type."; } return (t.msg = e), t; } (r.makeTemplate = function (t) { (t = n.isPlainObject(t) ? t : n.getGraphDiv(t)), (t = n.extendDeep( { _context: c }, { data: t.data, layout: t.layout }, )), o.supplyDefaults(t); var e = t.data || [], r = t.layout || {}; (r._basePlotModules = t._fullLayout._basePlotModules), (r._modules = t._fullLayout._modules); var a = { data: {}, layout: {} }; e.forEach(function (t) { var e = {}; h(t, e, d.bind(null, t)); var r = n.coerce(t, {}, s, "type"), i = a.data[r]; i || (i = a.data[r] = []), i.push(e); }), h(r, a.layout, p.bind(null, r)), delete a.layout.template; var l = r.template; if (i(l)) { var f, m, g, v, y, x, b = l.layout; i(b) && u(b, a.layout); var _ = l.data; if (i(_)) { for (m in a.data) if (((g = _[m]), Array.isArray(g))) { for ( x = (y = a.data[m]).length, v = g.length, f = 0; f < x; f++ ) u(g[f % v], y[f]); for (f = x; f < v; f++) y.push(n.extendDeep({}, g[f])); } for (m in _) m in a.data || (a.data[m] = n.extendDeep([], _[m])); } } return a; }), (r.validateTemplate = function (t, e) { var r = n.extendDeep( {}, { _context: c, data: t.data, layout: t.layout }, ), a = r.layout || {}; i(e) || (e = a.template || {}); var s = e.layout, l = e.data, u = []; (r.layout = a), (r.layout.template = e), o.supplyDefaults(r); var h = r._fullLayout, p = r._fullData, d = {}; if ( (i(s) ? (!(function t(e, r) { for (var n in e) if ("_" !== n.charAt(0) && i(e[n])) { var a, o = f(n), s = []; for (a = 0; a < r.length; a++) s.push(m(e, n, r[a])), o !== n && s.push(m(e, o, r[a])); for (a = 0; a < s.length; a++) d[s[a]] = 1; t(e[n], s); } })(h, ["layout"]), (function t(e, r) { for (var n in e) if (-1 === n.indexOf("defaults") && i(e[n])) { var a = m(e, n, r); d[a] ? t(e[n], a) : u.push({ code: "unused", path: a }); } })(s, "layout")) : u.push({ code: "layout" }), i(l)) ) { for (var y, x = {}, b = 0; b < p.length; b++) { var _ = p[b]; (x[(y = _.type)] = (x[y] || 0) + 1), _._fullInput._template || u.push({ code: "missing", index: _._fullInput.index, traceType: y, }); } for (y in l) { var w = l[y].length, T = x[y] || 0; w > T ? u.push({ code: "unused", traceType: y, templateCount: w, dataCount: T, }) : T > w && u.push({ code: "reused", traceType: y, templateCount: w, dataCount: T, }); } } else u.push({ code: "data" }); if ( ((function t(e, r) { for (var n in e) if ("_" !== n.charAt(0)) { var a = e[n], o = m(e, n, r); i(a) ? (Array.isArray(e) && !1 === a._template && a.templateitemname && u.push({ code: "missing", path: o, templateitemname: a.templateitemname, }), t(a, o)) : Array.isArray(a) && g(a) && t(a, o); } })({ data: p, layout: h }, ""), u.length) ) return u.map(v); }); }, { "../lib": 515, "../plots/attributes": 562, "../plots/plots": 628, "./plot_config": 553, "./plot_schema": 554, "./plot_template": 555, }, ], 558: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("./plot_api"), a = t("../plots/plots"), o = t("../lib"), s = t("../snapshot/helpers"), l = t("../snapshot/tosvg"), c = t("../snapshot/svgtoimg"), u = t("../version").version, f = { format: { valType: "enumerated", values: ["png", "jpeg", "webp", "svg", "full-json"], dflt: "png", }, width: { valType: "number", min: 1 }, height: { valType: "number", min: 1 }, scale: { valType: "number", min: 0, dflt: 1 }, setBackground: { valType: "any", dflt: !1 }, imageDataOnly: { valType: "boolean", dflt: !1 }, }; e.exports = function (t, e) { var r, h, p, d; function m(t) { return !(t in e) || o.validate(e[t], f[t]); } if ( ((e = e || {}), o.isPlainObject(t) ? ((r = t.data || []), (h = t.layout || {}), (p = t.config || {}), (d = {})) : ((t = o.getGraphDiv(t)), (r = o.extendDeep([], t.data)), (h = o.extendDeep({}, t.layout)), (p = t._context), (d = t._fullLayout || {})), (!m("width") && null !== e.width) || (!m("height") && null !== e.height)) ) throw new Error( "Height and width should be pixel values.", ); if (!m("format")) throw new Error( "Export format is not " + o.join2(f.format.values, ", ", " or ") + ".", ); var g = {}; function v(t, r) { return o.coerce(e, g, f, t, r); } var y = v("format"), x = v("width"), b = v("height"), _ = v("scale"), w = v("setBackground"), T = v("imageDataOnly"), k = document.createElement("div"); (k.style.position = "absolute"), (k.style.left = "-5000px"), document.body.appendChild(k); var A = o.extendFlat({}, h); x ? (A.width = x) : null === e.width && n(d.width) && (A.width = d.width), b ? (A.height = b) : null === e.height && n(d.height) && (A.height = d.height); var M = o.extendFlat({}, p, { _exportedPlot: !0, staticPlot: !0, setBackground: w, }), S = s.getRedrawFunc(k); function E() { return new Promise(function (t) { setTimeout(t, s.getDelay(k._fullLayout)); }); } function L() { return new Promise(function (t, e) { var r = l(k, y, _), n = k._fullLayout.width, f = k._fullLayout.height; function h() { i.purge(k), document.body.removeChild(k); } if ("full-json" === y) { var p = a.graphJson( k, !1, "keepdata", "object", !0, !0, ); return ( (p.version = u), (p = JSON.stringify(p)), h(), t(T ? p : s.encodeJSON(p)) ); } if ((h(), "svg" === y)) return t(T ? r : s.encodeSVG(r)); var d = document.createElement("canvas"); (d.id = o.randstr()), c({ format: y, width: n, height: f, scale: _, canvas: d, svg: r, promise: !0, }) .then(t) .catch(e); }); } return new Promise(function (t, e) { i.newPlot(k, r, A, M) .then(S) .then(E) .then(L) .then(function (e) { t( (function (t) { return T ? t.replace(s.IMAGE_URL_PREFIX, "") : t; })(e), ); }) .catch(function (t) { e(t); }); }); }; }, { "../lib": 515, "../plots/plots": 628, "../snapshot/helpers": 651, "../snapshot/svgtoimg": 653, "../snapshot/tosvg": 655, "../version": 1132, "./plot_api": 552, "fast-isnumeric": 190, }, ], 559: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("../plots/plots"), a = t("./plot_schema"), o = t("./plot_config").dfltConfig, s = n.isPlainObject, l = Array.isArray, c = n.isArrayOrTypedArray; function u(t, e, r, i, a, o) { o = o || []; for (var f = Object.keys(t), h = 0; h < f.length; h++) { var p = f[h]; if ("transforms" !== p) { var v = o.slice(); v.push(p); var y = t[p], x = e[p], b = g(r, p), _ = (b || {}).valType, w = "info_array" === _, T = "colorscale" === _, k = (b || {}).items; if (m(r, p)) if (s(y) && s(x) && "any" !== _) u(y, x, b, i, a, v); else if (w && l(y)) { y.length > x.length && i.push(d("unused", a, v.concat(x.length))); var A, M, S, E, L, C = x.length, P = Array.isArray(k); if ( (P && (C = Math.min(C, k.length)), 2 === b.dimensions) ) for (M = 0; M < C; M++) if (l(y[M])) { y[M].length > x[M].length && i.push( d("unused", a, v.concat(M, x[M].length)), ); var I = x[M].length; for ( A = 0; A < (P ? Math.min(I, k[M].length) : I); A++ ) (S = P ? k[M][A] : k), (E = y[M][A]), (L = x[M][A]), n.validate(E, S) ? L !== E && L !== +E && i.push( d( "dynamic", a, v.concat(M, A), E, L, ), ) : i.push( d("value", a, v.concat(M, A), E), ); } else i.push(d("array", a, v.concat(M), y[M])); else for (M = 0; M < C; M++) (S = P ? k[M] : k), (E = y[M]), (L = x[M]), n.validate(E, S) ? L !== E && L !== +E && i.push(d("dynamic", a, v.concat(M), E, L)) : i.push(d("value", a, v.concat(M), E)); } else if (b.items && !w && l(y)) { var O, z, D = k[Object.keys(k)[0]], R = []; for (O = 0; O < x.length; O++) { var F = x[O]._index || O; if ( ((z = v.slice()).push(F), s(y[F]) && s(x[O])) ) { R.push(F); var B = y[F], N = x[O]; s(B) && !1 !== B.visible && !1 === N.visible ? i.push(d("invisible", a, z)) : u(B, N, D, i, a, z); } } for (O = 0; O < y.length; O++) (z = v.slice()).push(O), s(y[O]) ? -1 === R.indexOf(O) && i.push(d("unused", a, z)) : i.push(d("object", a, z, y[O])); } else !s(y) && s(x) ? i.push(d("object", a, v, y)) : c(y) || !c(x) || w || T ? p in e ? n.validate(y, b) ? "enumerated" === b.valType && ((b.coerceNumber && y !== +x) || y !== x) && i.push(d("dynamic", a, v, y, x)) : i.push(d("value", a, v, y)) : i.push(d("unused", a, v, y)) : i.push(d("array", a, v, y)); else i.push(d("schema", a, v)); } } return i; } function f(t, e) { for ( var r = t.layout.layoutAttributes, i = 0; i < e.length; i++ ) { var a = e[i], o = t.traces[a.type], s = o.layoutAttributes; s && (a.subplot ? n.extendFlat(r[o.attributes.subplot.dflt], s) : n.extendFlat(r, s)); } return r; } e.exports = function (t, e) { void 0 === t && (t = []), void 0 === e && (e = {}); var r, c, h = a.get(), p = [], m = { _context: n.extendFlat({}, o) }; l(t) ? ((m.data = n.extendDeep([], t)), (r = t)) : ((m.data = []), (r = []), p.push(d("array", "data"))), s(e) ? ((m.layout = n.extendDeep({}, e)), (c = e)) : ((m.layout = {}), (c = {}), arguments.length > 1 && p.push(d("object", "layout"))), i.supplyDefaults(m); for (var g = m._fullData, v = r.length, y = 0; y < v; y++) { var x = r[y], b = ["data", y]; if (s(x)) { var _ = g[y], w = _.type, T = h.traces[w].attributes; (T.type = { valType: "enumerated", values: [w] }), !1 === _.visible && !1 !== x.visible && p.push(d("invisible", b)), u(x, _, T, p, b); var k = x.transforms, A = _.transforms; if (k) { l(k) || p.push(d("array", b, ["transforms"])), b.push("transforms"); for (var M = 0; M < k.length; M++) { var S = ["transforms", M], E = k[M].type; if (s(k[M])) { var L = h.transforms[E] ? h.transforms[E].attributes : {}; (L.type = { valType: "enumerated", values: Object.keys(h.transforms), }), u(k[M], A[M], L, p, b, S); } else p.push(d("object", b, S)); } } } else p.push(d("object", b)); } var C = m._fullLayout, P = f(h, g); return u(c, C, P, p, "layout"), 0 === p.length ? void 0 : p; }; var h = { object: function (t, e) { return ( ("layout" === t && "" === e ? "The layout argument" : "data" === t[0] && "" === e ? "Trace " + t[1] + " in the data argument" : p(t) + "key " + e) + " must be linked to an object container" ); }, array: function (t, e) { return ( ("data" === t ? "The data argument" : p(t) + "key " + e) + " must be linked to an array container" ); }, schema: function (t, e) { return p(t) + "key " + e + " is not part of the schema"; }, unused: function (t, e, r) { var n = s(r) ? "container" : "key"; return p(t) + n + " " + e + " did not get coerced"; }, dynamic: function (t, e, r, n) { return [ p(t) + "key", e, "(set to '" + r + "')", "got reset to", "'" + n + "'", "during defaults.", ].join(" "); }, invisible: function (t, e) { return ( (e ? p(t) + "item " + e : "Trace " + t[1]) + " got defaulted to be not visible" ); }, value: function (t, e, r) { return [ p(t) + "key " + e, "is set to an invalid value (" + r + ")", ].join(" "); }, }; function p(t) { return l(t) ? "In data trace " + t[1] + ", " : "In " + t + ", "; } function d(t, e, r, i, a) { var o, s; (r = r || ""), l(e) ? ((o = e[0]), (s = e[1])) : ((o = e), (s = null)); var c = (function (t) { if (!l(t)) return String(t); for (var e = "", r = 0; r < t.length; r++) { var n = t[r]; "number" == typeof n ? (e = e.substr(0, e.length - 1) + "[" + n + "]") : (e += n), r < t.length - 1 && (e += "."); } return e; })(r), u = h[t](e, c, i, a); return ( n.log(u), { code: t, container: o, trace: s, path: r, astr: c, msg: u, } ); } function m(t, e) { var r = y(e), n = r.keyMinusId, i = r.id; return !!(n in t && t[n]._isSubplotObj && i) || e in t; } function g(t, e) { return e in t ? t[e] : t[y(e).keyMinusId]; } var v = n.counterRegex("([a-z]+)"); function y(t) { var e = t.match(v); return { keyMinusId: e && e[1], id: e && e[2] }; } }, { "../lib": 515, "../plots/plots": 628, "./plot_config": 553, "./plot_schema": 554, }, ], 560: [ function (t, e, r) { "use strict"; e.exports = { mode: { valType: "enumerated", dflt: "afterall", values: ["immediate", "next", "afterall"], }, direction: { valType: "enumerated", values: ["forward", "reverse"], dflt: "forward", }, fromcurrent: { valType: "boolean", dflt: !1 }, frame: { duration: { valType: "number", min: 0, dflt: 500 }, redraw: { valType: "boolean", dflt: !0 }, }, transition: { duration: { valType: "number", min: 0, dflt: 500, editType: "none", }, easing: { valType: "enumerated", dflt: "cubic-in-out", values: [ "linear", "quad", "cubic", "sin", "exp", "circle", "elastic", "back", "bounce", "linear-in", "quad-in", "cubic-in", "sin-in", "exp-in", "circle-in", "elastic-in", "back-in", "bounce-in", "linear-out", "quad-out", "cubic-out", "sin-out", "exp-out", "circle-out", "elastic-out", "back-out", "bounce-out", "linear-in-out", "quad-in-out", "cubic-in-out", "sin-in-out", "exp-in-out", "circle-in-out", "elastic-in-out", "back-in-out", "bounce-in-out", ], editType: "none", }, ordering: { valType: "enumerated", values: ["layout first", "traces first"], dflt: "layout first", editType: "none", }, }, }; }, {}, ], 561: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("../plot_api/plot_template"); e.exports = function (t, e, r) { var a, o, s = r.name, l = r.inclusionAttr || "visible", c = e[s], u = n.isArrayOrTypedArray(t[s]) ? t[s] : [], f = (e[s] = []), h = i.arrayTemplater(e, s, l); for (a = 0; a < u.length; a++) { var p = u[a]; n.isPlainObject(p) ? (o = h.newItem(p)) : ((o = h.newItem({}))[l] = !1), (o._index = a), !1 !== o[l] && r.handleItemDefaults(p, o, e, r), f.push(o); } var d = h.defaultItems(); for (a = 0; a < d.length; a++) ((o = d[a])._index = f.length), r.handleItemDefaults({}, o, e, r, {}), f.push(o); if (n.isArrayOrTypedArray(c)) { var m = Math.min(c.length, f.length); for (a = 0; a < m; a++) n.relinkPrivateKeys(f[a], c[a]); } return f; }; }, { "../lib": 515, "../plot_api/plot_template": 555 }, ], 562: [ function (t, e, r) { "use strict"; var n = t("./font_attributes"), i = t("../components/fx/attributes"); e.exports = { type: { valType: "enumerated", values: [], dflt: "scatter", editType: "calc+clearAxisTypes", _noTemplating: !0, }, visible: { valType: "enumerated", values: [!0, !1, "legendonly"], dflt: !0, editType: "calc", }, showlegend: { valType: "boolean", dflt: !0, editType: "style", }, legendgroup: { valType: "string", dflt: "", editType: "style", }, legendgrouptitle: { text: { valType: "string", dflt: "", editType: "style" }, font: n({ editType: "style" }), editType: "style", }, legendrank: { valType: "number", dflt: 1e3, editType: "style", }, legendwidth: { valType: "number", min: 0, editType: "style", }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, editType: "style", }, name: { valType: "string", editType: "style" }, uid: { valType: "string", editType: "plot", anim: !0 }, ids: { valType: "data_array", editType: "calc", anim: !0 }, customdata: { valType: "data_array", editType: "calc" }, meta: { valType: "any", arrayOk: !0, editType: "plot" }, selectedpoints: { valType: "any", editType: "calc" }, hoverinfo: { valType: "flaglist", flags: ["x", "y", "z", "text", "name"], extras: ["all", "none", "skip"], arrayOk: !0, dflt: "all", editType: "none", }, hoverlabel: i.hoverlabel, stream: { token: { valType: "string", noBlank: !0, strict: !0, editType: "calc", }, maxpoints: { valType: "number", min: 0, max: 1e4, dflt: 500, editType: "calc", }, editType: "calc", }, transforms: { _isLinkedToArray: "transform", editType: "calc", }, uirevision: { valType: "any", editType: "none" }, }; }, { "../components/fx/attributes": 398, "./font_attributes": 594, }, ], 563: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = i.dateTime2ms, o = i.incrementMonth, s = t("../../constants/numerical").ONEAVGMONTH; e.exports = function (t, e, r, i) { if ("date" !== e.type) return { vals: i }; var l = t[r + "periodalignment"]; if (!l) return { vals: i }; var c, u = t[r + "period"]; if (n(u)) { if ((u = +u) <= 0) return { vals: i }; } else if ("string" == typeof u && "M" === u.charAt(0)) { var f = +u.substring(1); if (!(f > 0 && Math.round(f) === f)) return { vals: i }; c = f; } for ( var h = e.calendar, p = "start" === l, d = "end" === l, m = t[r + "period0"], g = a(m, h) || 0, v = [], y = [], x = [], b = i.length, _ = 0; _ < b; _++ ) { var w, T, k, A = i[_]; if (c) { for ( w = Math.round((A - g) / (c * s)), k = o(g, c * w, h); k > A; ) k = o(k, -c, h); for (; k <= A; ) k = o(k, c, h); T = o(k, -c, h); } else { for (k = g + (w = Math.round((A - g) / u)) * u; k > A; ) k -= u; for (; k <= A; ) k += u; T = k - u; } (v[_] = p ? T : d ? k : (T + k) / 2), (y[_] = T), (x[_] = k); } return { vals: v, starts: y, ends: x }; }; }, { "../../constants/numerical": 491, "../../lib": 515, "fast-isnumeric": 190, }, ], 564: [ function (t, e, r) { "use strict"; e.exports = { xaxis: { valType: "subplotid", dflt: "x", editType: "calc+clearAxisTypes", }, yaxis: { valType: "subplotid", dflt: "y", editType: "calc+clearAxisTypes", }, }; }, {}, ], 565: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("fast-isnumeric"), a = t("../../lib"), o = t("../../constants/numerical").FP_SAFE, s = t("../../registry"), l = t("../../components/drawing"), c = t("./axis_ids"), u = c.getFromId, f = c.isLinked; function h(t, e) { var r, n, i = [], o = t._fullLayout, s = d(o, e, 0), l = d(o, e, 1), c = m(t, e), u = c.min, f = c.max; if (0 === u.length || 0 === f.length) return a.simpleMap(e.range, e.r2l); var h = u[0].val, g = f[0].val; for (r = 1; r < u.length && h === g; r++) h = Math.min(h, u[r].val); for (r = 1; r < f.length && h === g; r++) g = Math.max(g, f[r].val); var v = !1; if (e.range) { var y = a.simpleMap(e.range, e.r2l); v = y[1] < y[0]; } "reversed" === e.autorange && ((v = !0), (e.autorange = !0)); var x, b, _, w, T, k, A = e.rangemode, M = "tozero" === A, S = "nonnegative" === A, E = e._length, L = E / 10, C = 0; for (r = 0; r < u.length; r++) for (x = u[r], n = 0; n < f.length; n++) (k = (b = f[n]).val - x.val - p(e, x.val, b.val)) > 0 && ((T = E - s(x) - l(b)) > L ? k / T > C && ((_ = x), (w = b), (C = k / T)) : k / E > C && ((_ = { val: x.val, nopad: 1 }), (w = { val: b.val, nopad: 1 }), (C = k / E))); if (h === g) { var P = h - 1, I = h + 1; if (M) if (0 === h) i = [0, 1]; else { var O = (h > 0 ? f : u).reduce(function (t, e) { return Math.max(t, l(e)); }, 0), z = h / (1 - Math.min(0.5, O / E)); i = h > 0 ? [0, z] : [z, 0]; } else i = S ? [Math.max(0, P), Math.max(1, I)] : [P, I]; } else M ? (_.val >= 0 && (_ = { val: 0, nopad: 1 }), w.val <= 0 && (w = { val: 0, nopad: 1 })) : S && (_.val - C * s(_) < 0 && (_ = { val: 0, nopad: 1 }), w.val <= 0 && (w = { val: 1, nopad: 1 })), (C = (w.val - _.val - p(e, x.val, b.val)) / (E - s(_) - l(w))), (i = [_.val - C * s(_), w.val + C * l(w)]); return v && i.reverse(), a.simpleMap(i, e.l2r || Number); } function p(t, e, r) { var n = 0; if (t.rangebreaks) for ( var i = t.locateBreaks(e, r), a = 0; a < i.length; a++ ) { var o = i[a]; n += o.max - o.min; } return n; } function d(t, e, r) { var i = 0.05 * e._length, o = e._anchorAxis || {}; if ( -1 !== (e.ticklabelposition || "").indexOf("inside") || -1 !== (o.ticklabelposition || "").indexOf("inside") ) { var s = "reversed" === e.autorange; if (!s) { var c = a.simpleMap(e.range, e.r2l); s = c[1] < c[0]; } s && (r = !r); } var u = 0; return ( f(t, e._id) || (u = (function (t, e, r) { var i = 0, o = "x" === e._id.charAt(0); for (var s in t._plots) { var c = t._plots[s]; if ( e._id === c.xaxis._id || e._id === c.yaxis._id ) { var u = (o ? c.yaxis : c.xaxis) || {}; if ( -1 !== (u.ticklabelposition || "").indexOf( "inside", ) && ((!r && ("left" === u.side || "bottom" === u.side)) || (r && ("top" === u.side || "right" === u.side))) ) { if (u._vals) { var f = a.deg2rad( u._tickAngles[u._id + "tick"] || 0, ), h = Math.abs(Math.cos(f)), p = Math.abs(Math.sin(f)); if (!u._vals[0].bb) { var d = u._id + "tick"; u._selections[d].each(function (t) { var e = n.select(this); e.select(".text-math-group").empty() && (t.bb = l.bBox(e.node())); }); } for (var m = 0; m < u._vals.length; m++) { var g = u._vals[m].bb; if (g) { var v = 6 + g.width, y = 6 + g.height; i = Math.max( i, o ? Math.max(v * h, y * p) : Math.max(y * h, v * p), ); } } } "inside" === u.ticks && "inside" === u.ticklabelposition && (i += u.ticklen || 0); } } } return i; })(t, e, r)), (i = Math.max(u, i)), "domain" === e.constrain && e._inputDomain && (i *= (e._inputDomain[1] - e._inputDomain[0]) / (e.domain[1] - e.domain[0])), function (t) { return t.nopad ? 0 : t.pad + (t.extrapad ? i : u); } ); } e.exports = { getAutoRange: h, makePadFn: d, doAutoRange: function (t, e, r) { if ((e.setScale(), e.autorange)) { (e.range = r ? r.slice() : h(t, e)), (e._r = e.range.slice()), (e._rl = a.simpleMap(e._r, e.r2l)); var n = e._input, i = {}; (i[e._attr + ".range"] = e.range), (i[e._attr + ".autorange"] = e.autorange), s.call( "_storeDirectGUIEdit", t.layout, t._fullLayout._preGUI, i, ), (n.range = e.range.slice()), (n.autorange = e.autorange); } var o = e._anchorAxis; if (o && o.rangeslider) { var l = o.rangeslider[e._name]; l && "auto" === l.rangemode && (l.range = h(t, e)), (o._input.rangeslider[e._name] = a.extendFlat({}, l)); } }, findExtremes: function (t, e, r) { r || (r = {}); t._m || t.setScale(); var n, a, s, l, c, u, f, h, p, d = [], m = [], y = e.length, b = r.padded || !1, _ = r.tozero && ("linear" === t.type || "-" === t.type), w = "log" === t.type, T = !1, k = r.vpadLinearized || !1; function A(t) { if (Array.isArray(t)) return ( (T = !0), function (e) { return Math.max(Number(t[e] || 0), 0); } ); var e = Math.max(Number(t || 0), 0); return function () { return e; }; } var M = A( (t._m > 0 ? r.ppadplus : r.ppadminus) || r.ppad || 0, ), S = A( (t._m > 0 ? r.ppadminus : r.ppadplus) || r.ppad || 0, ), E = A(r.vpadplus || r.vpad), L = A(r.vpadminus || r.vpad); if (!T) { if (((h = 1 / 0), (p = -1 / 0), w)) for (n = 0; n < y; n++) (a = e[n]) < h && a > 0 && (h = a), a > p && a < o && (p = a); else for (n = 0; n < y; n++) (a = e[n]) < h && a > -o && (h = a), a > p && a < o && (p = a); (e = [h, p]), (y = 2); } var C = { tozero: _, extrapad: b }; function P(r) { (s = e[r]), i(s) && ((u = M(r)), (f = S(r)), k ? ((l = t.c2l(s) - L(r)), (c = t.c2l(s) + E(r))) : ((h = s - L(r)), (p = s + E(r)), w && h < p / 10 && (h = p / 10), (l = t.c2l(h)), (c = t.c2l(p))), _ && ((l = Math.min(0, l)), (c = Math.max(0, c))), x(l) && g(d, l, f, C), x(c) && v(m, c, u, C)); } var I = Math.min(6, y); for (n = 0; n < I; n++) P(n); for (n = y - 1; n >= I; n--) P(n); return { min: d, max: m, opts: r }; }, concatExtremes: m, }; function m(t, e, r) { var n, i, a, o = e._id, s = t._fullData, l = t._fullLayout, c = [], f = []; function h(t, e) { for (n = 0; n < e.length; n++) { var r = t[e[n]], s = (r._extremes || {})[o]; if (!0 === r.visible && s) { for (i = 0; i < s.min.length; i++) (a = s.min[i]), g(c, a.val, a.pad, { extrapad: a.extrapad }); for (i = 0; i < s.max.length; i++) (a = s.max[i]), v(f, a.val, a.pad, { extrapad: a.extrapad }); } } } if ( (h(s, e._traceIndices), h(l.annotations || [], e._annIndices || []), h(l.shapes || [], e._shapeIndices || []), e._matchGroup && !r) ) for (var p in e._matchGroup) if (p !== e._id) { var d = u(t, p), y = m(t, d, !0), x = e._length / d._length; for (i = 0; i < y.min.length; i++) (a = y.min[i]), g(c, a.val, a.pad * x, { extrapad: a.extrapad }); for (i = 0; i < y.max.length; i++) (a = y.max[i]), v(f, a.val, a.pad * x, { extrapad: a.extrapad }); } return { min: c, max: f }; } function g(t, e, r, n) { y(t, e, r, n, b); } function v(t, e, r, n) { y(t, e, r, n, _); } function y(t, e, r, n, i) { for ( var a = n.tozero, o = n.extrapad, s = !0, l = 0; l < t.length && s; l++ ) { var c = t[l]; if (i(c.val, e) && c.pad >= r && (c.extrapad || !o)) { s = !1; break; } i(e, c.val) && c.pad <= r && (o || !c.extrapad) && (t.splice(l, 1), l--); } if (s) { var u = a && 0 === e; t.push({ val: e, pad: u ? 0 : r, extrapad: !u && o }); } } function x(t) { return i(t) && Math.abs(t) < o; } function b(t, e) { return t <= e; } function _(t, e) { return t >= e; } }, { "../../components/drawing": 389, "../../constants/numerical": 491, "../../lib": 515, "../../registry": 647, "./axis_ids": 570, "@plotly/d3": 58, "fast-isnumeric": 190, }, ], 566: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("fast-isnumeric"), a = t("../../plots/plots"), o = t("../../registry"), s = t("../../lib"), l = s.strTranslate, c = t("../../lib/svg_text_utils"), u = t("../../components/titles"), f = t("../../components/color"), h = t("../../components/drawing"), p = t("./layout_attributes"), d = t("./clean_ticks"), m = t("../../constants/numerical"), g = m.ONEMAXYEAR, v = m.ONEAVGYEAR, y = m.ONEMINYEAR, x = m.ONEMAXQUARTER, b = m.ONEAVGQUARTER, _ = m.ONEMINQUARTER, w = m.ONEMAXMONTH, T = m.ONEAVGMONTH, k = m.ONEMINMONTH, A = m.ONEWEEK, M = m.ONEDAY, S = M / 2, E = m.ONEHOUR, L = m.ONEMIN, C = m.ONESEC, P = m.MINUS_SIGN, I = m.BADNUM, O = { K: "zeroline" }, z = { K: "gridline", L: "path" }, D = { K: "minor-gridline", L: "path" }, R = { K: "tick", L: "path" }, F = { K: "tick", L: "text" }, B = { width: ["x", "r", "l", "xl", "xr"], height: ["y", "t", "b", "yt", "yb"], right: ["r", "xr"], left: ["l", "xl"], top: ["t", "yt"], bottom: ["b", "yb"], }, N = t("../../constants/alignment"), j = N.MID_SHIFT, U = N.CAP_SHIFT, V = N.LINE_SPACING, H = N.OPPOSITE_SIDE, q = (e.exports = {}); q.setConvert = t("./set_convert"); var G = t("./axis_autotype"), Y = t("./axis_ids"), W = Y.idSort, Z = Y.isLinked; (q.id2name = Y.id2name), (q.name2id = Y.name2id), (q.cleanId = Y.cleanId), (q.list = Y.list), (q.listIds = Y.listIds), (q.getFromId = Y.getFromId), (q.getFromTrace = Y.getFromTrace); var X = t("./autorange"); (q.getAutoRange = X.getAutoRange), (q.findExtremes = X.findExtremes); function J(t) { var e = 1e-4 * (t[1] - t[0]); return [t[0] - e, t[1] + e]; } (q.coerceRef = function (t, e, r, n, i, a) { var o = n.charAt(n.length - 1), l = r._fullLayout._subplots[o + "axis"], c = n + "ref", u = {}; return ( i || (i = l[0] || ("string" == typeof a ? a : a[0])), a || (a = i), (l = l.concat( l.map(function (t) { return t + " domain"; }), )), (u[c] = { valType: "enumerated", values: l.concat( a ? ("string" == typeof a ? [a] : a) : [], ), dflt: i, }), s.coerce(t, e, u, c) ); }), (q.getRefType = function (t) { return void 0 === t ? t : "paper" === t ? "paper" : "pixel" === t ? "pixel" : /( domain)$/.test(t) ? "domain" : "range"; }), (q.coercePosition = function (t, e, r, n, i, a) { var o, l; if ("range" !== q.getRefType(n)) (o = s.ensureNumber), (l = r(i, a)); else { var c = q.getFromId(e, n); (l = r(i, (a = c.fraction2r(a)))), (o = c.cleanPos); } t[i] = o(l); }), (q.cleanPosition = function (t, e, r) { return ( "paper" === r || "pixel" === r ? s.ensureNumber : q.getFromId(e, r).cleanPos )(t); }), (q.redrawComponents = function (t, e) { e = e || q.listIds(t); var r = t._fullLayout; function n(n, i, a, s) { for ( var l = o.getComponentMethod(n, i), c = {}, u = 0; u < e.length; u++ ) for ( var f = r[q.id2name(e[u])][a], h = 0; h < f.length; h++ ) { var p = f[h]; if (!c[p] && (l(t, p), (c[p] = 1), s)) return; } } n("annotations", "drawOne", "_annIndices"), n("shapes", "drawOne", "_shapeIndices"), n("images", "draw", "_imgIndices", !0), n("selections", "drawOne", "_selectionIndices"); }); var K = (q.getDataConversions = function (t, e, r, n) { var i, a = "x" === r || "y" === r || "z" === r ? r : n; if (Array.isArray(a)) { if ( ((i = { type: G(n, void 0, { autotypenumbers: t._fullLayout.autotypenumbers, }), _categories: [], }), q.setConvert(i), "category" === i.type) ) for (var o = 0; o < n.length; o++) i.d2c(n[o]); } else i = q.getFromTrace(t, e, a); return i ? { d2c: i.d2c, c2d: i.c2d } : "ids" === a ? { d2c: $, c2d: $ } : { d2c: Q, c2d: Q }; }); function Q(t) { return +t; } function $(t) { return String(t); } function tt(t, e) { return Math.abs(((t / e + 0.5) % 1) - 0.5) < 0.001; } function et(t, e) { return Math.abs(t / e - 1) < 0.001; } function rt(t) { return +t.substring(1); } function nt(t) { var e = J(s.simpleMap(t.range, t.r2l)), r = Math.min(e[0], e[1]), n = Math.max(e[0], e[1]), i = "category" === t.type ? t.d2l_noadd : t.d2l; "log" === t.type && "L" !== String(t.dtick).charAt(0) && (t.dtick = "L" + Math.pow( 10, Math.floor(Math.min(t.range[0], t.range[1])) - 1, )); for (var a = [], o = 0; o <= 1; o++) if (!o || t.minor) { var l = o ? t.minor.tickvals : t.tickvals, c = o ? [] : t.ticktext; if (l) { Array.isArray(c) || (c = []); for (var u = 0; u < l.length; u++) { var f = i(l[u]); if (f > r && f < n) { var h = void 0 === c[u] ? q.tickText(t, f) : pt(t, f, String(c[u])); o && ((h.minor = !0), (h.text = "")), a.push(h); } } } } return ( t.rangebreaks && (a = a.filter(function (e) { return t.maskBreaks(e.x) !== I; })), a ); } (q.getDataToCoordFunc = function (t, e, r, n) { return K(t, e, r, n).d2c; }), (q.counterLetter = function (t) { var e = t.charAt(0); return "x" === e ? "y" : "y" === e ? "x" : void 0; }), (q.minDtick = function (t, e, r, n) { -1 === ["log", "category", "multicategory"].indexOf(t.type) && n ? void 0 === t._minDtick ? ((t._minDtick = e), (t._forceTick0 = r)) : t._minDtick && ((t._minDtick / e + 1e-6) % 1 < 2e-6 && ((((r - t._forceTick0) / e) % 1) + 1.000001) % 1 < 2e-6 ? ((t._minDtick = e), (t._forceTick0 = r)) : ((e / t._minDtick + 1e-6) % 1 > 2e-6 || ((((r - t._forceTick0) / t._minDtick) % 1) + 1.000001) % 1 > 2e-6) && (t._minDtick = 0)) : (t._minDtick = 0); }), (q.saveRangeInitial = function (t, e) { for ( var r = q.list(t, "", !0), n = !1, i = 0; i < r.length; i++ ) { var a = r[i], o = void 0 === a._rangeInitial, s = o || !( a.range[0] === a._rangeInitial[0] && a.range[1] === a._rangeInitial[1] ); ((o && !1 === a.autorange) || (e && s)) && ((a._rangeInitial = a.range.slice()), (n = !0)); } return n; }), (q.saveShowSpikeInitial = function (t, e) { for ( var r = q.list(t, "", !0), n = !1, i = "on", a = 0; a < r.length; a++ ) { var o = r[a], s = void 0 === o._showSpikeInitial, l = s || !(o.showspikes === o._showspikes); (s || (e && l)) && ((o._showSpikeInitial = o.showspikes), (n = !0)), "on" !== i || o.showspikes || (i = "off"); } return (t._fullLayout._cartesianSpikesEnabled = i), n; }), (q.autoBin = function (t, e, r, n, a, o) { var l, c = s.aggNums(Math.min, null, t), u = s.aggNums(Math.max, null, t); if ("category" === e.type || "multicategory" === e.type) return { start: c - 0.5, end: u + 0.5, size: Math.max(1, Math.round(o) || 1), _dataSpan: u - c, }; if ( (a || (a = e.calendar), (l = "log" === e.type ? { type: "linear", range: [c, u] } : { type: e.type, range: s.simpleMap([c, u], e.c2r, 0, a), calendar: a, }), q.setConvert(l), (o = o && d.dtick(o, l.type))) ) (l.dtick = o), (l.tick0 = d.tick0(void 0, l.type, a)); else { var f; if (r) f = (u - c) / r; else { var h = s.distinctVals(t), p = Math.pow( 10, Math.floor(Math.log(h.minDiff) / Math.LN10), ), m = p * s.roundUp( h.minDiff / p, [0.9, 1.9, 4.9, 9.9], !0, ); (f = Math.max( m, (2 * s.stdev(t)) / Math.pow(t.length, n ? 0.25 : 0.4), )), i(f) || (f = 1); } q.autoTicks(l, f); } var g, v = l.dtick, y = q.tickIncrement(q.tickFirst(l), v, "reverse", a); if ("number" == typeof v) g = (y = (function (t, e, r, n, a) { var o = 0, s = 0, l = 0, c = 0; function u(e) { return (1 + (100 * (e - t)) / r.dtick) % 100 < 2; } for (var f = 0; f < e.length; f++) e[f] % 1 == 0 ? l++ : i(e[f]) || c++, u(e[f]) && o++, u(e[f] + r.dtick / 2) && s++; var h = e.length - c; if (l === h && "date" !== r.type) r.dtick < 1 ? (t = n - 0.5 * r.dtick) : (t -= 0.5) + r.dtick < n && (t += r.dtick); else if ( s < 0.1 * h && (o > 0.3 * h || u(n) || u(a)) ) { var p = r.dtick / 2; t += t + p < n ? p : -p; } return t; })(y, t, l, c, u)) + (1 + Math.floor((u - y) / v)) * v; else for ( "M" === l.dtick.charAt(0) && (y = (function (t, e, r, n, i) { var a = s.findExactDates(e, i); if (a.exactDays > 0.8) { var o = Number(r.substr(1)); a.exactYears > 0.8 && o % 12 == 0 ? (t = q.tickIncrement(t, "M6", "reverse") + 1.5 * M) : a.exactMonths > 0.8 ? (t = q.tickIncrement(t, "M1", "reverse") + 15.5 * M) : (t -= S); var l = q.tickIncrement(t, r); if (l <= n) return l; } return t; })(y, t, v, c, a)), g = y, 0; g <= u; ) g = q.tickIncrement(g, v, !1, a); return { start: e.c2r(y, 0, a), end: e.c2r(g, 0, a), size: v, _dataSpan: u - c, }; }), (q.prepMinorTicks = function (t, e, r) { if (!e.minor.dtick) { delete t.dtick; var n, a = e.dtick && i(e._tmin); if (a) { var o = q.tickIncrement(e._tmin, e.dtick, !0); n = [e._tmin, 0.99 * o + 0.01 * e._tmin]; } else { var l = s.simpleMap(e.range, e.r2l); n = [l[0], 0.8 * l[0] + 0.2 * l[1]]; } if ( ((t.range = s.simpleMap(n, e.l2r)), (t._isMinor = !0), q.prepTicks(t, r), a) ) { var c = i(e.dtick), u = i(t.dtick), f = c ? e.dtick : +e.dtick.substring(1), h = u ? t.dtick : +t.dtick.substring(1); c && u ? tt(f, h) ? f === 2 * A && h === 2 * M && (t.dtick = A) : f === 2 * A && h === 3 * M ? (t.dtick = A) : f !== A || (e._input.minor || {}).nticks ? et(f / h, 2.5) ? (t.dtick = f / 2) : (t.dtick = f) : (t.dtick = M) : "M" === String(e.dtick).charAt(0) ? u ? (t.dtick = "M1") : tt(f, h) ? f >= 12 && 2 === h && (t.dtick = "M3") : (t.dtick = e.dtick) : "L" === String(t.dtick).charAt(0) ? "L" === String(e.dtick).charAt(0) ? tt(f, h) || (t.dtick = et(f / h, 2.5) ? e.dtick / 2 : e.dtick) : (t.dtick = "D1") : "D2" === t.dtick && +e.dtick > 1 && (t.dtick = 1); } t.range = e.range; } void 0 === e.minor._tick0Init && (t.tick0 = e.tick0); }), (q.prepTicks = function (t, e) { var r = s.simpleMap(t.range, t.r2l, void 0, void 0, e); if ("auto" === t.tickmode || !t.dtick) { var n, a = t.nticks; a || ("category" === t.type || "multicategory" === t.type ? ((n = t.tickfont ? s.bigFont(t.tickfont.size || 12) : 15), (a = t._length / n)) : ((n = "y" === t._id.charAt(0) ? 40 : 80), (a = s.constrain(t._length / n, 4, 9) + 1)), "radialaxis" === t._name && (a *= 2)), (t.minor && "array" !== t.minor.tickmode) || ("array" === t.tickmode && (a *= 100)), (t._roughDTick = Math.abs(r[1] - r[0]) / a), q.autoTicks(t, t._roughDTick), t._minDtick > 0 && t.dtick < 2 * t._minDtick && ((t.dtick = t._minDtick), (t.tick0 = t.l2r(t._forceTick0))); } "period" === t.ticklabelmode && (function (t) { var e; function r() { return !(i(t.dtick) || "M" !== t.dtick.charAt(0)); } var n = r(), a = q.getTickFormat(t); if (a) { var o = t._dtickInit !== t.dtick; /%[fLQsSMX]/.test(a) || (/%[HI]/.test(a) ? ((e = E), o && !n && t.dtick < E && (t.dtick = E)) : /%p/.test(a) ? ((e = S), o && !n && t.dtick < S && (t.dtick = S)) : /%[Aadejuwx]/.test(a) ? ((e = M), o && !n && t.dtick < M && (t.dtick = M)) : /%[UVW]/.test(a) ? ((e = A), o && !n && t.dtick < A && (t.dtick = A)) : /%[Bbm]/.test(a) ? ((e = T), o && (n ? rt(t.dtick) < 1 : t.dtick < k) && (t.dtick = "M1")) : /%[q]/.test(a) ? ((e = b), o && (n ? rt(t.dtick) < 3 : t.dtick < _) && (t.dtick = "M3")) : /%[Yy]/.test(a) && ((e = v), o && (n ? rt(t.dtick) < 12 : t.dtick < y) && (t.dtick = "M12"))); } (n = r()) && t.tick0 === t._dowTick0 && (t.tick0 = t._rawTick0); t._definedDelta = e; })(t), t.tick0 || (t.tick0 = "date" === t.type ? "2000-01-01" : 0), "date" === t.type && t.dtick < 0.1 && (t.dtick = 0.1), ht(t); }), (q.calcTicks = function (t, e) { for ( var r, n, a = t.type, o = t.calendar, l = t.ticklabelstep, c = "period" === t.ticklabelmode, u = s.simpleMap(t.range, t.r2l, void 0, void 0, e), f = u[1] < u[0], h = Math.min(u[0], u[1]), p = Math.max(u[0], u[1]), d = Math.max(1e3, t._length || 0), m = [], L = [], C = [], P = [], O = t.minor && (t.minor.ticks || t.minor.showgrid), z = 1; z >= (O ? 0 : 1); z-- ) { var D = !z; z ? ((t._dtickInit = t.dtick), (t._tick0Init = t.tick0)) : ((t.minor._dtickInit = t.minor.dtick), (t.minor._tick0Init = t.minor.tick0)); var R = z ? t : s.extendFlat({}, t, t.minor); if ( (D ? q.prepMinorTicks(R, t, e) : q.prepTicks(R, e), "array" !== R.tickmode) ) { var F = J(u), B = F[0], N = F[1], j = i(R.dtick), U = "log" === a && !(j || "L" === R.dtick.charAt(0)), V = q.tickFirst(R, e); if (z) { if (((t._tmin = V), V < B !== f)) break; ("category" !== a && "multicategory" !== a) || (N = f ? Math.max(-0.5, N) : Math.min(t._categories.length - 0.5, N)); } var H, G, Y = null, W = V; if (z) j ? (G = t.dtick) : "date" === a ? "string" == typeof t.dtick && "M" === t.dtick.charAt(0) && (G = T * t.dtick.substring(1)) : (G = t._roughDTick), (H = Math.round((t.r2l(W) - t.r2l(t.tick0)) / G) - 1); var Z = R.dtick; for ( R.rangebreaks && R._tick0Init !== R.tick0 && ((W = It(W, t)), f || (W = q.tickIncrement(W, Z, !f, o))), z && c && ((W = q.tickIncrement(W, Z, !f, o)), H--); f ? W >= N : W <= N; W = q.tickIncrement(W, Z, f, o) ) { if ((z && H++, R.rangebreaks && !f)) { if (W < B) continue; if (R.maskBreaks(W) === I && It(W, R) >= p) break; } if (C.length > d || W === Y) break; Y = W; var X = { value: W }; z ? (U && W !== (0 | W) && (X.simpleLabel = !0), l > 1 && H % l && (X.skipLabel = !0), C.push(X)) : ((X.minor = !0), P.push(X)); } } else z ? ((C = []), (m = nt(t))) : ((P = []), (L = nt(t))); } if ( O && !( ("inside" === t.minor.ticks && "outside" === t.ticks) || ("outside" === t.minor.ticks && "inside" === t.ticks) ) ) { for ( var K = C.map(function (t) { return t.value; }), Q = [], $ = 0; $ < P.length; $++ ) { var tt = P[$], et = tt.value; if (-1 === K.indexOf(et)) { for ( var rt = !1, it = 0; !rt && it < C.length; it++ ) 1e7 + C[it].value === 1e7 + et && (rt = !0); rt || Q.push(tt); } } P = Q; } if ( (c && (function (t, e, r) { for (var n = 0; n < t.length; n++) { var i = t[n].value, a = n, o = n + 1; n < t.length - 1 ? ((a = n), (o = n + 1)) : n > 0 ? ((a = n - 1), (o = n)) : ((a = n), (o = n)); var s, l = t[a].value, c = t[o].value, u = Math.abs(c - l), f = r || u, h = 0; f >= y ? (h = u >= y && u <= g ? u : v) : r === b && f >= _ ? (h = u >= _ && u <= x ? u : b) : f >= k ? (h = u >= k && u <= w ? u : T) : r === A && f >= A ? (h = A) : f >= M ? (h = M) : r === S && f >= S ? (h = S) : r === E && f >= E && (h = E), h >= u && ((h = u), (s = !0)); var p = i + h; if (e.rangebreaks && h > 0) { for (var d = 0, m = 0; m < 84; m++) { var L = (m + 0.5) / 84; e.maskBreaks(i * (1 - L) + L * p) !== I && d++; } (h *= d / 84) || (t[n].drop = !0), s && u > A && (h = u); } (h > 0 || 0 === n) && (t[n].periodX = i + h / 2); } })(C, t, t._definedDelta), t.rangebreaks) ) { var at = "y" === t._id.charAt(0), ot = 1; "auto" === t.tickmode && (ot = t.tickfont ? t.tickfont.size : 12); var st = NaN; for (r = C.length - 1; r > -1; r--) if (C[r].drop) C.splice(r, 1); else { C[r].value = It(C[r].value, t); var lt = t.c2p(C[r].value); (at ? st > lt - ot : st < lt + ot) ? C.splice(f ? r + 1 : r, 1) : (st = lt); } } Pt(t) && 360 === Math.abs(u[1] - u[0]) && C.pop(), (t._tmax = (C[C.length - 1] || {}).value), (t._prevDateHead = ""), (t._inCalcTicks = !0); var ct, ut, ft = function (e) { (e.text = ""), (t._prevDateHead = n); }; for (C = C.concat(P), r = 0; r < C.length; r++) { var ht = C[r].minor, pt = C[r].value; ht ? L.push({ x: pt, minor: !0 }) : ((n = t._prevDateHead), (ct = q.tickText(t, pt, !1, C[r].simpleLabel)), void 0 !== (ut = C[r].periodX) && ((ct.periodX = ut), (ut > p || ut < h) && (ut > p && (ct.periodX = p), ut < h && (ct.periodX = h), ft(ct))), C[r].skipLabel && ft(ct), m.push(ct)); } return ( (m = m.concat(L)), (t._inCalcTicks = !1), c && m.length && (m[0].noTick = !0), m ); }); var it = [2, 5, 10], at = [1, 2, 3, 6, 12], ot = [1, 2, 5, 10, 15, 30], st = [1, 2, 3, 7, 14], lt = [ -0.046, 0, 0.301, 0.477, 0.602, 0.699, 0.778, 0.845, 0.903, 0.954, 1, ], ct = [-0.301, 0, 0.301, 0.699, 1], ut = [15, 30, 45, 90, 180]; function ft(t, e, r) { return e * s.roundUp(t / e, r); } function ht(t) { var e = t.dtick; if ( ((t._tickexponent = 0), i(e) || "string" == typeof e || (e = 1), ("category" !== t.type && "multicategory" !== t.type) || (t._tickround = null), "date" === t.type) ) { var r = t.r2l(t.tick0), n = t.l2r(r).replace(/(^-|i)/g, ""), a = n.length; if ("M" === String(e).charAt(0)) a > 10 || "01-01" !== n.substr(5) ? (t._tickround = "d") : (t._tickround = +e.substr(1) % 12 == 0 ? "y" : "m"); else if ((e >= M && a <= 10) || e >= 15 * M) t._tickround = "d"; else if ((e >= L && a <= 16) || e >= E) t._tickround = "M"; else if ((e >= C && a <= 19) || e >= L) t._tickround = "S"; else { var o = t.l2r(r + e).replace(/^-/, "").length; (t._tickround = Math.max(a, o) - 20), t._tickround < 0 && (t._tickround = 4); } } else if (i(e) || "L" === e.charAt(0)) { var s = t.range.map(t.r2d || Number); i(e) || (e = Number(e.substr(1))), (t._tickround = 2 - Math.floor(Math.log(e) / Math.LN10 + 0.01)); var l = Math.max(Math.abs(s[0]), Math.abs(s[1])), c = Math.floor(Math.log(l) / Math.LN10 + 0.01), u = void 0 === t.minexponent ? 3 : t.minexponent; Math.abs(c) > u && (mt(t.exponentformat) && !gt(c) ? (t._tickexponent = 3 * Math.round((c - 1) / 3)) : (t._tickexponent = c)); } else t._tickround = null; } function pt(t, e, r) { var n = t.tickfont || {}; return { x: e, dx: 0, dy: 0, text: r || "", fontSize: n.size, font: n.family, fontColor: n.color, }; } (q.autoTicks = function (t, e, r) { var n; function a(t) { return Math.pow(t, Math.floor(Math.log(e) / Math.LN10)); } if ("date" === t.type) { t.tick0 = s.dateTick0(t.calendar, 0); var o = 2 * e; if (o > v) (e /= v), (n = a(10)), (t.dtick = "M" + 12 * ft(e, n, it)); else if (o > T) (e /= T), (t.dtick = "M" + ft(e, 1, at)); else if (o > M) { if ( ((t.dtick = ft( e, M, t._hasDayOfWeekBreaks ? [1, 2, 7, 14] : st, )), !r) ) { var l = q.getTickFormat(t), c = "period" === t.ticklabelmode; c && (t._rawTick0 = t.tick0), /%[uVW]/.test(l) ? (t.tick0 = s.dateTick0(t.calendar, 2)) : (t.tick0 = s.dateTick0(t.calendar, 1)), c && (t._dowTick0 = t.tick0); } } else o > E ? (t.dtick = ft(e, E, at)) : o > L ? (t.dtick = ft(e, L, ot)) : o > C ? (t.dtick = ft(e, C, ot)) : ((n = a(10)), (t.dtick = ft(e, n, it))); } else if ("log" === t.type) { t.tick0 = 0; var u = s.simpleMap(t.range, t.r2l); if ((t._isMinor && (e *= 1.5), e > 0.7)) t.dtick = Math.ceil(e); else if (Math.abs(u[1] - u[0]) < 1) { var f = 1.5 * Math.abs((u[1] - u[0]) / e); (e = Math.abs(Math.pow(10, u[1]) - Math.pow(10, u[0])) / f), (n = a(10)), (t.dtick = "L" + ft(e, n, it)); } else t.dtick = e > 0.3 ? "D2" : "D1"; } else "category" === t.type || "multicategory" === t.type ? ((t.tick0 = 0), (t.dtick = Math.ceil(Math.max(e, 1)))) : Pt(t) ? ((t.tick0 = 0), (n = 1), (t.dtick = ft(e, n, ut))) : ((t.tick0 = 0), (n = a(10)), (t.dtick = ft(e, n, it))); if ( (0 === t.dtick && (t.dtick = 1), !i(t.dtick) && "string" != typeof t.dtick) ) { var h = t.dtick; throw ((t.dtick = 1), "ax.dtick error: " + String(h)); } }), (q.tickIncrement = function (t, e, r, a) { var o = r ? -1 : 1; if (i(e)) return s.increment(t, o * e); var l = e.charAt(0), c = o * Number(e.substr(1)); if ("M" === l) return s.incrementMonth(t, c, a); if ("L" === l) return Math.log(Math.pow(10, t) + c) / Math.LN10; if ("D" === l) { var u = "D2" === e ? ct : lt, f = t + 0.01 * o, h = s.roundUp(s.mod(f, 1), u, r); return ( Math.floor(f) + Math.log(n.round(Math.pow(10, h), 1)) / Math.LN10 ); } throw "unrecognized dtick " + String(e); }), (q.tickFirst = function (t, e) { var r = t.r2l || Number, a = s.simpleMap(t.range, r, void 0, void 0, e), o = a[1] < a[0], l = o ? Math.floor : Math.ceil, c = J(a)[0], u = t.dtick, f = r(t.tick0); if (i(u)) { var h = l((c - f) / u) * u + f; return ( ("category" !== t.type && "multicategory" !== t.type) || (h = s.constrain(h, 0, t._categories.length - 1)), h ); } var p = u.charAt(0), d = Number(u.substr(1)); if ("M" === p) { for (var m, g, v, y = 0, x = f; y < 10; ) { if ( ((m = q.tickIncrement(x, u, o, t.calendar)) - c) * (x - c) <= 0 ) return o ? Math.min(x, m) : Math.max(x, m); (g = (c - (x + m) / 2) / (m - x)), (v = p + (Math.abs(Math.round(g)) || 1) * d), (x = q.tickIncrement( x, v, g < 0 ? !o : o, t.calendar, )), y++; } return s.error("tickFirst did not converge", t), x; } if ("L" === p) return ( Math.log(l((Math.pow(10, c) - f) / d) * d + f) / Math.LN10 ); if ("D" === p) { var b = "D2" === u ? ct : lt, _ = s.roundUp(s.mod(c, 1), b, o); return ( Math.floor(c) + Math.log(n.round(Math.pow(10, _), 1)) / Math.LN10 ); } throw "unrecognized dtick " + String(u); }), (q.tickText = function (t, e, r, n) { var a, o = pt(t, e), l = "array" === t.tickmode, c = r || l, u = t.type, f = "category" === u ? t.d2l_noadd : t.d2l; if (l && Array.isArray(t.ticktext)) { var h = s.simpleMap(t.range, t.r2l), p = (Math.abs(h[1] - h[0]) - (t._lBreaks || 0)) / 1e4; for ( a = 0; a < t.ticktext.length && !(Math.abs(e - f(t.tickvals[a])) < p); a++ ); if (a < t.ticktext.length) return (o.text = String(t.ticktext[a])), o; } function d(n) { if (void 0 === n) return !0; if (r) return "none" === n; var i = { first: t._tmin, last: t._tmax }[n]; return "all" !== n && e !== i; } var m = r ? "never" : "none" !== t.exponentformat && d(t.showexponent) ? "hide" : ""; if ( ("date" === u ? (function (t, e, r, n) { var a = t._tickround, o = (r && t.hoverformat) || q.getTickFormat(t); n && (a = i(a) ? 4 : { y: "m", m: "d", d: "M", M: "S", S: 4 }[ a ]); var l, c = s.formatDate( e.x, o, a, t._dateFormat, t.calendar, t._extraFormat, ), u = c.indexOf("\n"); -1 !== u && ((l = c.substr(u + 1)), (c = c.substr(0, u))); n && ("00:00:00" === c || "00:00" === c ? ((c = l), (l = "")) : 8 === c.length && (c = c.replace(/:00$/, ""))); if (l) if (r) "d" === a ? (c += ", " + l) : (c = l + (c ? ", " + c : "")); else if ( t._inCalcTicks && t._prevDateHead === l ) { var f = Ot(t), h = t._trueSide || t.side; ((!f && "top" === h) || (f && "bottom" === h)) && (c += "
"); } else (t._prevDateHead = l), (c += "
" + l); e.text = c; })(t, o, r, c) : "log" === u ? (function (t, e, r, n, a) { var o = t.dtick, l = e.x, c = t.tickformat, u = "string" == typeof o && o.charAt(0); "never" === a && (a = ""); n && "L" !== u && ((o = "L3"), (u = "L")); if (c || "L" === u) e.text = vt(Math.pow(10, l), t, a, n); else if ( i(o) || ("D" === u && s.mod(l + 0.01, 1) < 0.1) ) { var f = Math.round(l), h = Math.abs(f), p = t.exponentformat; "power" === p || (mt(p) && gt(f)) ? ((e.text = 0 === f ? 1 : 1 === f ? "10" : "10" + (f > 1 ? "" : P) + h + ""), (e.fontSize *= 1.25)) : ("e" === p || "E" === p) && h > 2 ? (e.text = "1" + p + (f > 0 ? "+" : P) + h) : ((e.text = vt( Math.pow(10, l), t, "", "fakehover", )), "D1" === o && "y" === t._id.charAt(0) && (e.dy -= e.fontSize / 6)); } else { if ("D" !== u) throw "unrecognized dtick " + String(o); (e.text = String( Math.round(Math.pow(10, s.mod(l, 1))), )), (e.fontSize *= 0.75); } if ("D1" === t.dtick) { var d = String(e.text).charAt(0); ("0" !== d && "1" !== d) || ("y" === t._id.charAt(0) ? (e.dx -= e.fontSize / 4) : ((e.dy += e.fontSize / 2), (e.dx += (t.range[1] > t.range[0] ? 1 : -1) * e.fontSize * (l < 0 ? 0.5 : 0.25)))); } })(t, o, 0, c, m) : "category" === u ? (function (t, e) { var r = t._categories[Math.round(e.x)]; void 0 === r && (r = ""); e.text = String(r); })(t, o) : "multicategory" === u ? (function (t, e, r) { var n = Math.round(e.x), i = t._categories[n] || [], a = void 0 === i[1] ? "" : String(i[1]), o = void 0 === i[0] ? "" : String(i[0]); r ? (e.text = o + " - " + a) : ((e.text = a), (e.text2 = o)); })(t, o, r) : Pt(t) ? (function (t, e, r, n, i) { if ("radians" !== t.thetaunit || r) e.text = vt(e.x, t, i, n); else { var a = e.x / 180; if (0 === a) e.text = "0"; else { var o = (function (t) { function e(t, e) { return Math.abs(t - e) <= 1e-6; } var r = (function (t) { for ( var r = 1; !e(Math.round(t * r) / r, t); ) r *= 10; return r; })(t), n = t * r, i = Math.abs( (function t(r, n) { return e(n, 0) ? r : t(n, r % n); })(n, r), ); return [ Math.round(n / i), Math.round(r / i), ]; })(a); if (o[1] >= 100) e.text = vt( s.deg2rad(e.x), t, i, n, ); else { var l = e.x < 0; 1 === o[1] ? 1 === o[0] ? (e.text = "\u03c0") : (e.text = o[0] + "\u03c0") : (e.text = [ "", o[0], "", "\u2044", "", o[1], "", "\u03c0", ].join("")), l && (e.text = P + e.text); } } } })(t, o, r, c, m) : (function (t, e, r, n, i) { "never" === i ? (i = "") : "all" === t.showexponent && Math.abs(e.x / t.dtick) < 1e-6 && (i = "hide"); e.text = vt(e.x, t, i, n); })(t, o, 0, c, m), n || (t.tickprefix && !d(t.showtickprefix) && (o.text = t.tickprefix + o.text), t.ticksuffix && !d(t.showticksuffix) && (o.text += t.ticksuffix)), "boundaries" === t.tickson || t.showdividers) ) { var g = function (e) { var r = t.l2p(e); return r >= 0 && r <= t._length ? e : null; }; o.xbnd = [g(o.x - 0.5), g(o.x + t.dtick - 0.5)]; } return o; }), (q.hoverLabelText = function (t, e, r) { r && (t = s.extendFlat({}, t, { hoverformat: r })); var n = Array.isArray(e) ? e[0] : e, i = Array.isArray(e) ? e[1] : void 0; if (void 0 !== i && i !== n) return ( q.hoverLabelText(t, n, r) + " - " + q.hoverLabelText(t, i, r) ); var a = "log" === t.type && n <= 0, o = q.tickText(t, t.c2l(a ? -n : n), "hover").text; return a ? (0 === n ? "0" : P + o) : o; }); var dt = [ "f", "p", "n", "\u03bc", "m", "", "k", "M", "G", "T", ]; function mt(t) { return "SI" === t || "B" === t; } function gt(t) { return t > 14 || t < -15; } function vt(t, e, r, n) { var a = t < 0, o = e._tickround, l = r || e.exponentformat || "B", c = e._tickexponent, u = q.getTickFormat(e), f = e.separatethousands; if (n) { var h = { exponentformat: l, minexponent: e.minexponent, dtick: "none" === e.showexponent ? e.dtick : (i(t) && Math.abs(t)) || 1, range: "none" === e.showexponent ? e.range.map(e.r2d) : [0, t || 1], }; ht(h), (o = (Number(h._tickround) || 0) + 4), (c = h._tickexponent), e.hoverformat && (u = e.hoverformat); } if (u) return e._numFormat(u)(t).replace(/-/g, P); var p, d = Math.pow(10, -o) / 2; if (("none" === l && (c = 0), (t = Math.abs(t)) < d)) (t = "0"), (a = !1); else { if ( ((t += d), c && ((t *= Math.pow(10, -c)), (o += c)), 0 === o) ) t = String(Math.floor(t)); else if (o < 0) { t = (t = String(Math.round(t))).substr(0, t.length + o); for (var m = o; m < 0; m++) t += "0"; } else { var g = (t = String(t)).indexOf(".") + 1; g && (t = t.substr(0, g + o).replace(/\.?0+$/, "")); } t = s.numSeparate(t, e._separators, f); } c && "hide" !== l && (mt(l) && gt(c) && (l = "power"), (p = c < 0 ? P + -c : "power" !== l ? "+" + c : String(c)), "e" === l || "E" === l ? (t += l + p) : "power" === l ? (t += "\xd710" + p + "") : "B" === l && 9 === c ? (t += "B") : mt(l) && (t += dt[c / 3 + 5])); return a ? P + t : t; } function yt(t, e) { if (t) { var r = Object.keys(B).reduce(function (t, r) { return ( -1 !== e.indexOf(r) && B[r].forEach(function (e) { t[e] = 1; }), t ); }, {}); Object.keys(t).forEach(function (e) { r[e] || (1 === e.length ? (t[e] = 0) : delete t[e]); }); } } function xt(t, e) { for (var r = [], n = {}, i = 0; i < e.length; i++) { var a = e[i]; n[a.text2] ? n[a.text2].push(a.x) : (n[a.text2] = [a.x]); } for (var o in n) r.push(pt(t, s.interp(n[o], 0.5), o)); return r; } function bt(t) { return void 0 !== t.periodX ? t.periodX : t.x; } function _t(t) { return [ t.text, t.x, t.axInfo, t.font, t.fontSize, t.fontColor, ].join("_"); } function wt(t) { var e = t.title.font.size, r = (t.title.text.match(c.BR_TAG_ALL) || []).length; return t.title.hasOwnProperty("standoff") ? r ? e * (U + r * V) : e * U : r ? e * (r + 1) * V : e; } function Tt(t, e) { var r = t.l2p(e); return r > 1 && r < t._length - 1; } function kt(t) { var e = n.select(t), r = e.select(".text-math-group"); return r.empty() ? e.select("text") : r; } function At(t) { return t._id + ".automargin"; } function Mt(t) { return At(t) + ".mirror"; } function St(t) { return t._id + ".rangeslider"; } function Et(t, e) { for (var r = 0; r < e.length; r++) -1 === t.indexOf(e[r]) && t.push(e[r]); } function Lt(t, e, r) { var n, i, a = [], o = [], l = t.layout; for (n = 0; n < e.length; n++) a.push(q.getFromId(t, e[n])); for (n = 0; n < r.length; n++) o.push(q.getFromId(t, r[n])); var c = Object.keys(p), u = [ "anchor", "domain", "overlaying", "position", "side", "tickangle", "editType", ], f = ["linear", "log"]; for (n = 0; n < c.length; n++) { var h = c[n], d = a[0][h], m = o[0][h], g = !0, v = !1, y = !1; if ( "_" !== h.charAt(0) && "function" != typeof d && -1 === u.indexOf(h) ) { for (i = 1; i < a.length && g; i++) { var x = a[i][h]; "type" === h && -1 !== f.indexOf(d) && -1 !== f.indexOf(x) && d !== x ? (v = !0) : x !== d && (g = !1); } for (i = 1; i < o.length && g; i++) { var b = o[i][h]; "type" === h && -1 !== f.indexOf(m) && -1 !== f.indexOf(b) && m !== b ? (y = !0) : o[i][h] !== m && (g = !1); } g && (v && (l[a[0]._name].type = "linear"), y && (l[o[0]._name].type = "linear"), Ct(l, h, a, o, t._fullLayout._dfltTitle)); } } for (n = 0; n < t._fullLayout.annotations.length; n++) { var _ = t._fullLayout.annotations[n]; -1 !== e.indexOf(_.xref) && -1 !== r.indexOf(_.yref) && s.swapAttrs(l.annotations[n], ["?"]); } } function Ct(t, e, r, n, i) { var a, o = s.nestedProperty, l = o(t[r[0]._name], e).get(), c = o(t[n[0]._name], e).get(); for ( "title" === e && (l && l.text === i.x && (l.text = i.y), c && c.text === i.y && (c.text = i.x)), a = 0; a < r.length; a++ ) o(t, r[a]._name + "." + e).set(c); for (a = 0; a < n.length; a++) o(t, n[a]._name + "." + e).set(l); } function Pt(t) { return "angularaxis" === t._id; } function It(t, e) { for (var r = e._rangebreaks.length, n = 0; n < r; n++) { var i = e._rangebreaks[n]; if (t >= i.min && t < i.max) return i.max; } return t; } function Ot(t) { return -1 !== (t.ticklabelposition || "").indexOf("inside"); } function zt(t, e) { Ot(t._anchorAxis || {}) && t._hideCounterAxisInsideTickLabels && t._hideCounterAxisInsideTickLabels(e); } (q.getTickFormat = function (t) { var e, r, n, i, a, o, s, l; function c(t) { return "string" != typeof t ? t : Number(t.replace("M", "")) * T; } function u(t, e) { var r = ["L", "D"]; if (typeof t == typeof e) { if ("number" == typeof t) return t - e; var n = r.indexOf(t.charAt(0)), i = r.indexOf(e.charAt(0)); return n === i ? Number(t.replace(/(L|D)/g, "")) - Number(e.replace(/(L|D)/g, "")) : n - i; } return "number" == typeof t ? 1 : -1; } function f(t, e) { var r = null === e[0], n = null === e[1], i = u(t, e[0]) >= 0, a = u(t, e[1]) <= 0; return (r || i) && (n || a); } if (t.tickformatstops && t.tickformatstops.length > 0) switch (t.type) { case "date": case "linear": for (e = 0; e < t.tickformatstops.length; e++) if ( (n = t.tickformatstops[e]).enabled && ((i = t.dtick), (a = n.dtickrange), (o = void 0), (s = void 0), (l = void 0), (o = c || function (t) { return t; }), (s = a[0]), (l = a[1]), ((!s && "number" != typeof s) || o(s) <= o(i)) && ((!l && "number" != typeof l) || o(l) >= o(i))) ) { r = n; break; } break; case "log": for (e = 0; e < t.tickformatstops.length; e++) if ( (n = t.tickformatstops[e]).enabled && f(t.dtick, n.dtickrange) ) { r = n; break; } } return r ? r.value : t.tickformat; }), (q.getSubplots = function (t, e) { var r = t._fullLayout._subplots, n = r.cartesian.concat(r.gl2d || []), i = e ? q.findSubplotsWithAxis(n, e) : n; return ( i.sort(function (t, e) { var r = t.substr(1).split("y"), n = e.substr(1).split("y"); return r[0] === n[0] ? +r[1] - +n[1] : +r[0] - +n[0]; }), i ); }), (q.findSubplotsWithAxis = function (t, e) { for ( var r = new RegExp( "x" === e._id.charAt(0) ? "^" + e._id + "y" : e._id + "$", ), n = [], i = 0; i < t.length; i++ ) { var a = t[i]; r.test(a) && n.push(a); } return n; }), (q.makeClipPaths = function (t) { var e = t._fullLayout; if (!e._hasOnlyLargeSploms) { var r, i, a = { _offset: 0, _length: e.width, _id: "" }, o = { _offset: 0, _length: e.height, _id: "" }, s = q.list(t, "x", !0), l = q.list(t, "y", !0), c = []; for (r = 0; r < s.length; r++) for ( c.push({ x: s[r], y: o }), i = 0; i < l.length; i++ ) 0 === r && c.push({ x: a, y: l[i] }), c.push({ x: s[r], y: l[i] }); var u = e._clips .selectAll(".axesclip") .data(c, function (t) { return t.x._id + t.y._id; }); u .enter() .append("clipPath") .classed("axesclip", !0) .attr("id", function (t) { return "clip" + e._uid + t.x._id + t.y._id; }) .append("rect"), u.exit().remove(), u.each(function (t) { n.select(this) .select("rect") .attr({ x: t.x._offset || 0, y: t.y._offset || 0, width: t.x._length || 1, height: t.y._length || 1, }); }); } }), (q.draw = function (t, e, r) { var n = t._fullLayout; "redraw" === e && n._paper.selectAll("g.subplot").each(function (t) { var e = t[0], r = n._plots[e]; if (r) { var i = r.xaxis, a = r.yaxis; r.xaxislayer .selectAll("." + i._id + "tick") .remove(), r.yaxislayer .selectAll("." + a._id + "tick") .remove(), r.xaxislayer .selectAll("." + i._id + "tick2") .remove(), r.yaxislayer .selectAll("." + a._id + "tick2") .remove(), r.xaxislayer .selectAll("." + i._id + "divider") .remove(), r.yaxislayer .selectAll("." + a._id + "divider") .remove(), r.minorGridlayer && r.minorGridlayer.selectAll("path").remove(), r.gridlayer && r.gridlayer.selectAll("path").remove(), r.zerolinelayer && r.zerolinelayer.selectAll("path").remove(), n._infolayer .select(".g-" + i._id + "title") .remove(), n._infolayer .select(".g-" + a._id + "title") .remove(); } }); var i = e && "redraw" !== e ? e : q.listIds(t); return s.syncOrAsync( i.map(function (e) { return function () { if (e) { var n = q.getFromId(t, e), i = q.drawOne(t, n, r); return ( (n._r = n.range.slice()), (n._rl = s.simpleMap(n._r, n.r2l)), i ); } }; }), ); }), (q.drawOne = function (t, e, r) { var n, i, l; (r = r || {}), e.setScale(); var c = t._fullLayout, p = e._id, d = p.charAt(0), m = q.counterLetter(p), g = c._plots[e._mainSubplot]; if (g) { var v = g[d + "axislayer"], y = e._mainLinePosition, x = e._mainMirrorPosition, b = (e._vals = q.calcTicks(e)), _ = [e.mirror, y, x].join("_"); for (n = 0; n < b.length; n++) b[n].axInfo = _; (e._selections = {}), e._tickAngles && (e._prevTickAngles = e._tickAngles), (e._tickAngles = {}), (e._depth = null); var w = {}; if (e.visible) { var T, k, A = q.makeTransTickFn(e), M = q.makeTransTickLabelFn(e), S = "inside" === e.ticks, E = "outside" === e.ticks; if ("boundaries" === e.tickson) { var L = (function (t, e) { var r, n = [], i = function (t, e) { var r = t.xbnd[e]; null !== r && n.push(s.extendFlat({}, t, { x: r })); }; if (e.length) { for (r = 0; r < e.length; r++) i(e[r], 0); i(e[r - 1], 1); } return n; })(0, b); (k = q.clipEnds(e, L)), (T = S ? k : L); } else (k = q.clipEnds(e, b)), (T = S && "period" !== e.ticklabelmode ? k : b); var C, P = (e._gridVals = k), I = (function (t, e) { var r, n, i = [], a = e.length && e[e.length - 1].x < e[0].x, o = function (t, e) { var r = t.xbnd[e]; null !== r && i.push(s.extendFlat({}, t, { x: r })); }; if (t.showdividers && e.length) { for (r = 0; r < e.length; r++) { var l = e[r]; l.text2 !== n && o(l, a ? 1 : 0), (n = l.text2); } o(e[r - 1], a ? 0 : 1); } return i; })(e, b); if (!c._hasOnlyLargeSploms) { var O = e._subplotsWith, z = {}; for (n = 0; n < O.length; n++) { i = O[n]; var D = (l = c._plots[i])[m + "axis"], R = D._mainAxis._id; if (!z[R]) { z[R] = 1; var F = "x" === d ? "M0," + D._offset + "v" + D._length : "M" + D._offset + ",0h" + D._length; q.drawGrid(t, e, { vals: P, counterAxis: D, layer: l.gridlayer.select("." + p), minorLayer: l.minorGridlayer.select("." + p), path: F, transFn: A, }), q.drawZeroLine(t, e, { counterAxis: D, layer: l.zerolinelayer, path: F, transFn: A, }); } } } var B = q.getTickSigns(e), N = q.getTickSigns(e, "minor"); if (e.ticks || (e.minor && e.minor.ticks)) { var j, U, G, Y, W = q.makeTickPath(e, y, B[2]), Z = q.makeTickPath(e, y, N[2], { minor: !0 }); if ( (e._anchorAxis && e.mirror && !0 !== e.mirror ? ((j = q.makeTickPath(e, x, B[3])), (U = q.makeTickPath(e, x, N[3], { minor: !0, })), (G = W + j), (Y = Z + U)) : ((j = ""), (U = ""), (G = W), (Y = Z)), e.showdividers && E && "boundaries" === e.tickson) ) { var X = {}; for (n = 0; n < I.length; n++) X[I[n].x] = 1; C = function (t) { return X[t.x] ? j : G; }; } else C = function (t) { return t.minor ? Y : G; }; } if ( (q.drawTicks(t, e, { vals: T, layer: v, path: C, transFn: A, }), "allticks" === e.mirror) ) { var J = Object.keys(e._linepositions || {}); for (n = 0; n < J.length; n++) { (i = J[n]), (l = c._plots[i]); var K = e._linepositions[i] || [], Q = K[0], $ = K[1], tt = K[2], et = q.makeTickPath(e, Q, tt ? B[0] : N[0], { minor: tt, }) + q.makeTickPath(e, $, tt ? B[1] : N[1], { minor: tt, }); q.drawTicks(t, e, { vals: T, layer: l[d + "axislayer"], path: et, transFn: A, }); } } var rt = []; if ( (rt.push(function () { return q.drawLabels(t, e, { vals: b, layer: v, plotinfo: l, transFn: M, labelFns: q.makeLabelFns(e, y), }); }), "multicategory" === e.type) ) { var nt = { x: 2, y: 10 }[d]; rt.push(function () { var r = { x: "height", y: "width" }[d], n = at()[r] + nt + (e._tickAngles[p + "tick"] ? e.tickfont.size * V : 0); return q.drawLabels(t, e, { vals: xt(e, b), layer: v, cls: p + "tick2", repositionOnUpdate: !0, secondary: !0, transFn: A, labelFns: q.makeLabelFns(e, y + n * B[4]), }); }), rt.push(function () { return ( (e._depth = B[4] * (at("tick2")[e.side] - y)), (function (t, e, r) { var n = e._id + "divider", i = r.vals, a = r.layer .selectAll("path." + n) .data(i, _t); a.exit().remove(), a .enter() .insert("path", ":first-child") .classed(n, 1) .classed("crisp", 1) .call(f.stroke, e.dividercolor) .style( "stroke-width", h.crispRound(t, e.dividerwidth, 1) + "px", ), a .attr("transform", r.transFn) .attr("d", r.path); })(t, e, { vals: I, layer: v, path: q.makeTickPath(e, y, B[4], { len: e._depth, }), transFn: A, }) ); }); } else e.title.hasOwnProperty("standoff") && rt.push(function () { e._depth = B[4] * (at()[e.side] - y); }); var it = o.getComponentMethod( "rangeslider", "isVisible", )(e); return ( rt.push(function () { var r, n, i, s, l = e.side.charAt(0), u = H[e.side].charAt(0), f = q.getPxPosition(t, e), h = E ? e.ticklen : 0; if ( ((e.automargin || it) && ("multicategory" === e.type ? (r = at("tick2")) : ((r = at()), "x" === d && "b" === l && (e._depth = Math.max( r.width > 0 ? r.bottom - f : 0, h, )))), e.automargin) ) { n = { x: 0, y: 0, r: 0, l: 0, t: 0, b: 0 }; var p = [0, 1]; if ("x" === d) { if ( ("b" === l ? (n[l] = e._depth) : ((n[l] = e._depth = Math.max( r.width > 0 ? f - r.top : 0, h, )), p.reverse()), r.width > 0) ) { var g = r.right - (e._offset + e._length); g > 0 && ((n.xr = 1), (n.r = g)); var v = e._offset - r.left; v > 0 && ((n.xl = 0), (n.l = v)); } } else if ( ("l" === l ? (n[l] = e._depth = Math.max( r.height > 0 ? f - r.left : 0, h, )) : ((n[l] = e._depth = Math.max( r.height > 0 ? r.right - f : 0, h, )), p.reverse()), r.height > 0) ) { var y = r.bottom - (e._offset + e._length); y > 0 && ((n.yb = 0), (n.b = y)); var x = e._offset - r.top; x > 0 && ((n.yt = 1), (n.t = x)); } (n[m] = "free" === e.anchor ? e.position : e._anchorAxis.domain[p[0]]), e.title.text !== c._dfltTitle[d] && (n[l] += wt(e) + (e.title.standoff || 0)), e.mirror && "free" !== e.anchor && (((i = { x: 0, y: 0, r: 0, l: 0, t: 0, b: 0, })[u] = e.linewidth), e.mirror && !0 !== e.mirror && (i[u] += h), !0 === e.mirror || "ticks" === e.mirror ? (i[m] = e._anchorAxis.domain[p[1]]) : ("all" !== e.mirror && "allticks" !== e.mirror) || (i[m] = [ e._counterDomainMin, e._counterDomainMax, ][p[1]])); } it && (s = o.getComponentMethod( "rangeslider", "autoMarginOpts", )(t, e)), "string" == typeof e.automargin && (yt(n, e.automargin), yt(i, e.automargin)), a.autoMargin(t, At(e), n), a.autoMargin(t, Mt(e), i), a.autoMargin(t, St(e), s); }), r.skipTitle || (it && "bottom" === e.side) || rt.push(function () { return (function (t, e) { var r, n = t._fullLayout, i = e._id, a = i.charAt(0), o = e.title.font.size; if (e.title.hasOwnProperty("standoff")) r = e._depth + e.title.standoff + wt(e); else { var s = Ot(e); if ("multicategory" === e.type) r = e._depth; else { var l = 1.5 * o; s && ((l = 0.5 * o), "outside" === e.ticks && (l += e.ticklen)), (r = 10 + l + (e.linewidth ? e.linewidth - 1 : 0)); } s || (r += "x" === a ? "top" === e.side ? o * (e.showticklabels ? 1 : 0) : o * (e.showticklabels ? 1.5 : 0.5) : "right" === e.side ? o * (e.showticklabels ? 1 : 0.5) : o * (e.showticklabels ? 0.5 : 0)); } var c, f, p, d, m = q.getPxPosition(t, e); "x" === a ? ((f = e._offset + e._length / 2), (p = "top" === e.side ? m - r : m + r)) : ((p = e._offset + e._length / 2), (f = "right" === e.side ? m + r : m - r), (c = { rotate: "-90", offset: 0 })); if ("multicategory" !== e.type) { var g = e._selections[e._id + "tick"]; if ( ((d = { selection: g, side: e.side }), g && g.node() && g.node().parentNode) ) { var v = h.getTranslate( g.node().parentNode, ); (d.offsetLeft = v.x), (d.offsetTop = v.y); } e.title.hasOwnProperty("standoff") && (d.pad = 0); } return u.draw(t, i + "title", { propContainer: e, propName: e._name + ".title.text", placeholder: n._dfltTitle[a], avoid: d, transform: c, attributes: { x: f, y: p, "text-anchor": "middle", }, }); })(t, e); }), s.syncOrAsync(rt) ); } } function at(t) { var r = p + (t || "tick"); return ( w[r] || (w[r] = (function (t, e) { var r, n, i, a; t._selections[e].size() ? ((r = 1 / 0), (n = -1 / 0), (i = 1 / 0), (a = -1 / 0), t._selections[e].each(function () { var t = kt(this), e = h.bBox(t.node().parentNode); (r = Math.min(r, e.top)), (n = Math.max(n, e.bottom)), (i = Math.min(i, e.left)), (a = Math.max(a, e.right)); })) : ((r = 0), (n = 0), (i = 0), (a = 0)); return { top: r, bottom: n, left: i, right: a, height: n - r, width: a - i, }; })(e, r)), w[r] ); } }), (q.getTickSigns = function (t, e) { var r = t._id.charAt(0), n = { x: "top", y: "right" }[r], i = t.side === n ? 1 : -1, a = [-1, 1, i, -i]; return ( ("inside" !== (e ? (t.minor || {}).ticks : t.ticks)) == ("x" === r) && (a = a.map(function (t) { return -t; })), t.side && a.push( { l: -1, t: -1, r: 1, b: 1 }[t.side.charAt(0)], ), a ); }), (q.makeTransTickFn = function (t) { return "x" === t._id.charAt(0) ? function (e) { return l(t._offset + t.l2p(e.x), 0); } : function (e) { return l(0, t._offset + t.l2p(e.x)); }; }), (q.makeTransTickLabelFn = function (t) { var e = (function (t) { var e = t.ticklabelposition || "", r = function (t) { return -1 !== e.indexOf(t); }, n = r("top"), i = r("left"), a = r("right"), o = r("bottom"), s = r("inside"), l = o || i || n || a; if (!l && !s) return [0, 0]; var c = t.side, u = l ? (t.tickwidth || 0) / 2 : 0, f = 3, h = t.tickfont ? t.tickfont.size : 12; (o || n) && ((u += h * U), (f += (t.linewidth || 0) / 2)); (i || a) && ((u += (t.linewidth || 0) / 2), (f += 3)); s && "top" === c && (f -= h * (1 - U)); (i || n) && (u = -u); ("bottom" !== c && "right" !== c) || (f = -f); return [l ? u : 0, s ? f : 0]; })(t), r = e[0], n = e[1]; return "x" === t._id.charAt(0) ? function (e) { return l(r + t._offset + t.l2p(bt(e)), n); } : function (e) { return l(n, r + t._offset + t.l2p(bt(e))); }; }), (q.makeTickPath = function (t, e, r, n) { n || (n = {}); var i = n.minor; if (i && !t.minor) return ""; var a = void 0 !== n.len ? n.len : i ? t.minor.ticklen : t.ticklen, o = t._id.charAt(0), s = (t.linewidth || 1) / 2; return "x" === o ? "M0," + (e + s * r) + "v" + a * r : "M" + (e + s * r) + ",0h" + a * r; }), (q.makeLabelFns = function (t, e, r) { var n = t.ticklabelposition || "", a = function (t) { return -1 !== n.indexOf(t); }, o = a("top"), l = a("left"), c = a("right"), u = a("bottom") || l || o || c, f = a("inside"), h = ("inside" === n && "inside" === t.ticks) || (!f && "outside" === t.ticks && "boundaries" !== t.tickson), p = 0, d = 0, m = h ? t.ticklen : 0; if ((f ? (m *= -1) : u && (m = 0), h && ((p += m), r))) { var g = s.deg2rad(r); (p = m * Math.cos(g) + 1), (d = m * Math.sin(g)); } t.showticklabels && (h || t.showline) && (p += 0.2 * t.tickfont.size); var v, y, x, b, _, w = { labelStandoff: (p += ((t.linewidth || 1) / 2) * (f ? -1 : 1)), labelShift: d, }, T = 0, k = t.side, A = t._id.charAt(0), M = t.tickangle; if ("x" === A) (b = (_ = (!f && "bottom" === k) || (f && "top" === k)) ? 1 : -1), f && (b *= -1), (v = d * b), (y = e + p * b), (x = _ ? 1 : -0.2), 90 === Math.abs(M) && (f ? (x += j) : (x = -90 === M && "bottom" === k ? U : 90 === M && "top" === k ? j : 0.5), (T = (j / 2) * (M / 90))), (w.xFn = function (t) { return t.dx + v + T * t.fontSize; }), (w.yFn = function (t) { return t.dy + y + t.fontSize * x; }), (w.anchorFn = function (t, e) { if (u) { if (l) return "end"; if (c) return "start"; } return i(e) && 0 !== e && 180 !== e ? e * b < 0 !== f ? "end" : "start" : "middle"; }), (w.heightFn = function (e, r, n) { return r < -60 || r > 60 ? -0.5 * n : ("top" === t.side) !== f ? -n : 0; }); else if ("y" === A) { if ( ((b = (_ = (!f && "left" === k) || (f && "right" === k)) ? 1 : -1), f && (b *= -1), (v = p), (y = d * b), (x = 0), f || 90 !== Math.abs(M) || (x = (-90 === M && "left" === k) || (90 === M && "right" === k) ? U : 0.5), f) ) { var S = i(M) ? +M : 0; if (0 !== S) { var E = s.deg2rad(S); (T = Math.abs(Math.sin(E)) * U * b), (x = 0); } } (w.xFn = function (t) { return ( t.dx + e - (v + t.fontSize * x) * b + T * t.fontSize ); }), (w.yFn = function (t) { return t.dy + y + t.fontSize * j; }), (w.anchorFn = function (t, e) { return i(e) && 90 === Math.abs(e) ? "middle" : _ ? "end" : "start"; }), (w.heightFn = function (e, r, n) { return ( "right" === t.side && (r *= -1), r < -30 ? -n : r < 30 ? -0.5 * n : 0 ); }); } return w; }), (q.drawTicks = function (t, e, r) { r = r || {}; var i = e._id + "tick", a = [] .concat( e.minor && e.minor.ticks ? r.vals.filter(function (t) { return t.minor && !t.noTick; }) : [], ) .concat( e.ticks ? r.vals.filter(function (t) { return !t.minor && !t.noTick; }) : [], ), o = r.layer.selectAll("path." + i).data(a, _t); o.exit().remove(), o .enter() .append("path") .classed(i, 1) .classed("ticks", 1) .classed("crisp", !1 !== r.crisp) .each(function (t) { return f.stroke( n.select(this), t.minor ? e.minor.tickcolor : e.tickcolor, ); }) .style("stroke-width", function (r) { return ( h.crispRound( t, r.minor ? e.minor.tickwidth : e.tickwidth, 1, ) + "px" ); }) .attr("d", r.path) .style("display", null), zt(e, [R]), o.attr("transform", r.transFn); }), (q.drawGrid = function (t, e, r) { r = r || {}; var i = e._id + "grid", a = e.minor && e.minor.showgrid, o = a ? r.vals.filter(function (t) { return t.minor; }) : [], s = e.showgrid ? r.vals.filter(function (t) { return !t.minor; }) : [], l = r.counterAxis; if (l && q.shouldShowZeroLine(t, e, l)) for ( var c = "array" === e.tickmode, u = 0; u < s.length; u++ ) { var p = s[u].x; if (c ? !p : Math.abs(p) < e.dtick / 100) { if ( ((s = s.slice(0, u).concat(s.slice(u + 1))), !c) ) break; u--; } } e._gw = h.crispRound(t, e.gridwidth, 1); for ( var d = a ? h.crispRound(t, e.minor.gridwidth, 1) : 0, m = r.layer, g = r.minorLayer, v = 1; v >= 0; v-- ) { var y = v ? m : g; if (y) { var x = y.selectAll("path." + i).data(v ? s : o, _t); x.exit().remove(), x .enter() .append("path") .classed(i, 1) .classed("crisp", !1 !== r.crisp), x .attr("transform", r.transFn) .attr("d", r.path) .each(function (t) { return f.stroke( n.select(this), t.minor ? e.minor.gridcolor : e.gridcolor || "#ddd", ); }) .style("stroke-dasharray", function (t) { return h.dashStyle( t.minor ? e.minor.griddash : e.griddash, t.minor ? e.minor.gridwidth : e.gridwidth, ); }) .style("stroke-width", function (t) { return (t.minor ? d : e._gw) + "px"; }) .style("display", null), "function" == typeof r.path && x.attr("d", r.path); } } zt(e, [z, D]); }), (q.drawZeroLine = function (t, e, r) { r = r || r; var n = e._id + "zl", i = q.shouldShowZeroLine(t, e, r.counterAxis), a = r.layer .selectAll("path." + n) .data(i ? [{ x: 0, id: e._id }] : []); a.exit().remove(), a .enter() .append("path") .classed(n, 1) .classed("zl", 1) .classed("crisp", !1 !== r.crisp) .each(function () { r.layer.selectAll("path").sort(function (t, e) { return W(t.id, e.id); }); }), a .attr("transform", r.transFn) .attr("d", r.path) .call(f.stroke, e.zerolinecolor || f.defaultLine) .style( "stroke-width", h.crispRound(t, e.zerolinewidth, e._gw || 1) + "px", ) .style("display", null), zt(e, [O]); }), (q.drawLabels = function (t, e, r) { r = r || {}; var a = t._fullLayout, o = e._id, u = o.charAt(0), f = r.cls || o + "tick", p = r.vals.filter(function (t) { return t.text; }), d = r.labelFns, m = r.secondary ? 0 : e.tickangle, g = (e._prevTickAngles || {})[f], v = r.layer .selectAll("g." + f) .data(e.showticklabels ? p : [], _t), y = []; function x(t, a) { t.each(function (t) { var o = n.select(this), s = o.select(".text-math-group"), u = d.anchorFn(t, a), f = r.transFn.call(o.node(), t) + (i(a) && 0 != +a ? " rotate(" + a + "," + d.xFn(t) + "," + (d.yFn(t) - t.fontSize / 2) + ")" : ""), p = c.lineCount(o), m = V * t.fontSize, g = d.heightFn(t, i(a) ? +a : 0, (p - 1) * m); if ((g && (f += l(0, g)), s.empty())) { var v = o.select("text"); v.attr({ transform: f, "text-anchor": u }), v.style("opacity", 1), e._adjustTickLabelsOverflow && e._adjustTickLabelsOverflow(); } else { var y = h.bBox(s.node()).width * { end: -0.5, start: 0.5 }[u]; s.attr("transform", f + l(y, 0)); } }); } v .enter() .append("g") .classed(f, 1) .append("text") .attr("text-anchor", "middle") .each(function (e) { var r = n.select(this), i = t._promises.length; r .call(c.positionText, d.xFn(e), d.yFn(e)) .call(h.font, e.font, e.fontSize, e.fontColor) .text(e.text) .call(c.convertToTspans, t), t._promises[i] ? y.push( t._promises.pop().then(function () { x(r, m); }), ) : x(r, m); }), zt(e, [F]), v.exit().remove(), r.repositionOnUpdate && v.each(function (t) { n.select(this) .select("text") .call(c.positionText, d.xFn(t), d.yFn(t)); }), (e._adjustTickLabelsOverflow = function () { var r = e.ticklabeloverflow; if (r && "allow" !== r) { var i = -1 !== r.indexOf("hide"), o = "x" === e._id.charAt(0), l = 0, c = o ? t._fullLayout.width : t._fullLayout.height; if (-1 !== r.indexOf("domain")) { var u = s.simpleMap(e.range, e.r2l); (l = e.l2p(u[0]) + e._offset), (c = e.l2p(u[1]) + e._offset); } var f = Math.min(l, c), p = Math.max(l, c), d = e.side, m = 1 / 0, g = -1 / 0; for (var y in (v.each(function (t) { var r = n.select(this); if (r.select(".text-math-group").empty()) { var a = h.bBox(r.node()), s = 0; o ? (a.right > p || a.left < f) && (s = 1) : (a.bottom > p || a.top + (e.tickangle ? 0 : t.fontSize / 4) < f) && (s = 1); var l = r.select("text"); s ? i && l.style("opacity", 0) : (l.style("opacity", 1), (m = "bottom" === d || "right" === d ? Math.min(m, o ? a.top : a.left) : -1 / 0), (g = "top" === d || "left" === d ? Math.max(g, o ? a.bottom : a.right) : 1 / 0)); } }), a._plots)) { var x = a._plots[y]; if ( e._id === x.xaxis._id || e._id === x.yaxis._id ) { var b = o ? x.yaxis : x.xaxis; b && ((b["_visibleLabelMin_" + e._id] = m), (b["_visibleLabelMax_" + e._id] = g)); } } } }), (e._hideCounterAxisInsideTickLabels = function (t) { var r = "x" === e._id.charAt(0), i = []; for (var o in a._plots) { var s = a._plots[o]; (e._id !== s.xaxis._id && e._id !== s.yaxis._id) || i.push(r ? s.yaxis : s.xaxis); } i.forEach(function (r, i) { r && Ot(r) && (t || [O, D, z, R, F]).forEach(function (t) { var o = "tick" === t.K && "text" === t.L && "period" === e.ticklabelmode, s = a._plots[e._mainSubplot]; (t.K === O.K ? s.zerolinelayer.selectAll( "." + e._id + "zl", ) : t.K === D.K ? s.minorGridlayer.selectAll("." + e._id) : t.K === z.K ? s.gridlayer.selectAll("." + e._id) : s[e._id.charAt(0) + "axislayer"] ).each(function () { var a = n.select(this); t.L && (a = a.selectAll(t.L)), a.each(function (a) { var s = e.l2p(o ? bt(a) : a.x) + e._offset, l = n.select(this); s < e["_visibleLabelMax_" + r._id] && s > e["_visibleLabelMin_" + r._id] ? l.style("display", "none") : "tick" !== t.K || i || l.style("display", null); }); }); }); }); }), x(v, g + 1 ? g : m); var b = null; e._selections && (e._selections[f] = v); var _ = [ function () { return y.length && Promise.all(y); }, ]; e.automargin && a._redrawFromAutoMarginCount && 90 === g ? ((b = 90), _.push(function () { x(v, g); })) : _.push(function () { if ( (x(v, m), p.length && "x" === u && !i(m) && ("log" !== e.type || "D" !== String(e.dtick).charAt(0))) ) { b = 0; var t, n = 0, a = []; if ( (v.each(function (t) { n = Math.max(n, t.fontSize); var r = e.l2p(t.x), i = kt(this), o = h.bBox(i.node()); a.push({ top: 0, bottom: 10, height: 10, left: r - o.width / 2, right: r + o.width / 2 + 2, width: o.width + 2, }); }), ("boundaries" !== e.tickson && !e.showdividers) || r.secondary) ) { var o = p.length, l = Math.abs((p[o - 1].x - p[0].x) * e._m) / (o - 1), c = e.ticklabelposition || "", f = function (t) { return -1 !== c.indexOf(t); }, d = f("top"), g = f("left"), y = f("right"), _ = f("bottom") || g || d || y ? (e.tickwidth || 0) + 6 : 0, w = l < 2.5 * n || "multicategory" === e.type || "realaxis" === e._name; for (t = 0; t < a.length - 1; t++) if (s.bBoxIntersect(a[t], a[t + 1], _)) { b = w ? 90 : 30; break; } } else { var T = 2; for ( e.ticks && (T += e.tickwidth / 2), t = 0; t < a.length; t++ ) { var k = p[t].xbnd, A = a[t]; if ( (null !== k[0] && A.left - e.l2p(k[0]) < T) || (null !== k[1] && e.l2p(k[1]) - A.right < T) ) { b = 90; break; } } } b && x(v, b); } }), e._tickAngles && _.push(function () { e._tickAngles[f] = null === b ? (i(m) ? m : 0) : b; }); var w = e._anchorAxis; w && w.autorange && Ot(e) && !Z(a, e._id) && (a._insideTickLabelsAutorange || (a._insideTickLabelsAutorange = {}), (a._insideTickLabelsAutorange[w._name + ".autorange"] = w.autorange), _.push(function () { v.each(function (t, r) { var n = kt(this); n.select(".text-math-group").empty() && (e._vals[r].bb = h.bBox(n.node())); }); })); var T = s.syncOrAsync(_); return T && T.then && t._promises.push(T), T; }), (q.getPxPosition = function (t, e) { var r, n = t._fullLayout._size, i = e._id.charAt(0), a = e.side; return ( "free" !== e.anchor ? (r = e._anchorAxis) : "x" === i ? (r = { _offset: n.t + (1 - (e.position || 0)) * n.h, _length: 0, }) : "y" === i && (r = { _offset: n.l + (e.position || 0) * n.w, _length: 0, }), "top" === a || "left" === a ? r._offset : "bottom" === a || "right" === a ? r._offset + r._length : void 0 ); }), (q.shouldShowZeroLine = function (t, e, r) { var n = s.simpleMap(e.range, e.r2l); return ( n[0] * n[1] <= 0 && e.zeroline && ("linear" === e.type || "-" === e.type) && !(e.rangebreaks && e.maskBreaks(0) === I) && (Tt(e, 0) || !(function (t, e, r, n) { var i = r._mainAxis; if (!i) return; var a = t._fullLayout, o = e._id.charAt(0), s = q.counterLetter(e._id), l = e._offset + (Math.abs(n[0]) < Math.abs(n[1]) == ("x" === o) ? 0 : e._length); function c(t) { if (!t.showline || !t.linewidth) return !1; var r = Math.max( (t.linewidth + e.zerolinewidth) / 2, 1, ); function n(t) { return ( "number" == typeof t && Math.abs(t - l) < r ); } if ( n(t._mainLinePosition) || n(t._mainMirrorPosition) ) return !0; var i = t._linepositions || {}; for (var a in i) if (n(i[a][0]) || n(i[a][1])) return !0; } var u = a._plots[r._mainSubplot]; if (!(u.mainplotinfo || u).overlays.length) return c(r); for ( var f = q.list(t, s), h = 0; h < f.length; h++ ) { var p = f[h]; if (p._mainAxis === i && c(p)) return !0; } })(t, e, r, n) || (function (t, e) { for ( var r = t._fullData, n = e._mainSubplot, i = e._id.charAt(0), a = 0; a < r.length; a++ ) { var s = r[a]; if (!0 === s.visible && s.xaxis + s.yaxis === n) { if ( o.traceIs(s, "bar-like") && s.orientation === { x: "h", y: "v" }[i] ) return !0; if ( s.fill && s.fill.charAt(s.fill.length - 1) === i ) return !0; } } return !1; })(t, e)) ); }), (q.clipEnds = function (t, e) { return e.filter(function (e) { return Tt(t, e.x); }); }), (q.allowAutoMargin = function (t) { for ( var e = q.list(t, "", !0), r = 0; r < e.length; r++ ) { var n = e[r]; n.automargin && (a.allowAutoMargin(t, At(n)), n.mirror && a.allowAutoMargin(t, Mt(n))), o.getComponentMethod("rangeslider", "isVisible")(n) && a.allowAutoMargin(t, St(n)); } }), (q.swap = function (t, e) { for ( var r = (function (t, e) { var r, n, i = []; for (r = 0; r < e.length; r++) { var a = [], o = t._fullData[e[r]].xaxis, s = t._fullData[e[r]].yaxis; if (o && s) { for (n = 0; n < i.length; n++) (-1 === i[n].x.indexOf(o) && -1 === i[n].y.indexOf(s)) || a.push(n); if (a.length) { var l, c = i[a[0]]; if (a.length > 1) for (n = 1; n < a.length; n++) (l = i[a[n]]), Et(c.x, l.x), Et(c.y, l.y); Et(c.x, [o]), Et(c.y, [s]); } else i.push({ x: [o], y: [s] }); } } return i; })(t, e), n = 0; n < r.length; n++ ) Lt(t, r[n].x, r[n].y); }); }, { "../../components/color": 367, "../../components/drawing": 389, "../../components/titles": 476, "../../constants/alignment": 483, "../../constants/numerical": 491, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plots/plots": 628, "../../registry": 647, "./autorange": 565, "./axis_autotype": 567, "./axis_ids": 570, "./clean_ticks": 572, "./layout_attributes": 579, "./set_convert": 585, "@plotly/d3": 58, "fast-isnumeric": 190, }, ], 567: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("../../constants/numerical").BADNUM, o = i.isArrayOrTypedArray, s = i.isDateTime, l = i.cleanNumber, c = Math.round; function u(t, e) { return e ? n(t) : "number" == typeof t; } function f(t) { return Math.max(1, (t - 1) / 1e3); } e.exports = function (t, e, r) { var i = t, h = r.noMultiCategory; if (o(i) && !i.length) return "-"; if ( !h && (function (t) { return o(t[0]) && o(t[1]); })(i) ) return "multicategory"; if (h && Array.isArray(i[0])) { for (var p = [], d = 0; d < i.length; d++) if (o(i[d])) for (var m = 0; m < i[d].length; m++) p.push(i[d][m]); i = p; } if ( (function (t, e) { for ( var r = t.length, i = f(r), a = 0, o = 0, l = {}, u = 0; u < r; u += i ) { var h = c(u), p = t[h], d = String(p); l[d] || ((l[d] = 1), s(p, e) && a++, n(p) && o++); } return a > 2 * o; })(i, e) ) return "date"; var g = "strict" !== r.autotypenumbers; return (function (t, e) { for ( var r = t.length, n = f(r), i = 0, o = 0, s = {}, u = 0; u < r; u += n ) { var h = c(u), p = t[h], d = String(p); if (!s[d]) { s[d] = 1; var m = typeof p; "boolean" === m ? o++ : (e ? l(p) !== a : "number" === m) ? i++ : "string" === m && o++; } } return o > 2 * i; })(i, g) ? "category" : (function (t, e) { for (var r = t.length, n = 0; n < r; n++) if (u(t[n], e)) return !0; return !1; })(i, g) ? "linear" : "-"; }; }, { "../../constants/numerical": 491, "../../lib": 515, "fast-isnumeric": 190, }, ], 568: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../registry"), a = t("../../lib"), o = t("../../plot_api/plot_template"), s = t("../array_container_defaults"), l = t("./layout_attributes"), c = t("./tick_value_defaults"), u = t("./tick_mark_defaults"), f = t("./tick_label_defaults"), h = t("./prefix_suffix_defaults"), p = t("./category_order_defaults"), d = t("./line_grid_defaults"), m = t("./set_convert"), g = t("./constants").WEEKDAY_PATTERN, v = t("./constants").HOUR_PATTERN; function y(t, e, r) { function i(r, n) { return a.coerce(t, e, l.rangebreaks, r, n); } if (i("enabled")) { var o = i("bounds"); if (o && o.length >= 2) { var s, c, u = ""; if (2 === o.length) for (s = 0; s < 2; s++) if ((c = b(o[s]))) { u = g; break; } var f = i("pattern", u); if (f === g) for (s = 0; s < 2; s++) (c = b(o[s])) && (e.bounds[s] = o[s] = c - 1); if (f) for (s = 0; s < 2; s++) switch (((c = o[s]), f)) { case g: if (!n(c)) return void (e.enabled = !1); if ( (c = +c) !== Math.floor(c) || c < 0 || c >= 7 ) return void (e.enabled = !1); e.bounds[s] = o[s] = c; break; case v: if (!n(c)) return void (e.enabled = !1); if ((c = +c) < 0 || c > 24) return void (e.enabled = !1); e.bounds[s] = o[s] = c; } if (!1 === r.autorange) { var h = r.range; if (h[0] < h[1]) { if (o[0] < h[0] && o[1] > h[1]) return void (e.enabled = !1); } else if (o[0] > h[0] && o[1] < h[1]) return void (e.enabled = !1); } } else { var p = i("values"); if (!p || !p.length) return void (e.enabled = !1); i("dvalue"); } } } e.exports = function (t, e, r, n, v) { var x, b = n.letter, _ = n.font || {}, w = n.splomStash || {}, T = r("visible", !n.visibleDflt), k = e._template || {}, A = e.type || k.type || "-"; "date" === A && (i.getComponentMethod("calendars", "handleDefaults")( t, e, "calendar", n.calendar, ), n.noTicklabelmode || (x = r("ticklabelmode"))); var M = ""; (n.noTicklabelposition && "multicategory" !== A) || (M = a.coerce( t, e, { ticklabelposition: { valType: "enumerated", dflt: "outside", values: "period" === x ? ["outside", "inside"] : "x" === b ? [ "outside", "inside", "outside left", "inside left", "outside right", "inside right", ] : [ "outside", "inside", "outside top", "inside top", "outside bottom", "inside bottom", ], }, }, "ticklabelposition", )), n.noTicklabeloverflow || r( "ticklabeloverflow", -1 !== M.indexOf("inside") ? "hide past domain" : "category" === A || "multicategory" === A ? "allow" : "hide past div", ), m(e, v); var S = !e.isValidRange(t.range); S && n.reverseDflt && (S = "reversed"), !r("autorange", S) || ("linear" !== A && "-" !== A) || r("rangemode"), r("range"), e.cleanRange(), p(t, e, r, n), "category" === A || n.noHover || r("hoverformat"); var E = r("color"), L = E !== l.color.dflt ? E : _.color, C = w.label || v._dfltTitle[b]; if ((h(t, e, r, A, n), !T)) return e; r("title.text", C), a.coerceFont(r, "title.font", { family: _.family, size: a.bigFont(_.size), color: L, }), c(t, e, r, A); var P = n.hasMinor; if ( (P && (o.newContainer(e, "minor"), c(t, e, r, A, { isMinor: !0 })), f(t, e, r, A, n), u(t, e, r, n), P) ) { var I = n.isMinor; (n.isMinor = !0), u(t, e, r, n), (n.isMinor = I); } d(t, e, r, { dfltColor: E, bgColor: n.bgColor, showGrid: n.showGrid, hasMinor: P, attributes: l, }), !P || e.minor.ticks || e.minor.showgrid || delete e.minor, (e.showline || e.ticks) && r("mirror"), n.automargin && r("automargin"); var O, z = "multicategory" === A; n.noTickson || ("category" !== A && !z) || (!e.ticks && !e.showgrid) || (z && (O = "boundaries"), "boundaries" === r("tickson", O) && delete e.ticklabelposition); z && r("showdividers") && (r("dividercolor"), r("dividerwidth")); if ("date" === A) if ( (s(t, e, { name: "rangebreaks", inclusionAttr: "enabled", handleItemDefaults: y, }), e.rangebreaks.length) ) { for (var D = 0; D < e.rangebreaks.length; D++) if (e.rangebreaks[D].pattern === g) { e._hasDayOfWeekBreaks = !0; break; } if ((m(e, v), v._has("scattergl") || v._has("splom"))) for (var R = 0; R < n.data.length; R++) { var F = n.data[R]; ("scattergl" !== F.type && "splom" !== F.type) || ((F.visible = !1), a.warn( F.type + " traces do not work on axes with rangebreaks. Setting trace " + F.index + " to `visible: false`.", )); } } else delete e.rangebreaks; return e; }; var x = { sun: 1, mon: 2, tue: 3, wed: 4, thu: 5, fri: 6, sat: 7, }; function b(t) { if ("string" == typeof t) return x[t.substr(0, 3).toLowerCase()]; } }, { "../../lib": 515, "../../plot_api/plot_template": 555, "../../registry": 647, "../array_container_defaults": 561, "./category_order_defaults": 571, "./constants": 573, "./layout_attributes": 579, "./line_grid_defaults": 581, "./prefix_suffix_defaults": 583, "./set_convert": 585, "./tick_label_defaults": 587, "./tick_mark_defaults": 588, "./tick_value_defaults": 589, "fast-isnumeric": 190, }, ], 569: [ function (t, e, r) { "use strict"; var n = t("../../constants/docs"), i = n.FORMAT_LINK, a = n.DATE_FORMAT_LINK; function o(t, e) { return [ "Sets the " + t + " formatting rule" + (e ? "for `" + e + "` " : ""), "using d3 formatting mini-languages", "which are very similar to those in Python. For numbers, see: " + i + ".", ].join(" "); } function s(t, e) { return ( o(t, e) + [ " And for dates see: " + a + ".", "We add two items to d3's date formatter:", "*%h* for half of the year as a decimal number as well as", "*%{n}f* for fractional seconds", "with n digits. For example, *2016-10-13 09:15:23.456* with tickformat", "*%H~%M~%S.%2f* would display *09~15~23.46*", ].join(" ") ); } e.exports = { axisHoverFormat: function (t, e) { return { valType: "string", dflt: "", editType: "none", description: (e ? o : s)("hover text", t) + [ "By default the values are formatted using " + (e ? "generic number format" : "`" + t + "axis.hoverformat`") + ".", ].join(" "), }; }, descriptionOnlyNumbers: o, descriptionWithDates: s, }; }, { "../../constants/docs": 486 }, ], 570: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("./constants"); function a(t, e) { if (e && e.length) for (var r = 0; r < e.length; r++) if (e[r][t]) return !0; return !1; } (r.id2name = function (t) { if ("string" == typeof t && t.match(i.AX_ID_PATTERN)) { var e = t.split(" ")[0].substr(1); return "1" === e && (e = ""), t.charAt(0) + "axis" + e; } }), (r.name2id = function (t) { if (t.match(i.AX_NAME_PATTERN)) { var e = t.substr(5); return "1" === e && (e = ""), t.charAt(0) + e; } }), (r.cleanId = function (t, e, r) { var n = /( domain)$/.test(t); if ( "string" == typeof t && t.match(i.AX_ID_PATTERN) && (!e || t.charAt(0) === e) && (!n || r) ) { var a = t.split(" ")[0].substr(1).replace(/^0+/, ""); return ( "1" === a && (a = ""), t.charAt(0) + a + (n && r ? " domain" : "") ); } }), (r.list = function (t, e, n) { var i = t._fullLayout; if (!i) return []; var a, o = r.listIds(t, e), s = new Array(o.length); for (a = 0; a < o.length; a++) { var l = o[a]; s[a] = i[l.charAt(0) + "axis" + l.substr(1)]; } if (!n) { var c = i._subplots.gl3d || []; for (a = 0; a < c.length; a++) { var u = i[c[a]]; e ? s.push(u[e + "axis"]) : s.push(u.xaxis, u.yaxis, u.zaxis); } } return s; }), (r.listIds = function (t, e) { var r = t._fullLayout; if (!r) return []; var n = r._subplots; return e ? n[e + "axis"] : n.xaxis.concat(n.yaxis); }), (r.getFromId = function (t, e, n) { var i = t._fullLayout; return ( (e = void 0 === e || "string" != typeof e ? e : e.replace(" domain", "")), "x" === n ? (e = e.replace(/y[0-9]*/, "")) : "y" === n && (e = e.replace(/x[0-9]*/, "")), i[r.id2name(e)] ); }), (r.getFromTrace = function (t, e, i) { var a = t._fullLayout, o = null; if (n.traceIs(e, "gl3d")) { var s = e.scene; "scene" === s.substr(0, 5) && (o = a[s][i + "axis"]); } else o = r.getFromId(t, e[i + "axis"] || i); return o; }), (r.idSort = function (t, e) { var r = t.charAt(0), n = e.charAt(0); return r !== n ? r > n ? 1 : -1 : +(t.substr(1) || 1) - +(e.substr(1) || 1); }), (r.ref2id = function (t) { return !!/^[xyz]/.test(t) && t.split(" ")[0]; }), (r.isLinked = function (t, e) { return ( a(e, t._axisMatchGroups) || a(e, t._axisConstraintGroups) ); }); }, { "../../registry": 647, "./constants": 573 }, ], 571: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n) { if ("category" === e.type) { var i, a = t.categoryarray, o = Array.isArray(a) && a.length > 0; o && (i = "array"); var s, l = r("categoryorder", i); "array" === l && (s = r("categoryarray")), o || "array" !== l || (l = e.categoryorder = "trace"), "trace" === l ? (e._initialCategories = []) : "array" === l ? (e._initialCategories = s.slice()) : ((s = (function (t, e) { var r, n, i, a = e.dataAttr || t._id.charAt(0), o = {}; if (e.axData) r = e.axData; else for (r = [], n = 0; n < e.data.length; n++) { var s = e.data[n]; s[a + "axis"] === t._id && r.push(s); } for (n = 0; n < r.length; n++) { var l = r[n][a]; for (i = 0; i < l.length; i++) { var c = l[i]; null != c && (o[c] = 1); } } return Object.keys(o); })(e, n).sort()), "category ascending" === l ? (e._initialCategories = s) : "category descending" === l && (e._initialCategories = s.reverse())); } }; }, {}, ], 572: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("../../constants/numerical"), o = a.ONEDAY, s = a.ONEWEEK; (r.dtick = function (t, e) { var r = "log" === e, i = "date" === e, a = "category" === e, s = i ? o : 1; if (!t) return s; if (n(t)) return (t = Number(t)) <= 0 ? s : a ? Math.max(1, Math.round(t)) : i ? Math.max(0.1, t) : t; if ("string" != typeof t || (!i && !r)) return s; var l = t.charAt(0), c = t.substr(1); return (c = n(c) ? Number(c) : 0) <= 0 || !( (i && "M" === l && c === Math.round(c)) || (r && "L" === l) || (r && "D" === l && (1 === c || 2 === c)) ) ? s : t; }), (r.tick0 = function (t, e, r, a) { return "date" === e ? i.cleanDate(t, i.dateTick0(r, a % s == 0 ? 1 : 0)) : "D1" !== a && "D2" !== a ? n(t) ? Number(t) : 0 : void 0; }); }, { "../../constants/numerical": 491, "../../lib": 515, "fast-isnumeric": 190, }, ], 573: [ function (t, e, r) { "use strict"; var n = t("../../lib/regex").counter; e.exports = { idRegex: { x: n("x", "( domain)?"), y: n("y", "( domain)?"), }, attrRegex: n("[xy]axis"), xAxisMatch: n("xaxis"), yAxisMatch: n("yaxis"), AX_ID_PATTERN: /^[xyz][0-9]*( domain)?$/, AX_NAME_PATTERN: /^[xyz]axis[0-9]*$/, SUBPLOT_PATTERN: /^x([0-9]*)y([0-9]*)$/, HOUR_PATTERN: "hour", WEEKDAY_PATTERN: "day of week", MINDRAG: 8, MINZOOM: 20, DRAGGERSIZE: 20, REDRAWDELAY: 50, DFLTRANGEX: [-1, 6], DFLTRANGEY: [-1, 4], traceLayerClasses: [ "imagelayer", "heatmaplayer", "contourcarpetlayer", "contourlayer", "funnellayer", "waterfalllayer", "barlayer", "carpetlayer", "violinlayer", "boxlayer", "ohlclayer", "scattercarpetlayer", "scatterlayer", ], clipOnAxisFalseQuery: [ ".scatterlayer", ".barlayer", ".funnellayer", ".waterfalllayer", ], layerValue2layerClass: { "above traces": "above", "below traces": "below", }, }; }, { "../../lib/regex": 532 }, ], 574: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./autorange"), a = t("./axis_ids").id2name, o = t("./layout_attributes"), s = t("./scale_zoom"), l = t("./set_convert"), c = t("../../constants/numerical").ALMOST_EQUAL, u = t("../../constants/alignment").FROM_BL; function f(t, e, r) { var i = r.axIds, s = r.layoutOut, l = r.hasImage, c = s._axisConstraintGroups, u = s._axisMatchGroups, f = e._id, m = f.charAt(0), g = ((s._splomAxes || {})[m] || {})[f] || {}, v = e._id, y = "x" === v.charAt(0); function x(r, i) { return n.coerce(t, e, o, r, i); } (e._matchGroup = null), (e._constraintGroup = null), x("constrain", l ? "domain" : "range"), n.coerce( t, e, { constraintoward: { valType: "enumerated", values: y ? ["left", "center", "right"] : ["bottom", "middle", "top"], dflt: y ? "center" : "middle", }, }, "constraintoward", ); var b, _, w = e.type, T = []; for (b = 0; b < i.length; b++) { if ((_ = i[b]) !== v) s[a(_)].type === w && T.push(_); } var k = p(c, v); if (k) { var A = []; for (b = 0; b < T.length; b++) k[(_ = T[b])] || A.push(_); T = A; } var M, S, E = T.length; E && (t.matches || g.matches) && (M = n.coerce( t, e, { matches: { valType: "enumerated", values: T, dflt: -1 !== T.indexOf(g.matches) ? g.matches : void 0, }, }, "matches", )); var L = l && !y ? e.anchor : void 0; if ( (E && !M && (t.scaleanchor || L) && (S = n.coerce( t, e, { scaleanchor: { valType: "enumerated", values: T } }, "scaleanchor", L, )), M) ) { e._matchGroup = d(u, v, M, 1); var C = s[a(M)], P = h(s, e) / h(s, C); y !== ("x" === M.charAt(0)) && (P = (y ? "x" : "y") + P), d(c, v, M, P); } else t.matches && -1 !== i.indexOf(t.matches) && n.warn( "ignored " + e._name + '.matches: "' + t.matches + '" to avoid an infinite loop', ); if (S) { var I = x("scaleratio"); I || (I = e.scaleratio = 1), d(c, v, S, I); } else t.scaleanchor && -1 !== i.indexOf(t.scaleanchor) && n.warn( "ignored " + e._name + '.scaleanchor: "' + t.scaleanchor + '" to avoid either an infinite loop and possibly inconsistent scaleratios, or because this axis declares a *matches* constraint.', ); } function h(t, e) { var r = e.domain; return r || (r = t[a(e.overlaying)].domain), r[1] - r[0]; } function p(t, e) { for (var r = 0; r < t.length; r++) if (t[r][e]) return t[r]; return null; } function d(t, e, r, n) { var i, a, o, s, l, c = p(t, e); null === c ? (((c = {})[e] = 1), (l = t.length), t.push(c)) : (l = t.indexOf(c)); var u = Object.keys(c); for (i = 0; i < t.length; i++) if (((o = t[i]), i !== l && o[r])) { var f = o[r]; for (a = 0; a < u.length; a++) o[(s = u[a])] = m(f, m(n, c[s])); return void t.splice(l, 1); } if (1 !== n) for (a = 0; a < u.length; a++) { var h = u[a]; c[h] = m(n, c[h]); } c[r] = 1; } function m(t, e) { var r, n, i = "", a = ""; "string" == typeof t && ((r = (i = t.match(/^[xy]*/)[0]).length), (t = +t.substr(r))), "string" == typeof e && ((n = (a = e.match(/^[xy]*/)[0]).length), (e = +e.substr(n))); var o = t * e; return r || n ? r && n && i.charAt(0) !== a.charAt(0) ? r === n ? o : (r > n ? i.substr(n) : a.substr(r)) + o : i + a + t * e : o; } function g(t, e) { for ( var r = e._size, n = r.h / r.w, i = {}, a = Object.keys(t), o = 0; o < a.length; o++ ) { var s = a[o], l = t[s]; if ("string" == typeof l) { var c = l.match(/^[xy]*/)[0], u = c.length; l = +l.substr(u); for ( var f = "y" === c.charAt(0) ? n : 1 / n, h = 0; h < u; h++ ) l *= f; } i[s] = l; } return i; } function v(t, e) { var r = t._inputDomain, n = u[t.constraintoward], i = r[0] + (r[1] - r[0]) * n; (t.domain = t._input.domain = [i + (r[0] - i) / e, i + (r[1] - i) / e]), t.setScale(); } (r.handleDefaults = function (t, e, r) { var i, o, s, c, u, h, p, d, m = r.axIds, g = r.axHasImage, v = (e._axisConstraintGroups = []), y = (e._axisMatchGroups = []); for (i = 0; i < m.length; i++) f((u = t[(c = a(m[i]))]), (h = e[c]), { axIds: m, layoutOut: e, hasImage: g[c], }); function x(t, r) { for (i = 0; i < t.length; i++) for (s in (o = t[i])) e[a(s)][r] = o; } for (x(y, "_matchGroup"), i = 0; i < v.length; i++) for (s in (o = v[i])) if ((h = e[a(s)]).fixedrange) { for (var b in o) { var _ = a(b); !1 === (t[_] || {}).fixedrange && n.warn( "fixedrange was specified as false for axis " + _ + " but was overridden because another axis in its constraint group has fixedrange true", ), (e[_].fixedrange = !0); } break; } for (i = 0; i < v.length; ) { for (s in (o = v[i])) { (h = e[a(s)])._matchGroup && Object.keys(h._matchGroup).length === Object.keys(o).length && (v.splice(i, 1), i--); break; } i++; } x(v, "_constraintGroup"); var w = [ "constrain", "range", "autorange", "rangemode", "rangebreaks", "categoryorder", "categoryarray", ], T = !1, k = !1; function A() { (d = h[p]), "rangebreaks" === p && (k = h._hasDayOfWeekBreaks); } for (i = 0; i < y.length; i++) { o = y[i]; for (var M = 0; M < w.length; M++) { var S; for (s in ((p = w[M]), (d = null), o)) if (((u = t[(c = a(s))]), (h = e[c]), p in h)) { if (!h.matches && ((S = h), p in u)) { A(); break; } null === d && p in u && A(); } if ( ("range" === p && d && (T = !0), "autorange" === p && null === d && T && (d = !1), null === d && p in S && (d = S[p]), null !== d) ) for (s in o) ((h = e[a(s)])[p] = "range" === p ? d.slice() : d), "rangebreaks" === p && ((h._hasDayOfWeekBreaks = k), l(h, e)); } } }), (r.enforce = function (t) { var e, r, n, o, l, u, f, h, p = t._fullLayout, d = p._axisConstraintGroups || []; for (e = 0; e < d.length; e++) { n = g(d[e], p); var m = Object.keys(n), y = 1 / 0, x = 0, b = 1 / 0, _ = {}, w = {}, T = !1; for (r = 0; r < m.length; r++) (w[(o = m[r])] = l = p[a(o)]), l._inputDomain ? (l.domain = l._inputDomain.slice()) : (l._inputDomain = l.domain.slice()), l._inputRange || (l._inputRange = l.range.slice()), l.setScale(), (_[o] = u = Math.abs(l._m) / n[o]), (y = Math.min(y, u)), ("domain" !== l.constrain && l._constraintShrinkable) || (b = Math.min(b, u)), delete l._constraintShrinkable, (x = Math.max(x, u)), "domain" === l.constrain && (T = !0); if (!(y > c * x) || T) for (r = 0; r < m.length; r++) if ( ((u = _[(o = m[r])]), (f = (l = w[o]).constrain), u !== b || "domain" === f) ) if (((h = u / b), "range" === f)) s(l, h); else { var k = l._inputDomain, A = (l.domain[1] - l.domain[0]) / (k[1] - k[0]), M = (l.r2l(l.range[1]) - l.r2l(l.range[0])) / (l.r2l(l._inputRange[1]) - l.r2l(l._inputRange[0])); if ((h /= A) * M < 1) { (l.domain = l._input.domain = k.slice()), s(l, h); continue; } if ( (M < 1 && ((l.range = l._input.range = l._inputRange.slice()), (h *= M)), l.autorange) ) { var S = l.r2l(l.range[0]), E = l.r2l(l.range[1]), L = (S + E) / 2, C = L, P = L, I = Math.abs(E - L), O = L - I * h * 1.0001, z = L + I * h * 1.0001, D = i.makePadFn(p, l, 0), R = i.makePadFn(p, l, 1); v(l, h); var F, B, N = Math.abs(l._m), j = i.concatExtremes(t, l), U = j.min, V = j.max; for (B = 0; B < U.length; B++) (F = U[B].val - D(U[B]) / N) > O && F < C && (C = F); for (B = 0; B < V.length; B++) (F = V[B].val + R(V[B]) / N) < z && F > P && (P = F); (h /= (P - C) / (2 * I)), (C = l.l2r(C)), (P = l.l2r(P)), (l.range = l._input.range = S < E ? [C, P] : [P, C]); } v(l, h); } } }), (r.getAxisGroup = function (t, e) { for ( var r = t._axisMatchGroups, n = 0; n < r.length; n++ ) { if (r[n][e]) return "g" + n; } return e; }), (r.clean = function (t, e) { if (e._inputDomain) { for ( var r = !1, n = e._id, i = t._fullLayout._axisConstraintGroups, a = 0; a < i.length; a++ ) if (i[a][n]) { r = !0; break; } (r && "domain" === e.constrain) || ((e._input.domain = e.domain = e._inputDomain), delete e._inputDomain); } }); }, { "../../constants/alignment": 483, "../../constants/numerical": 491, "../../lib": 515, "./autorange": 565, "./axis_ids": 570, "./layout_attributes": 579, "./scale_zoom": 584, "./set_convert": 585, }, ], 575: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = i.numberFormat, o = t("tinycolor2"), s = t("has-passive-events"), l = t("../../registry"), c = i.strTranslate, u = t("../../lib/svg_text_utils"), f = t("../../components/color"), h = t("../../components/drawing"), p = t("../../components/fx"), d = t("./axes"), m = t("../../lib/setcursor"), g = t("../../components/dragelement"), v = t("../../components/dragelement/helpers"), y = v.selectingOrDrawing, x = v.freeMode, b = t("../../constants/alignment").FROM_TL, _ = t("../../lib/clear_gl_canvases"), w = t("../../plot_api/subroutines").redrawReglTraces, T = t("../plots"), k = t("./axis_ids").getFromId, A = t("../../components/selections").prepSelect, M = t("../../components/selections").clearOutline, S = t("../../components/selections").selectOnClick, E = t("./scale_zoom"), L = t("./constants"), C = L.MINDRAG, P = L.MINZOOM, I = !0; function O(t, e, r, n) { var a = i.ensureSingle(t.draglayer, e, r, function (e) { e.classed("drag", !0) .style({ fill: "transparent", "stroke-width": 0 }) .attr("data-subplot", t.id); }); return a.call(m, n), a.node(); } function z(t, e, r, i, a, o, s) { var l = O(t, "rect", e, r); return n.select(l).call(h.setRect, i, a, o, s), l; } function D(t, e) { for (var r = 0; r < t.length; r++) if (!t[r].fixedrange) return e; return ""; } function R(t, e, r, n, i) { for (var a = 0; a < t.length; a++) { var o = t[a]; if (!o.fixedrange) if (o.rangebreaks) { var s = "y" === o._id.charAt(0), l = s ? 1 - e : e, c = s ? 1 - r : r; (n[o._name + ".range[0]"] = o.l2r( o.p2l(l * o._length), )), (n[o._name + ".range[1]"] = o.l2r( o.p2l(c * o._length), )); } else { var u = o._rl[0], f = o._rl[1] - u; (n[o._name + ".range[0]"] = o.l2r(u + f * e)), (n[o._name + ".range[1]"] = o.l2r(u + f * r)); } } if (i && i.length) { var h = (e + (1 - r)) / 2; R(i, h, 1 - h, n, []); } } function F(t, e) { for (var r = 0; r < t.length; r++) { var n = t[r]; if (!n.fixedrange) if (n.rangebreaks) { var i = n._length, a = (n.p2l(0 + e) - n.p2l(0) + (n.p2l(i + e) - n.p2l(i))) / 2; n.range = [n.l2r(n._rl[0] - a), n.l2r(n._rl[1] - a)]; } else n.range = [ n.l2r(n._rl[0] - e / n._m), n.l2r(n._rl[1] - e / n._m), ]; } } function B(t) { return ( 1 - (t >= 0 ? Math.min(t, 0.9) : 1 / (1 / Math.max(t, -0.3) + 3.222)) ); } function N(t, e, r, n, i) { return t .append("path") .attr("class", "zoombox") .style({ fill: e > 0.2 ? "rgba(0,0,0,0)" : "rgba(255,255,255,0)", "stroke-width": 0, }) .attr("transform", c(r, n)) .attr("d", i + "Z"); } function j(t, e, r) { return t .append("path") .attr("class", "zoombox-corners") .style({ fill: f.background, stroke: f.defaultLine, "stroke-width": 1, opacity: 0, }) .attr("transform", c(e, r)) .attr("d", "M0,0Z"); } function U(t, e, r, n, i, a) { t.attr( "d", n + "M" + r.l + "," + r.t + "v" + r.h + "h" + r.w + "v-" + r.h + "h-" + r.w + "Z", ), V(t, e, i, a); } function V(t, e, r, n) { r || (t .transition() .style( "fill", n > 0.2 ? "rgba(0,0,0,0.4)" : "rgba(255,255,255,0.3)", ) .duration(200), e.transition().style("opacity", 1).duration(200)); } function H(t) { n.select(t) .selectAll( ".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners", ) .remove(); } function q(t) { I && t.data && t._context.showTips && (i.notifier( i._(t, "Double-click to zoom back out"), "long", ), (I = !1)); } function G(t) { var e = Math.floor(Math.min(t.b - t.t, t.r - t.l, P) / 2); return ( "M" + (t.l - 3.5) + "," + (t.t - 0.5 + e) + "h3v" + -e + "h" + e + "v-3h-" + (e + 3) + "ZM" + (t.r + 3.5) + "," + (t.t - 0.5 + e) + "h-3v" + -e + "h" + -e + "v-3h" + (e + 3) + "ZM" + (t.r + 3.5) + "," + (t.b + 0.5 - e) + "h-3v" + e + "h" + -e + "v3h" + (e + 3) + "ZM" + (t.l - 3.5) + "," + (t.b + 0.5 - e) + "h3v" + e + "h" + e + "v3h-" + (e + 3) + "Z" ); } function Y(t, e, r, n, a) { for ( var o, s, l, c, u = !1, f = {}, h = {}, p = (a || {}).xaHash, d = (a || {}).yaHash, m = 0; m < e.length; m++ ) { var g = e[m]; for (o in r) if (g[o]) { for (l in g) (a && (p[l] || d[l])) || ("x" === l.charAt(0) ? r : n)[l] || (f[l] = o); for (s in n) (a && (p[s] || d[s])) || !g[s] || (u = !0); } for (s in n) if (g[s]) for (c in g) (a && (p[c] || d[c])) || ("x" === c.charAt(0) ? r : n)[c] || (h[c] = s); } u && (i.extendFlat(f, h), (h = {})); var v = {}, y = []; for (l in f) { var x = k(t, l); y.push(x), (v[x._id] = x); } var b = {}, _ = []; for (c in h) { var w = k(t, c); _.push(w), (b[w._id] = w); } return { xaHash: v, yaHash: b, xaxes: y, yaxes: _, xLinks: f, yLinks: h, isSubplotConstrained: u, }; } function W(t, e) { if (s) { var r = void 0 !== t.onwheel ? "wheel" : "mousewheel"; t._onwheel && t.removeEventListener(r, t._onwheel), (t._onwheel = e), t.addEventListener(r, e, { passive: !1 }); } else void 0 !== t.onwheel ? (t.onwheel = e) : void 0 !== t.onmousewheel ? (t.onmousewheel = e) : t.isAddedWheelEvent || ((t.isAddedWheelEvent = !0), t.addEventListener("wheel", e, { passive: !1 })); } function Z(t) { var e = []; for (var r in t) e.push(t[r]); return e; } e.exports = { makeDragBox: function (t, e, r, s, c, f, m, v) { var I, O, V, X, J, K, Q, $, tt, et, rt, nt, it, at, ot, st, lt, ct, ut, ft, ht, pt, dt, mt = t._fullLayout._zoomlayer, gt = m + v === "nsew", vt = 1 === (m + v).length; function yt() { if ( ((I = e.xaxis), (O = e.yaxis), (tt = I._length), (et = O._length), (Q = I._offset), ($ = O._offset), ((V = {})[I._id] = I), ((X = {})[O._id] = O), m && v) ) for (var r = e.overlays, n = 0; n < r.length; n++) { var i = r[n].xaxis; V[i._id] = i; var a = r[n].yaxis; X[a._id] = a; } (J = Z(V)), (K = Z(X)), (it = D(J, v)), (at = D(K, m)), (ot = !at && !it), (nt = Y(t, t._fullLayout._axisMatchGroups, V, X)); var o = (rt = Y( t, t._fullLayout._axisConstraintGroups, V, X, nt, )).isSubplotConstrained || nt.isSubplotConstrained; (st = v || o), (lt = m || o); var s = t._fullLayout; (ct = s._has("scattergl")), (ut = s._has("splom")), (ft = s._has("svg")); } yt(); var xt = (function (t, e, r) { if (!t) return "pointer"; if ("nsew" === t) return r ? "" : "pan" === e ? "move" : "crosshair"; return t.toLowerCase() + "-resize"; })(at + it, t._fullLayout.dragmode, gt), bt = z(e, m + v + "drag", xt, r, s, c, f); if (ot && !gt) return ( (bt.onmousedown = null), (bt.style.pointerEvents = "none"), bt ); var _t, wt, Tt, kt, At, Mt, St, Et, Lt, Ct, Pt = { element: bt, gd: t, plotinfo: e }; function It() { (Pt.plotinfo.selection = !1), M(t); } function Ot(t, r) { var i = Pt.gd; if (i._fullLayout._activeShapeIndex >= 0) i._fullLayout._deactivateShape(i); else { var o = i._fullLayout.clickmode; if ((H(i), 2 !== t || vt || qt(), gt)) o.indexOf("select") > -1 && S(r, i, J, K, e.id, Pt), o.indexOf("event") > -1 && p.click(i, r, e.id); else if (1 === t && vt) { var s = m ? O : I, c = "s" === m || "w" === v ? 0 : 1, f = s._name + ".range[" + c + "]", h = (function (t, e) { var r, n = t.range[e], i = Math.abs(n - t.range[1 - e]); return "date" === t.type ? n : "log" === t.type ? ((r = Math.ceil( Math.max(0, -Math.log(i) / Math.LN10), ) + 3), a("." + r + "g")(Math.pow(10, n))) : ((r = Math.floor( Math.log(Math.abs(n)) / Math.LN10, ) - Math.floor(Math.log(i) / Math.LN10) + 4), a("." + String(r) + "g")(n)); })(s, c), d = "left", g = "middle"; if (s.fixedrange) return; m ? ((g = "n" === m ? "top" : "bottom"), "right" === s.side && (d = "right")) : "e" === v && (d = "right"), i._context.showAxisRangeEntryBoxes && n .select(bt) .call(u.makeEditable, { gd: i, immediate: !0, background: i._fullLayout.paper_bgcolor, text: String(h), fill: s.tickfont ? s.tickfont.color : "#444", horizontalAlign: d, verticalAlign: g, }) .on("edit", function (t) { var e = s.d2r(t); void 0 !== e && l.call("_guiRelayout", i, f, e); }); } } } function zt(e, r) { if (t._transitioningWithDuration) return !1; var n = Math.max(0, Math.min(tt, pt * e + _t)), i = Math.max(0, Math.min(et, dt * r + wt)), a = Math.abs(n - _t), o = Math.abs(i - wt); function s() { (St = ""), (Tt.r = Tt.l), (Tt.t = Tt.b), Lt.attr("d", "M0,0Z"); } if ( ((Tt.l = Math.min(_t, n)), (Tt.r = Math.max(_t, n)), (Tt.t = Math.min(wt, i)), (Tt.b = Math.max(wt, i)), rt.isSubplotConstrained) ) a > P || o > P ? ((St = "xy"), a / tt > o / et ? ((o = (a * et) / tt), wt > i ? (Tt.t = wt - o) : (Tt.b = wt + o)) : ((a = (o * tt) / et), _t > n ? (Tt.l = _t - a) : (Tt.r = _t + a)), Lt.attr("d", G(Tt))) : s(); else if (nt.isSubplotConstrained) if (a > P || o > P) { St = "xy"; var l = Math.min(Tt.l / tt, (et - Tt.b) / et), c = Math.max(Tt.r / tt, (et - Tt.t) / et); (Tt.l = l * tt), (Tt.r = c * tt), (Tt.b = (1 - l) * et), (Tt.t = (1 - c) * et), Lt.attr("d", G(Tt)); } else s(); else !at || o < Math.min(Math.max(0.6 * a, C), P) ? a < C || !it ? s() : ((Tt.t = 0), (Tt.b = et), (St = "x"), Lt.attr( "d", (function (t, e) { return ( "M" + (t.l - 0.5) + "," + (e - P - 0.5) + "h-3v" + (2 * P + 1) + "h3ZM" + (t.r + 0.5) + "," + (e - P - 0.5) + "h3v" + (2 * P + 1) + "h-3Z" ); })(Tt, wt), )) : !it || a < Math.min(0.6 * o, P) ? ((Tt.l = 0), (Tt.r = tt), (St = "y"), Lt.attr( "d", (function (t, e) { return ( "M" + (e - P - 0.5) + "," + (t.t - 0.5) + "v-3h" + (2 * P + 1) + "v3ZM" + (e - P - 0.5) + "," + (t.b + 0.5) + "v3h" + (2 * P + 1) + "v-3Z" ); })(Tt, _t), )) : ((St = "xy"), Lt.attr("d", G(Tt))); (Tt.w = Tt.r - Tt.l), (Tt.h = Tt.b - Tt.t), St && (Ct = !0), (t._dragged = Ct), U(Et, Lt, Tt, At, Mt, kt), Dt(), t.emit("plotly_relayouting", ht), (Mt = !0); } function Dt() { (ht = {}), ("xy" !== St && "x" !== St) || (R(J, Tt.l / tt, Tt.r / tt, ht, rt.xaxes), Vt("x", ht)), ("xy" !== St && "y" !== St) || (R( K, (et - Tt.b) / et, (et - Tt.t) / et, ht, rt.yaxes, ), Vt("y", ht)); } function Rt() { Dt(), H(t), Gt(), q(t); } (Pt.prepFn = function (e, r, n) { var a = Pt.dragmode, s = t._fullLayout.dragmode; s !== a && (Pt.dragmode = s), yt(), (pt = t._fullLayout._invScaleX), (dt = t._fullLayout._invScaleY), ot || (gt ? e.shiftKey ? "pan" === s ? (s = "zoom") : y(s) || (s = "pan") : e.ctrlKey && (s = "pan") : (s = "pan")), x(s) ? (Pt.minDrag = 1) : (Pt.minDrag = void 0), y(s) ? ((Pt.xaxes = J), (Pt.yaxes = K), A(e, r, n, Pt, s)) : ((Pt.clickFn = Ot), y(a) && It(), ot || ("zoom" === s ? ((Pt.moveFn = zt), (Pt.doneFn = Rt), (Pt.minDrag = 1), (function (e, r, n) { var a = bt.getBoundingClientRect(); (_t = r - a.left), (wt = n - a.top), t._fullLayout._calcInverseTransform(t); var s = i.apply3DTransform( t._fullLayout._invTransform, )(_t, wt); (_t = s[0]), (wt = s[1]), (Tt = { l: _t, r: _t, w: 0, t: wt, b: wt, h: 0, }), (kt = t._hmpixcount ? t._hmlumcount / t._hmpixcount : o( t._fullLayout.plot_bgcolor, ).getLuminance()), (Mt = !1), (St = "xy"), (Ct = !1), (Et = N( mt, kt, Q, $, (At = "M0,0H" + tt + "V" + et + "H0V0"), )), (Lt = j(mt, Q, $)); })(0, r, n)) : "pan" === s && ((Pt.moveFn = Ut), (Pt.doneFn = Gt)))), (t._fullLayout._redrag = function () { var e = t._dragdata; if (e && e.element === bt) { var r = t._fullLayout.dragmode; y(r) || (yt(), Yt([0, 0, tt, et]), Pt.moveFn(e.dx, e.dy)); } }); }), g.init(Pt); var Ft = [0, 0, tt, et], Bt = null, Nt = L.REDRAWDELAY, jt = e.mainplot ? t._fullLayout._plots[e.mainplot] : e; function Ut(e, r) { if ( ((e *= pt), (r *= dt), !t._transitioningWithDuration) ) { if ( ((t._fullLayout._replotting = !0), "ew" === it || "ns" === at) ) { var n = it ? -e : 0, i = at ? -r : 0; if (nt.isSubplotConstrained) { if (it && at) { var a = (e / tt - r / et) / 2; (n = -(e = a * tt)), (i = -(r = -a * et)); } at ? (n = (-i * tt) / et) : (i = (-n * et) / tt); } return ( it && (F(J, e), Vt("x")), at && (F(K, r), Vt("y")), Yt([n, i, tt, et]), Ht(), void t.emit("plotly_relayouting", ht) ); } var o, s, l = ("w" === it) == ("n" === at) ? 1 : -1; if ( it && at && (rt.isSubplotConstrained || nt.isSubplotConstrained) ) { var c = (e / tt + (l * r) / et) / 2; (e = c * tt), (r = l * c * et); } if ( ("w" === it ? (e = p(J, 0, e)) : "e" === it ? (e = p(J, 1, -e)) : it || (e = 0), "n" === at ? (r = p(K, 1, r)) : "s" === at ? (r = p(K, 0, -r)) : at || (r = 0), (o = "w" === it ? e : 0), (s = "n" === at ? r : 0), (rt.isSubplotConstrained && !nt.isSubplotConstrained) || (nt.isSubplotConstrained && it && at && l > 0)) ) { var u; if ( nt.isSubplotConstrained || (!it && 1 === at.length) ) { for (u = 0; u < J.length; u++) (J[u].range = J[u]._r.slice()), E(J[u], 1 - r / et); o = (e = (r * tt) / et) / 2; } if ( nt.isSubplotConstrained || (!at && 1 === it.length) ) { for (u = 0; u < K.length; u++) (K[u].range = K[u]._r.slice()), E(K[u], 1 - e / tt); s = (r = (e * et) / tt) / 2; } } (nt.isSubplotConstrained && at) || Vt("x"), (nt.isSubplotConstrained && it) || Vt("y"); var f = tt - e, h = et - r; !nt.isSubplotConstrained || (it && at) || (it ? ((s = o ? 0 : (e * et) / tt), (h = (f * et) / tt)) : ((o = s ? 0 : (r * tt) / et), (f = (h * tt) / et))), Yt([o, s, f, h]), Ht(), t.emit("plotly_relayouting", ht); } function p(t, e, r) { for (var n, i, a = 1 - e, o = 0; o < t.length; o++) { var s = t[o]; if (!s.fixedrange) { (n = s), (i = s._rl[a] + (s._rl[e] - s._rl[a]) / B(r / s._length)); var l = s.l2r(i); !1 !== l && void 0 !== l && (s.range[e] = l); } } return ( (n._length * (n._rl[e] - i)) / (n._rl[e] - n._rl[a]) ); } } function Vt(t, e) { for ( var r = nt.isSubplotConstrained ? { x: K, y: J }[t] : nt[t + "axes"], n = nt.isSubplotConstrained ? { x: J, y: K }[t] : [], i = 0; i < r.length; i++ ) { var a = r[i], o = a._id, s = nt.xLinks[o] || nt.yLinks[o], l = n[0] || V[s] || X[s]; l && (e ? ((e[a._name + ".range[0]"] = e[l._name + ".range[0]"]), (e[a._name + ".range[1]"] = e[l._name + ".range[1]"])) : (a.range = l.range.slice())); } } function Ht() { var e, r = []; function n(t) { for (e = 0; e < t.length; e++) t[e].fixedrange || r.push(t[e]._id); } for ( st && (n(J), n(rt.xaxes), n(nt.xaxes)), lt && (n(K), n(rt.yaxes), n(nt.yaxes)), ht = {}, e = 0; e < r.length; e++ ) { var i = r[e], a = k(t, i); d.drawOne(t, a, { skipTitle: !0 }), (ht[a._name + ".range[0]"] = a.range[0]), (ht[a._name + ".range[1]"] = a.range[1]); } d.redrawComponents(t, r); } function qt() { if (!t._transitioningWithDuration) { var e = t._context.doubleClick, r = []; it && (r = r.concat(J)), at && (r = r.concat(K)), nt.xaxes && (r = r.concat(nt.xaxes)), nt.yaxes && (r = r.concat(nt.yaxes)); var n, i, a, o = {}; if ("reset+autosize" === e) for (e = "autosize", i = 0; i < r.length; i++) if ( ((n = r[i])._rangeInitial && (n.range[0] !== n._rangeInitial[0] || n.range[1] !== n._rangeInitial[1])) || (!n._rangeInitial && !n.autorange) ) { e = "reset"; break; } if ("autosize" === e) for (i = 0; i < r.length; i++) (n = r[i]).fixedrange || (o[n._name + ".autorange"] = !0); else if ("reset" === e) for ( (it || rt.isSubplotConstrained) && (r = r.concat(rt.xaxes)), at && !rt.isSubplotConstrained && (r = r.concat(rt.yaxes)), rt.isSubplotConstrained && (it ? at || (r = r.concat(K)) : (r = r.concat(J))), i = 0; i < r.length; i++ ) (n = r[i]).fixedrange || (n._rangeInitial ? ((a = n._rangeInitial), (o[n._name + ".range[0]"] = a[0]), (o[n._name + ".range[1]"] = a[1])) : (o[n._name + ".autorange"] = !0)); t.emit("plotly_doubleclick", null), l.call("_guiRelayout", t, o); } } function Gt() { Yt([0, 0, tt, et]), i.syncOrAsync( [ T.previousPromises, function () { (t._fullLayout._replotting = !1), l.call("_guiRelayout", t, ht); }, ], t, ); } function Yt(e) { var r, n, a, o, s = t._fullLayout, c = s._plots, u = s._subplots.cartesian; if ((ut && l.subplotsRegistry.splom.drag(t), ct)) for (r = 0; r < u.length; r++) if ( ((a = (n = c[u[r]]).xaxis), (o = n.yaxis), n._scene) ) { var f = i.simpleMap(a.range, a.r2l), p = i.simpleMap(o.range, o.r2l); n._scene.update({ range: [f[0], p[0], f[1], p[1]], }); } if (((ut || ct) && (_(t), w(t)), ft)) { var d = e[2] / I._length, g = e[3] / O._length; for (r = 0; r < u.length; r++) { (a = (n = c[u[r]]).xaxis), (o = n.yaxis); var y, x, b, T, k = (st || nt.isSubplotConstrained) && !a.fixedrange && V[a._id], A = (lt || nt.isSubplotConstrained) && !o.fixedrange && X[o._id]; if ( (k ? ((y = d), (b = v || nt.isSubplotConstrained ? e[0] : Xt(a, y))) : nt.xaHash[a._id] ? ((y = d), (b = (e[0] * a._length) / I._length)) : nt.yaHash[a._id] ? ((y = g), (b = "ns" === at ? (-e[1] * a._length) / O._length : Xt( a, y, { n: "top", s: "bottom" }[at], ))) : (b = Zt(a, (y = Wt(a, d, g)))), A ? ((x = g), (T = m || nt.isSubplotConstrained ? e[1] : Xt(o, x))) : nt.yaHash[o._id] ? ((x = g), (T = (e[1] * o._length) / O._length)) : nt.xaHash[o._id] ? ((x = d), (T = "ew" === it ? (-e[0] * o._length) / I._length : Xt( o, x, { e: "right", w: "left" }[it], ))) : (T = Zt(o, (x = Wt(o, d, g)))), y || x) ) { y || (y = 1), x || (x = 1); var M = a._offset - b / y, S = o._offset - T / x; n.clipRect .call(h.setTranslate, b, T) .call(h.setScale, y, x), n.plot .call(h.setTranslate, M, S) .call(h.setScale, 1 / y, 1 / x), (y === n.xScaleFactor && x === n.yScaleFactor) || (h.setPointGroupScale(n.zoomScalePts, y, x), h.setTextPointsScale(n.zoomScaleTxt, y, x)), h.hideOutsideRangePoints( n.clipOnAxisFalseTraces, n, ), (n.xScaleFactor = y), (n.yScaleFactor = x); } } } } function Wt(t, e, r) { return t.fixedrange ? 0 : st && rt.xaHash[t._id] ? e : lt && (rt.isSubplotConstrained ? rt.xaHash : rt.yaHash)[t._id] ? r : 0; } function Zt(t, e) { return e ? ((t.range = t._r.slice()), E(t, e), Xt(t, e)) : 0; } function Xt(t, e, r) { return ( t._length * (1 - e) * b[r || t.constraintoward || "middle"] ); } return ( m.length * v.length != 1 && W(bt, function (e) { if ( t._context._scrollZoom.cartesian || t._fullLayout._enablescrollzoom ) { if ((It(), t._transitioningWithDuration)) return ( e.preventDefault(), void e.stopPropagation() ); yt(), clearTimeout(Bt); var r = -e.deltaY; if ( (isFinite(r) || (r = e.wheelDelta / 10), isFinite(r)) ) { var n, a = Math.exp( -Math.min(Math.max(r, -20), 20) / 200, ), o = jt.draglayer .select(".nsewdrag") .node() .getBoundingClientRect(), s = (e.clientX - o.left) / o.width, l = (o.bottom - e.clientY) / o.height; if (st) { for (v || (s = 0.5), n = 0; n < J.length; n++) c(J[n], s, a); Vt("x"), (Ft[2] *= a), (Ft[0] += Ft[2] * s * (1 / a - 1)); } if (lt) { for (m || (l = 0.5), n = 0; n < K.length; n++) c(K[n], l, a); Vt("y"), (Ft[3] *= a), (Ft[1] += Ft[3] * (1 - l) * (1 / a - 1)); } Yt(Ft), Ht(), t.emit("plotly_relayouting", ht), (Bt = setTimeout(function () { t._fullLayout && ((Ft = [0, 0, tt, et]), Gt()); }, Nt)), e.preventDefault(); } else i.log( "Did not find wheel motion attributes: ", e, ); } function c(t, e, r) { if (!t.fixedrange) { var n = i.simpleMap(t.range, t.r2l), a = n[0] + (n[1] - n[0]) * e; t.range = n.map(function (e) { return t.l2r(a + (e - a) * r); }); } } }), bt ); }, makeDragger: O, makeRectDragger: z, makeZoombox: N, makeCorners: j, updateZoombox: U, xyCorners: G, transitionZoombox: V, removeZoombox: H, showDoubleClickNotifier: q, attachWheelEventHandler: W, }; }, { "../../components/color": 367, "../../components/dragelement": 386, "../../components/dragelement/helpers": 385, "../../components/drawing": 389, "../../components/fx": 407, "../../components/selections": 455, "../../constants/alignment": 483, "../../lib": 515, "../../lib/clear_gl_canvases": 499, "../../lib/setcursor": 536, "../../lib/svg_text_utils": 541, "../../plot_api/subroutines": 556, "../../registry": 647, "../plots": 628, "./axes": 566, "./axis_ids": 570, "./constants": 573, "./scale_zoom": 584, "@plotly/d3": 58, "has-passive-events": 229, tinycolor2: 313, }, ], 576: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/fx"), a = t("../../components/dragelement"), o = t("../../lib/setcursor"), s = t("./dragbox").makeDragBox, l = t("./constants").DRAGGERSIZE; (r.initInteractions = function (t) { var e = t._fullLayout; if (t._context.staticPlot) n.select(t).selectAll(".drag").remove(); else if (e._has("cartesian") || e._has("splom")) { Object.keys(e._plots || {}) .sort(function (t, r) { if ( (e._plots[t].mainplot && !0) === (e._plots[r].mainplot && !0) ) { var n = t.split("y"), i = r.split("y"); return n[0] === i[0] ? Number(n[1] || 1) - Number(i[1] || 1) : Number(n[0] || 1) - Number(i[0] || 1); } return e._plots[t].mainplot ? 1 : -1; }) .forEach(function (r) { var n = e._plots[r], o = n.xaxis, c = n.yaxis; if (!n.mainplot) { var u = s( t, n, o._offset, c._offset, o._length, c._length, "ns", "ew", ); (u.onmousemove = function (e) { (t._fullLayout._rehover = function () { t._fullLayout._hoversubplot === r && t._fullLayout._plots[r] && i.hover(t, e, r); }), i.hover(t, e, r), (t._fullLayout._lasthover = u), (t._fullLayout._hoversubplot = r); }), (u.onmouseout = function (e) { t._dragging || ((t._fullLayout._hoversubplot = null), a.unhover(t, e)); }), t._context.showAxisDragHandles && (s( t, n, o._offset - l, c._offset - l, l, l, "n", "w", ), s( t, n, o._offset + o._length, c._offset - l, l, l, "n", "e", ), s( t, n, o._offset - l, c._offset + c._length, l, l, "s", "w", ), s( t, n, o._offset + o._length, c._offset + c._length, l, l, "s", "e", )); } if (t._context.showAxisDragHandles) { if (r === o._mainSubplot) { var f = o._mainLinePosition; "top" === o.side && (f -= l), s( t, n, o._offset + 0.1 * o._length, f, 0.8 * o._length, l, "", "ew", ), s( t, n, o._offset, f, 0.1 * o._length, l, "", "w", ), s( t, n, o._offset + 0.9 * o._length, f, 0.1 * o._length, l, "", "e", ); } if (r === c._mainSubplot) { var h = c._mainLinePosition; "right" !== c.side && (h -= l), s( t, n, h, c._offset + 0.1 * c._length, l, 0.8 * c._length, "ns", "", ), s( t, n, h, c._offset + 0.9 * c._length, l, 0.1 * c._length, "s", "", ), s( t, n, h, c._offset, l, 0.1 * c._length, "n", "", ); } } }); var o = e._hoverlayer.node(); (o.onmousemove = function (r) { (r.target = t._fullLayout._lasthover), i.hover(t, r, e._hoversubplot); }), (o.onclick = function (e) { (e.target = t._fullLayout._lasthover), i.click(t, e); }), (o.onmousedown = function (e) { t._fullLayout._lasthover.onmousedown(e); }), r.updateFx(t); } }), (r.updateFx = function (t) { var e = t._fullLayout, r = "pan" === e.dragmode ? "move" : "crosshair"; o(e._draggers, r); }); }, { "../../components/dragelement": 386, "../../components/fx": 407, "../../lib/setcursor": 536, "./constants": 573, "./dragbox": 575, "@plotly/d3": 58, }, ], 577: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"), a = t("./axis_ids"); e.exports = function (t) { return function (e, r) { var o = e[t]; if (Array.isArray(o)) for ( var s = n.subplotsRegistry.cartesian, l = s.idRegex, c = r._subplots, u = c.xaxis, f = c.yaxis, h = c.cartesian, p = r._has("cartesian") || r._has("gl2d"), d = 0; d < o.length; d++ ) { var m = o[d]; if (i.isPlainObject(m)) { var g = a.cleanId(m.xref, "x", !1), v = a.cleanId(m.yref, "y", !1), y = l.x.test(g), x = l.y.test(v); if (y || x) { p || i.pushUnique(r._basePlotModules, s); var b = !1; y && -1 === u.indexOf(g) && (u.push(g), (b = !0)), x && -1 === f.indexOf(v) && (f.push(v), (b = !0)), b && y && x && h.push(g + v); } } } }; }; }, { "../../lib": 515, "../../registry": 647, "./axis_ids": 570 }, ], 578: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../registry"), a = t("../../lib"), o = t("../plots"), s = t("../../components/drawing"), l = t("../get_data").getModuleCalcData, c = t("./axis_ids"), u = t("./constants"), f = t("../../constants/xmlns_namespaces"), h = a.ensureSingle; function p(t, e, r) { return a.ensureSingle(t, e, r, function (t) { t.datum(r); }); } function d(t, e, r, a, o) { for ( var c, f, h, p = u.traceLayerClasses, d = t._fullLayout, m = d._modules, g = [], v = [], y = 0; y < m.length; y++ ) { var x = (c = m[y]).name, b = i.modules[x].categories; if (b.svg) { var _ = c.layerName || x + "layer", w = c.plot; (h = (f = l(r, w))[0]), (r = f[1]), h.length && g.push({ i: p.indexOf(_), className: _, plotMethod: w, cdModule: h, }), b.zoomScale && v.push("." + _); } } g.sort(function (t, e) { return t.i - e.i; }); var T = e.plot.selectAll("g.mlayer").data(g, function (t) { return t.className; }); if ( (T.enter() .append("g") .attr("class", function (t) { return t.className; }) .classed("mlayer", !0) .classed("rangeplot", e.isRangePlot), T.exit().remove(), T.order(), T.each(function (r) { var i = n.select(this), l = r.className; r.plotMethod(t, e, r.cdModule, i, a, o), -1 === u.clipOnAxisFalseQuery.indexOf("." + l) && s.setClipUrl(i, e.layerClipId, t); }), d._has("scattergl") && ((c = i.getModule("scattergl")), (h = l(r, c)[0]), c.plot(t, e, h)), !t._context.staticPlot && (e._hasClipOnAxisFalse && (e.clipOnAxisFalseTraces = e.plot .selectAll(u.clipOnAxisFalseQuery.join(",")) .selectAll(".trace")), v.length)) ) { var k = e.plot.selectAll(v.join(",")).selectAll(".trace"); (e.zoomScalePts = k.selectAll("path.point")), (e.zoomScaleTxt = k.selectAll(".textpoint")); } } function m(t, e) { var r = e.plotgroup, n = e.id, i = u.layerValue2layerClass[e.xaxis.layer], a = u.layerValue2layerClass[e.yaxis.layer], o = t._fullLayout._hasOnlyLargeSploms; if (e.mainplot) { var s = e.mainplotinfo, l = s.plotgroup, f = n + "-x", d = n + "-y"; (e.minorGridlayer = s.minorGridlayer), (e.gridlayer = s.gridlayer), (e.zerolinelayer = s.zerolinelayer), h(s.overlinesBelow, "path", f), h(s.overlinesBelow, "path", d), h(s.overaxesBelow, "g", f), h(s.overaxesBelow, "g", d), (e.plot = h(s.overplot, "g", n)), h(s.overlinesAbove, "path", f), h(s.overlinesAbove, "path", d), h(s.overaxesAbove, "g", f), h(s.overaxesAbove, "g", d), (e.xlines = l .select(".overlines-" + i) .select("." + f)), (e.ylines = l .select(".overlines-" + a) .select("." + d)), (e.xaxislayer = l .select(".overaxes-" + i) .select("." + f)), (e.yaxislayer = l .select(".overaxes-" + a) .select("." + d)); } else if (o) (e.xlines = h(r, "path", "xlines-above")), (e.ylines = h(r, "path", "ylines-above")), (e.xaxislayer = h(r, "g", "xaxislayer-above")), (e.yaxislayer = h(r, "g", "yaxislayer-above")); else { var m = h(r, "g", "layer-subplot"); (e.shapelayer = h(m, "g", "shapelayer")), (e.imagelayer = h(m, "g", "imagelayer")), (e.minorGridlayer = h(r, "g", "minor-gridlayer")), (e.gridlayer = h(r, "g", "gridlayer")), (e.zerolinelayer = h(r, "g", "zerolinelayer")), h(r, "path", "xlines-below"), h(r, "path", "ylines-below"), (e.overlinesBelow = h(r, "g", "overlines-below")), h(r, "g", "xaxislayer-below"), h(r, "g", "yaxislayer-below"), (e.overaxesBelow = h(r, "g", "overaxes-below")), (e.plot = h(r, "g", "plot")), (e.overplot = h(r, "g", "overplot")), (e.xlines = h(r, "path", "xlines-above")), (e.ylines = h(r, "path", "ylines-above")), (e.overlinesAbove = h(r, "g", "overlines-above")), h(r, "g", "xaxislayer-above"), h(r, "g", "yaxislayer-above"), (e.overaxesAbove = h(r, "g", "overaxes-above")), (e.xlines = r.select(".xlines-" + i)), (e.ylines = r.select(".ylines-" + a)), (e.xaxislayer = r.select(".xaxislayer-" + i)), (e.yaxislayer = r.select(".yaxislayer-" + a)); } o || (p(e.minorGridlayer, "g", e.xaxis._id), p(e.minorGridlayer, "g", e.yaxis._id), e.minorGridlayer .selectAll("g") .map(function (t) { return t[0]; }) .sort(c.idSort), p(e.gridlayer, "g", e.xaxis._id), p(e.gridlayer, "g", e.yaxis._id), e.gridlayer .selectAll("g") .map(function (t) { return t[0]; }) .sort(c.idSort)), e.xlines.style("fill", "none").classed("crisp", !0), e.ylines.style("fill", "none").classed("crisp", !0); } function g(t, e) { if (t) { var r = {}; for (var i in (t.each(function (t) { var i = t[0]; n.select(this).remove(), v(i, e), (r[i] = !0); }), e._plots)) for ( var a = e._plots[i].overlays || [], o = 0; o < a.length; o++ ) { var s = a[o]; r[s.id] && s.plot.selectAll(".trace").remove(); } } } function v(t, e) { e._draggers.selectAll("g." + t).remove(), e._defs.select("#clip" + e._uid + t + "plot").remove(); } (r.name = "cartesian"), (r.attr = ["xaxis", "yaxis"]), (r.idRoot = ["x", "y"]), (r.idRegex = u.idRegex), (r.attrRegex = u.attrRegex), (r.attributes = t("./attributes")), (r.layoutAttributes = t("./layout_attributes")), (r.supplyLayoutDefaults = t("./layout_defaults")), (r.transitionAxes = t("./transition_axes")), (r.finalizeSubplots = function (t, e) { var r, n, i, o = e._subplots, s = o.xaxis, l = o.yaxis, f = o.cartesian, h = f.concat(o.gl2d || []), p = {}, d = {}; for (r = 0; r < h.length; r++) { var m = h[r].split("y"); (p[m[0]] = 1), (d["y" + m[1]] = 1); } for (r = 0; r < s.length; r++) p[(n = s[r])] || ((i = (t[c.id2name(n)] || {}).anchor), u.idRegex.y.test(i) || (i = "y"), f.push(n + i), h.push(n + i), d[i] || ((d[i] = 1), a.pushUnique(l, i))); for (r = 0; r < l.length; r++) d[(i = l[r])] || ((n = (t[c.id2name(i)] || {}).anchor), u.idRegex.x.test(n) || (n = "x"), f.push(n + i), h.push(n + i), p[n] || ((p[n] = 1), a.pushUnique(s, n))); if (!h.length) { for (var g in ((n = ""), (i = ""), t)) { if (u.attrRegex.test(g)) "x" === g.charAt(0) ? (!n || +g.substr(5) < +n.substr(5)) && (n = g) : (!i || +g.substr(5) < +i.substr(5)) && (i = g); } (n = n ? c.name2id(n) : "x"), (i = i ? c.name2id(i) : "y"), s.push(n), l.push(i), f.push(n + i); } }), (r.plot = function (t, e, r, n) { var i, a = t._fullLayout, o = a._subplots.cartesian, s = t.calcdata; if (!Array.isArray(e)) for (e = [], i = 0; i < s.length; i++) e.push(i); for (i = 0; i < o.length; i++) { for ( var l, c = o[i], u = a._plots[c], f = [], h = 0; h < s.length; h++ ) { var p = s[h], m = p[0].trace; m.xaxis + m.yaxis === c && ((-1 !== e.indexOf(m.index) || m.carpet) && (l && l[0].trace.xaxis + l[0].trace.yaxis === c && -1 !== ["tonextx", "tonexty", "tonext"].indexOf( m.fill, ) && -1 === f.indexOf(l) && f.push(l), f.push(p)), (l = p)); } d(t, u, f, r, n); } }), (r.clean = function (t, e, r, n) { var i, a, o, s = n._plots || {}, l = e._plots || {}, u = n._subplots || {}; if (n._hasOnlyLargeSploms && !e._hasOnlyLargeSploms) for (o in s) (i = s[o]).plotgroup && i.plotgroup.remove(); var f = n._has && n._has("gl"), h = e._has && e._has("gl"); if (f && !h) for (o in s) (i = s[o])._scene && i._scene.destroy(); if (u.xaxis && u.yaxis) { var p = c.listIds({ _fullLayout: n }); for (a = 0; a < p.length; a++) { var d = p[a]; e[c.id2name(d)] || n._infolayer .selectAll(".g-" + d + "title") .remove(); } } var m = n._has && n._has("cartesian"), y = e._has && e._has("cartesian"); if (m && !y) g(n._cartesianlayer.selectAll(".subplot"), n), n._defs.selectAll(".axesclip").remove(), delete n._axisConstraintGroups, delete n._axisMatchGroups; else if (u.cartesian) for (a = 0; a < u.cartesian.length; a++) { var x = u.cartesian[a]; if (!l[x]) { var b = "." + x + ",." + x + "-x,." + x + "-y"; n._cartesianlayer.selectAll(b).remove(), v(x, n); } } }), (r.drawFramework = function (t) { var e = t._fullLayout, r = (function (t) { var e, r, n, i, a, o, s = t._fullLayout, l = s._subplots.cartesian, c = l.length, u = [], f = []; for (e = 0; e < c; e++) { (n = l[e]), (i = s._plots[n]), (a = i.xaxis), (o = i.yaxis); var h = a._mainAxis, p = o._mainAxis, d = h._id + p._id, m = s._plots[d]; (i.overlays = []), d !== n && m ? ((i.mainplot = d), (i.mainplotinfo = m), f.push(n)) : ((i.mainplot = void 0), (i.mainplotinfo = void 0), u.push(n)); } for (e = 0; e < f.length; e++) (n = f[e]), (i = s._plots[n]).mainplotinfo.overlays.push(i); var g = u.concat(f), v = new Array(c); for (e = 0; e < c; e++) { (n = g[e]), (i = s._plots[n]), (a = i.xaxis), (o = i.yaxis); var y = [ n, a.layer, o.layer, a.overlaying || "", o.overlaying || "", ]; for (r = 0; r < i.overlays.length; r++) y.push(i.overlays[r].id); v[e] = y; } return v; })(t), i = e._cartesianlayer .selectAll(".subplot") .data(r, String); i .enter() .append("g") .attr("class", function (t) { return "subplot " + t[0]; }), i.order(), i.exit().call(g, e), i.each(function (r) { var i = r[0], a = e._plots[i]; (a.plotgroup = n.select(this)), m(t, a), (a.draglayer = h(e._draggers, "g", i)); }); }), (r.rangePlot = function (t, e, r) { m(t, e), d(t, e, r), o.style(t); }), (r.toSVG = function (t) { var e = t._fullLayout._glimages, r = n.select(t).selectAll(".svg-container"); r.filter(function (t, e) { return e === r.size() - 1; }) .selectAll(".gl-canvas-context, .gl-canvas-focus") .each(function () { var t = this.toDataURL("image/png"); e.append("svg:image").attr({ xmlns: f.svg, "xlink:href": t, preserveAspectRatio: "none", x: 0, y: 0, width: this.style.width, height: this.style.height, }); }); }), (r.updateFx = t("./graph_interact").updateFx); }, { "../../components/drawing": 389, "../../constants/xmlns_namespaces": 492, "../../lib": 515, "../../registry": 647, "../get_data": 602, "../plots": 628, "./attributes": 564, "./axis_ids": 570, "./constants": 573, "./graph_interact": 576, "./layout_attributes": 579, "./layout_defaults": 580, "./transition_axes": 590, "@plotly/d3": 58, }, ], 579: [ function (t, e, r) { "use strict"; var n = t("../font_attributes"), i = t("../../components/color/attributes"), a = t("../../components/drawing/attributes").dash, o = t("../../lib/extend").extendFlat, s = t("../../plot_api/plot_template").templatedArray, l = t( "../../plots/cartesian/axis_format_attributes", ).descriptionWithDates, c = t("../../constants/numerical").ONEDAY, u = t("./constants"), f = u.HOUR_PATTERN, h = u.WEEKDAY_PATTERN, p = { valType: "enumerated", values: ["auto", "linear", "array"], editType: "ticks", impliedEdits: { tick0: void 0, dtick: void 0 }, }; function d(t) { return { valType: "integer", min: 0, dflt: t ? 5 : 0, editType: "ticks", }; } var m = { valType: "any", editType: "ticks", impliedEdits: { tickmode: "linear" }, }, g = { valType: "any", editType: "ticks", impliedEdits: { tickmode: "linear" }, }, v = { valType: "data_array", editType: "ticks" }, y = { valType: "enumerated", values: ["outside", "inside", ""], editType: "ticks", }; function x(t) { var e = { valType: "number", min: 0, editType: "ticks" }; return t || (e.dflt = 5), e; } function b(t) { var e = { valType: "number", min: 0, editType: "ticks" }; return t || (e.dflt = 1), e; } var _ = { valType: "color", dflt: i.defaultLine, editType: "ticks", }, w = { valType: "color", dflt: i.lightLine, editType: "ticks", }; function T(t) { var e = { valType: "number", min: 0, editType: "ticks" }; return t || (e.dflt = 1), e; } var k = o({}, a, { editType: "ticks" }), A = { valType: "boolean", editType: "ticks" }; e.exports = { visible: { valType: "boolean", editType: "plot" }, color: { valType: "color", dflt: i.defaultLine, editType: "ticks", }, title: { text: { valType: "string", editType: "ticks" }, font: n({ editType: "ticks" }), standoff: { valType: "number", min: 0, editType: "ticks", }, editType: "ticks", }, type: { valType: "enumerated", values: [ "-", "linear", "log", "date", "category", "multicategory", ], dflt: "-", editType: "calc", _noTemplating: !0, }, autotypenumbers: { valType: "enumerated", values: ["convert types", "strict"], dflt: "convert types", editType: "calc", }, autorange: { valType: "enumerated", values: [!0, !1, "reversed"], dflt: !0, editType: "axrange", impliedEdits: { "range[0]": void 0, "range[1]": void 0 }, }, rangemode: { valType: "enumerated", values: ["normal", "tozero", "nonnegative"], dflt: "normal", editType: "plot", }, range: { valType: "info_array", items: [ { valType: "any", editType: "axrange", impliedEdits: { "^autorange": !1 }, anim: !0, }, { valType: "any", editType: "axrange", impliedEdits: { "^autorange": !1 }, anim: !0, }, ], editType: "axrange", impliedEdits: { autorange: !1 }, anim: !0, }, fixedrange: { valType: "boolean", dflt: !1, editType: "calc", }, scaleanchor: { valType: "enumerated", values: [u.idRegex.x.toString(), u.idRegex.y.toString()], editType: "plot", }, scaleratio: { valType: "number", min: 0, dflt: 1, editType: "plot", }, constrain: { valType: "enumerated", values: ["range", "domain"], editType: "plot", }, constraintoward: { valType: "enumerated", values: [ "left", "center", "right", "top", "middle", "bottom", ], editType: "plot", }, matches: { valType: "enumerated", values: [u.idRegex.x.toString(), u.idRegex.y.toString()], editType: "calc", }, rangebreaks: s("rangebreak", { enabled: { valType: "boolean", dflt: !0, editType: "calc", }, bounds: { valType: "info_array", items: [ { valType: "any", editType: "calc" }, { valType: "any", editType: "calc" }, ], editType: "calc", }, pattern: { valType: "enumerated", values: [h, f, ""], editType: "calc", }, values: { valType: "info_array", freeLength: !0, editType: "calc", items: { valType: "any", editType: "calc" }, }, dvalue: { valType: "number", editType: "calc", min: 0, dflt: c, }, editType: "calc", }), tickmode: p, nticks: d(), tick0: m, dtick: g, ticklabelstep: { valType: "integer", min: 1, dflt: 1, editType: "ticks", }, tickvals: v, ticktext: { valType: "data_array", editType: "ticks" }, ticks: y, tickson: { valType: "enumerated", values: ["labels", "boundaries"], dflt: "labels", editType: "ticks", }, ticklabelmode: { valType: "enumerated", values: ["instant", "period"], dflt: "instant", editType: "ticks", }, ticklabelposition: { valType: "enumerated", values: [ "outside", "inside", "outside top", "inside top", "outside left", "inside left", "outside right", "inside right", "outside bottom", "inside bottom", ], dflt: "outside", editType: "calc", }, ticklabeloverflow: { valType: "enumerated", values: ["allow", "hide past div", "hide past domain"], editType: "calc", }, mirror: { valType: "enumerated", values: [!0, "ticks", !1, "all", "allticks"], dflt: !1, editType: "ticks+layoutstyle", }, ticklen: x(), tickwidth: b(), tickcolor: _, showticklabels: { valType: "boolean", dflt: !0, editType: "ticks", }, automargin: { valType: "flaglist", flags: [ "height", "width", "left", "right", "top", "bottom", ], extras: [!0, !1], dflt: !1, editType: "ticks", }, showspikes: { valType: "boolean", dflt: !1, editType: "modebar", }, spikecolor: { valType: "color", dflt: null, editType: "none", }, spikethickness: { valType: "number", dflt: 3, editType: "none", }, spikedash: o({}, a, { dflt: "dash", editType: "none" }), spikemode: { valType: "flaglist", flags: ["toaxis", "across", "marker"], dflt: "toaxis", editType: "none", }, spikesnap: { valType: "enumerated", values: ["data", "cursor", "hovered data"], dflt: "hovered data", editType: "none", }, tickfont: n({ editType: "ticks" }), tickangle: { valType: "angle", dflt: "auto", editType: "ticks", }, tickprefix: { valType: "string", dflt: "", editType: "ticks", }, showtickprefix: { valType: "enumerated", values: ["all", "first", "last", "none"], dflt: "all", editType: "ticks", }, ticksuffix: { valType: "string", dflt: "", editType: "ticks", }, showticksuffix: { valType: "enumerated", values: ["all", "first", "last", "none"], dflt: "all", editType: "ticks", }, showexponent: { valType: "enumerated", values: ["all", "first", "last", "none"], dflt: "all", editType: "ticks", }, exponentformat: { valType: "enumerated", values: ["none", "e", "E", "power", "SI", "B"], dflt: "B", editType: "ticks", }, minexponent: { valType: "number", dflt: 3, min: 0, editType: "ticks", }, separatethousands: { valType: "boolean", dflt: !1, editType: "ticks", }, tickformat: { valType: "string", dflt: "", editType: "ticks", description: l("tick label"), }, tickformatstops: s("tickformatstop", { enabled: { valType: "boolean", dflt: !0, editType: "ticks", }, dtickrange: { valType: "info_array", items: [ { valType: "any", editType: "ticks" }, { valType: "any", editType: "ticks" }, ], editType: "ticks", }, value: { valType: "string", dflt: "", editType: "ticks" }, editType: "ticks", }), hoverformat: { valType: "string", dflt: "", editType: "none", description: l("hover text"), }, showline: { valType: "boolean", dflt: !1, editType: "ticks+layoutstyle", }, linecolor: { valType: "color", dflt: i.defaultLine, editType: "layoutstyle", }, linewidth: { valType: "number", min: 0, dflt: 1, editType: "ticks+layoutstyle", }, showgrid: A, gridcolor: w, gridwidth: T(), griddash: k, zeroline: { valType: "boolean", editType: "ticks" }, zerolinecolor: { valType: "color", dflt: i.defaultLine, editType: "ticks", }, zerolinewidth: { valType: "number", dflt: 1, editType: "ticks", }, showdividers: { valType: "boolean", dflt: !0, editType: "ticks", }, dividercolor: { valType: "color", dflt: i.defaultLine, editType: "ticks", }, dividerwidth: { valType: "number", dflt: 1, editType: "ticks", }, anchor: { valType: "enumerated", values: [ "free", u.idRegex.x.toString(), u.idRegex.y.toString(), ], editType: "plot", }, side: { valType: "enumerated", values: ["top", "bottom", "left", "right"], editType: "plot", }, overlaying: { valType: "enumerated", values: [ "free", u.idRegex.x.toString(), u.idRegex.y.toString(), ], editType: "plot", }, minor: { tickmode: p, nticks: d("minor"), tick0: m, dtick: g, tickvals: v, ticks: y, ticklen: x("minor"), tickwidth: b("minor"), tickcolor: _, gridcolor: w, gridwidth: T("minor"), griddash: k, showgrid: A, editType: "ticks", }, layer: { valType: "enumerated", values: ["above traces", "below traces"], dflt: "above traces", editType: "plot", }, domain: { valType: "info_array", items: [ { valType: "number", min: 0, max: 1, editType: "plot" }, { valType: "number", min: 0, max: 1, editType: "plot" }, ], dflt: [0, 1], editType: "plot", }, position: { valType: "number", min: 0, max: 1, dflt: 0, editType: "plot", }, categoryorder: { valType: "enumerated", values: [ "trace", "category ascending", "category descending", "array", "total ascending", "total descending", "min ascending", "min descending", "max ascending", "max descending", "sum ascending", "sum descending", "mean ascending", "mean descending", "median ascending", "median descending", ], dflt: "trace", editType: "calc", }, categoryarray: { valType: "data_array", editType: "calc" }, uirevision: { valType: "any", editType: "none" }, editType: "calc", _deprecated: { autotick: { valType: "boolean", editType: "ticks" }, title: { valType: "string", editType: "ticks" }, titlefont: n({ editType: "ticks" }), }, }; }, { "../../components/color/attributes": 366, "../../components/drawing/attributes": 388, "../../constants/numerical": 491, "../../lib/extend": 505, "../../plot_api/plot_template": 555, "../../plots/cartesian/axis_format_attributes": 569, "../font_attributes": 594, "./constants": 573, }, ], 580: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/color"), a = t("../../components/fx/helpers").isUnifiedHover, o = t("../../components/fx/hovermode_defaults"), s = t("../../plot_api/plot_template"), l = t("../layout_attributes"), c = t("./layout_attributes"), u = t("./type_defaults"), f = t("./axis_defaults"), h = t("./constraints"), p = t("./position_defaults"), d = t("./axis_ids"), m = d.id2name, g = d.name2id, v = t("./constants").AX_ID_PATTERN, y = t("../../registry"), x = y.traceIs, b = y.getComponentMethod; function _(t, e, r) { Array.isArray(t[e]) ? t[e].push(r) : (t[e] = [r]); } e.exports = function (t, e, r) { var y, w, T = e.autotypenumbers, k = {}, A = {}, M = {}, S = {}, E = {}, L = {}, C = {}, P = {}, I = {}, O = {}; for (y = 0; y < r.length; y++) { var z = r[y]; if (x(z, "cartesian") || x(z, "gl2d")) { var D, R; if (z.xaxis) (D = m(z.xaxis)), _(k, D, z); else if (z.xaxes) for (w = 0; w < z.xaxes.length; w++) _(k, m(z.xaxes[w]), z); if (z.yaxis) (R = m(z.yaxis)), _(k, R, z); else if (z.yaxes) for (w = 0; w < z.yaxes.length; w++) _(k, m(z.yaxes[w]), z); if ( ("funnel" === z.type ? "h" === z.orientation ? (D && (A[D] = !0), R && (C[R] = !0)) : R && (M[R] = !0) : "image" === z.type ? (R && (P[R] = !0), D && (P[D] = !0)) : (R && ((E[R] = !0), (L[R] = !0)), (x(z, "carpet") && ("carpet" !== z.type || z._cheater)) || (D && (S[D] = !0))), "carpet" === z.type && z._cheater && D && (A[D] = !0), x(z, "2dMap") && ((I[D] = !0), (I[R] = !0)), x(z, "oriented")) ) O["h" === z.orientation ? R : D] = !0; } } var F = e._subplots, B = F.xaxis, N = F.yaxis, j = n.simpleMap(B, m), U = n.simpleMap(N, m), V = j.concat(U), H = i.background; B.length && N.length && (H = n.coerce(t, e, l, "plot_bgcolor")); var q, G, Y, W, Z, X = i.combine(H, e.paper_bgcolor); function J() { var t = k[q] || []; (Z._traceIndices = t.map(function (t) { return t._expandedIndex; })), (Z._annIndices = []), (Z._shapeIndices = []), (Z._selectionIndices = []), (Z._imgIndices = []), (Z._subplotsWith = []), (Z._counterAxes = []), (Z._name = Z._attr = q), (Z._id = G); } function K(t, e) { return n.coerce(W, Z, c, t, e); } function Q(t, e) { return n.coerce2(W, Z, c, t, e); } function $(t) { return "x" === t ? N : B; } function tt(e, r) { for ( var n = "x" === e ? j : U, i = [], a = 0; a < n.length; a++ ) { var o = n[a]; o === r || (t[o] || {}).overlaying || i.push(g(o)); } return i; } var et = { x: $("x"), y: $("y") }, rt = et.x.concat(et.y), nt = {}, it = []; function at() { var t = W.matches; v.test(t) && -1 === rt.indexOf(t) && ((nt[t] = W.type), (it = Object.keys(nt))); } var ot = o(t, e), st = a(ot); for (y = 0; y < V.length; y++) { (q = V[y]), (G = g(q)), (Y = q.charAt(0)), n.isPlainObject(t[q]) || (t[q] = {}), (W = t[q]), (Z = s.newContainer(e, q, Y + "axis")), J(); var lt = ("x" === Y && !S[q] && A[q]) || ("y" === Y && !E[q] && M[q]), ct = "y" === Y && ((!L[q] && C[q]) || P[q]), ut = { hasMinor: !0, letter: Y, font: e.font, outerTicks: I[q], showGrid: !O[q], data: k[q] || [], bgColor: X, calendar: e.calendar, automargin: !0, visibleDflt: lt, reverseDflt: ct, autotypenumbersDflt: T, splomStash: ((e._splomAxes || {})[Y] || {})[G], }; K("uirevision", e.uirevision), u(W, Z, K, ut), f(W, Z, K, ut, e); var ft = st && Y === ot.charAt(0), ht = Q("spikecolor", st ? Z.color : void 0), pt = Q("spikethickness", st ? 1.5 : void 0), dt = Q("spikedash", st ? "dot" : void 0), mt = Q("spikemode", st ? "across" : void 0), gt = Q("spikesnap"); K("showspikes", !!(ft || ht || pt || dt || mt || gt)) || (delete Z.spikecolor, delete Z.spikethickness, delete Z.spikedash, delete Z.spikemode, delete Z.spikesnap), p(W, Z, K, { letter: Y, counterAxes: et[Y], overlayableAxes: tt(Y, q), grid: e.grid, }), K("title.standoff"), at(), (Z._input = W); } for (y = 0; y < it.length; ) { (G = it[y++]), (Y = (q = m(G)).charAt(0)), n.isPlainObject(t[q]) || (t[q] = {}), (W = t[q]), (Z = s.newContainer(e, q, Y + "axis")), J(); var vt = { letter: Y, font: e.font, outerTicks: I[q], showGrid: !O[q], data: [], bgColor: X, calendar: e.calendar, automargin: !0, visibleDflt: !1, reverseDflt: !1, autotypenumbersDflt: T, splomStash: ((e._splomAxes || {})[Y] || {})[G], }; K("uirevision", e.uirevision), (Z.type = nt[G] || "linear"), f(W, Z, K, vt, e), p(W, Z, K, { letter: Y, counterAxes: et[Y], overlayableAxes: tt(Y, q), grid: e.grid, }), K("fixedrange"), at(), (Z._input = W); } var yt = b("rangeslider", "handleDefaults"), xt = b("rangeselector", "handleDefaults"); for (y = 0; y < j.length; y++) (q = j[y]), (W = t[q]), (Z = e[q]), yt(t, e, q), "date" === Z.type && xt(W, Z, e, U, Z.calendar), K("fixedrange"); for (y = 0; y < U.length; y++) { (q = U[y]), (W = t[q]), (Z = e[q]); var bt = e[m(Z.anchor)]; K("fixedrange", b("rangeslider", "isVisible")(bt)); } h.handleDefaults(t, e, { axIds: rt.concat(it).sort(d.idSort), axHasImage: P, }); }; }, { "../../components/color": 367, "../../components/fx/helpers": 403, "../../components/fx/hovermode_defaults": 406, "../../lib": 515, "../../plot_api/plot_template": 555, "../../registry": 647, "../layout_attributes": 619, "./axis_defaults": 568, "./axis_ids": 570, "./constants": 573, "./constraints": 574, "./layout_attributes": 579, "./position_defaults": 582, "./type_defaults": 591, }, ], 581: [ function (t, e, r) { "use strict"; var n = t("tinycolor2").mix, i = t("../../components/color/attributes"), a = t("../../lib"); e.exports = function (t, e, r, o) { var s = (o = o || {}).dfltColor; function l(r, n) { return a.coerce2(t, e, o.attributes, r, n); } var c = l("linecolor", s), u = l("linewidth"); r("showline", o.showLine || !!c || !!u) || (delete e.linecolor, delete e.linewidth); var f = l( "gridcolor", n( s, o.bgColor, o.blend || i.lightFraction, ).toRgbString(), ), h = l("gridwidth"), p = l("griddash"); if ( (r("showgrid", o.showGrid || !!f || !!h || !!p) || (delete e.gridcolor, delete e.gridwidth, delete e.griddash), o.hasMinor) ) { var d = l( "minor.gridcolor", n(e.gridcolor, o.bgColor, 67).toRgbString(), ), m = l("minor.gridwidth", e.gridwidth || 1), g = l("minor.griddash", e.griddash || "solid"); r("minor.showgrid", !!d || !!m || !!g) || (delete e.minor.gridcolor, delete e.minor.gridwidth, delete e.minor.griddash); } if (!o.noZeroLine) { var v = l("zerolinecolor", s), y = l("zerolinewidth"); r("zeroline", o.showGrid || !!v || !!y) || (delete e.zerolinecolor, delete e.zerolinewidth); } }; }, { "../../components/color/attributes": 366, "../../lib": 515, tinycolor2: 313, }, ], 582: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"); e.exports = function (t, e, r, a) { var o, s, l, c, u = a.counterAxes || [], f = a.overlayableAxes || [], h = a.letter, p = a.grid; p && ((s = p._domains[h][p._axisMap[e._id]]), (o = p._anchors[e._id]), s && ((l = p[h + "side"].split(" ")[0]), (c = p.domain[h]["right" === l || "top" === l ? 1 : 0]))), (s = s || [0, 1]), (o = o || (n(t.position) ? "free" : u[0] || "free")), (l = l || ("x" === h ? "bottom" : "left")), (c = c || 0), "free" === i.coerce( t, e, { anchor: { valType: "enumerated", values: ["free"].concat(u), dflt: o, }, }, "anchor", ) && r("position", c), i.coerce( t, e, { side: { valType: "enumerated", values: "x" === h ? ["bottom", "top"] : ["left", "right"], dflt: l, }, }, "side", ); var d = !1; if ( (f.length && (d = i.coerce( t, e, { overlaying: { valType: "enumerated", values: [!1].concat(f), dflt: !1, }, }, "overlaying", )), !d) ) { var m = r("domain", s); m[0] > m[1] - 1 / 4096 && (e.domain = s), i.noneOrAll(t.domain, e.domain, s); } return r("layer"), e; }; }, { "../../lib": 515, "fast-isnumeric": 190 }, ], 583: [ function (t, e, r) { "use strict"; var n = t("./show_dflt"); e.exports = function (t, e, r, i, a) { a || (a = {}); var o = a.tickSuffixDflt, s = n(t); r("tickprefix") && r("showtickprefix", s), r("ticksuffix", o) && r("showticksuffix", s); }; }, { "./show_dflt": 586 }, ], 584: [ function (t, e, r) { "use strict"; var n = t("../../constants/alignment").FROM_BL; e.exports = function (t, e, r) { void 0 === r && (r = n[t.constraintoward || "center"]); var i = [t.r2l(t.range[0]), t.r2l(t.range[1])], a = i[0] + (i[1] - i[0]) * r; (t.range = t._input.range = [t.l2r(a + (i[0] - a) * e), t.l2r(a + (i[1] - a) * e)]), t.setScale(); }; }, { "../../constants/alignment": 483 }, ], 585: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("d3-time-format").utcFormat, a = t("../../lib"), o = a.numberFormat, s = t("fast-isnumeric"), l = a.cleanNumber, c = a.ms2DateTime, u = a.dateTime2ms, f = a.ensureNumber, h = a.isArrayOrTypedArray, p = t("../../constants/numerical"), d = p.FP_SAFE, m = p.BADNUM, g = p.LOG_CLIP, v = p.ONEWEEK, y = p.ONEDAY, x = p.ONEHOUR, b = p.ONEMIN, _ = p.ONESEC, w = t("./axis_ids"), T = t("./constants"), k = T.HOUR_PATTERN, A = T.WEEKDAY_PATTERN; function M(t) { return Math.pow(10, t); } function S(t) { return null != t; } e.exports = function (t, e) { e = e || {}; var r = t._id || "x", p = r.charAt(0); function E(e, r) { if (e > 0) return Math.log(e) / Math.LN10; if (e <= 0 && r && t.range && 2 === t.range.length) { var n = t.range[0], i = t.range[1]; return 0.5 * (n + i - 2 * g * Math.abs(n - i)); } return m; } function L(e, r, n, i) { if ((i || {}).msUTC && s(e)) return +e; var o = u(e, n || t.calendar); if (o === m) { if (!s(e)) return m; e = +e; var l = Math.floor(10 * a.mod(e + 0.05, 1)), c = Math.round(e - l / 10); o = u(new Date(c)) + l / 10; } return o; } function C(e, r, n) { return c(e, r, n || t.calendar); } function P(e) { return t._categories[Math.round(e)]; } function I(e) { if (S(e)) { if ( (void 0 === t._categoriesMap && (t._categoriesMap = {}), void 0 !== t._categoriesMap[e]) ) return t._categoriesMap[e]; t._categories.push( "number" == typeof e ? String(e) : e, ); var r = t._categories.length - 1; return (t._categoriesMap[e] = r), r; } return m; } function O(e) { if (t._categoriesMap) return t._categoriesMap[e]; } function z(t) { var e = O(t); return void 0 !== e ? e : s(t) ? +t : void 0; } function D(t) { return s(t) ? +t : O(t); } function R(t, e, r) { return n.round(r + e * t, 2); } function F(t, e, r) { return (t - r) / e; } var B = function (e) { return s(e) ? R(e, t._m, t._b) : m; }, N = function (e) { return F(e, t._m, t._b); }; if (t.rangebreaks) { var j = "y" === p; (B = function (e) { if (!s(e)) return m; var r = t._rangebreaks.length; if (!r) return R(e, t._m, t._b); var n = j; t.range[0] > t.range[1] && (n = !n); for ( var i = n ? -1 : 1, a = i * e, o = 0, l = 0; l < r; l++ ) { var c = i * t._rangebreaks[l].min, u = i * t._rangebreaks[l].max; if (a < c) break; if (!(a > u)) { o = a < (c + u) / 2 ? l : l + 1; break; } o = l + 1; } var f = t._B[o] || 0; return isFinite(f) ? R(e, t._m2, f) : 0; }), (N = function (e) { var r = t._rangebreaks.length; if (!r) return F(e, t._m, t._b); for ( var n = 0, i = 0; i < r && !(e < t._rangebreaks[i].pmin); i++ ) e > t._rangebreaks[i].pmax && (n = i + 1); return F(e, t._m2, t._B[n]); }); } (t.c2l = "log" === t.type ? E : f), (t.l2c = "log" === t.type ? M : f), (t.l2p = B), (t.p2l = N), (t.c2p = "log" === t.type ? function (t, e) { return B(E(t, e)); } : B), (t.p2c = "log" === t.type ? function (t) { return M(N(t)); } : N), -1 !== ["linear", "-"].indexOf(t.type) ? ((t.d2r = t.r2d = t.d2c = t.r2c = t.d2l = t.r2l = l), (t.c2d = t.c2r = t.l2d = t.l2r = f), (t.d2p = t.r2p = function (e) { return t.l2p(l(e)); }), (t.p2d = t.p2r = N), (t.cleanPos = f)) : "log" === t.type ? ((t.d2r = t.d2l = function (t, e) { return E(l(t), e); }), (t.r2d = t.r2c = function (t) { return M(l(t)); }), (t.d2c = t.r2l = l), (t.c2d = t.l2r = f), (t.c2r = E), (t.l2d = M), (t.d2p = function (e, r) { return t.l2p(t.d2r(e, r)); }), (t.p2d = function (t) { return M(N(t)); }), (t.r2p = function (e) { return t.l2p(l(e)); }), (t.p2r = N), (t.cleanPos = f)) : "date" === t.type ? ((t.d2r = t.r2d = a.identity), (t.d2c = t.r2c = t.d2l = t.r2l = L), (t.c2d = t.c2r = t.l2d = t.l2r = C), (t.d2p = t.r2p = function (e, r, n) { return t.l2p(L(e, 0, n)); }), (t.p2d = t.p2r = function (t, e, r) { return C(N(t), e, r); }), (t.cleanPos = function (e) { return a.cleanDate(e, m, t.calendar); })) : "category" === t.type ? ((t.d2c = t.d2l = I), (t.r2d = t.c2d = t.l2d = P), (t.d2r = t.d2l_noadd = z), (t.r2c = function (e) { var r = D(e); return void 0 !== r ? r : t.fraction2r(0.5); }), (t.l2r = t.c2r = f), (t.r2l = D), (t.d2p = function (e) { return t.l2p(t.r2c(e)); }), (t.p2d = function (t) { return P(N(t)); }), (t.r2p = t.d2p), (t.p2r = N), (t.cleanPos = function (t) { return "string" == typeof t && "" !== t ? t : f(t); })) : "multicategory" === t.type && ((t.r2d = t.c2d = t.l2d = P), (t.d2r = t.d2l_noadd = z), (t.r2c = function (e) { var r = z(e); return void 0 !== r ? r : t.fraction2r(0.5); }), (t.r2c_just_indices = O), (t.l2r = t.c2r = f), (t.r2l = z), (t.d2p = function (e) { return t.l2p(t.r2c(e)); }), (t.p2d = function (t) { return P(N(t)); }), (t.r2p = t.d2p), (t.p2r = N), (t.cleanPos = function (t) { return Array.isArray(t) || ("string" == typeof t && "" !== t) ? t : f(t); }), (t.setupMultiCategory = function (n) { var i, o, s = t._traceIndices, l = t._matchGroup; if (l && 0 === t._categories.length) for (var c in l) if (c !== r) { var u = e[w.id2name(c)]; s = s.concat(u._traceIndices); } var f = [ [0, {}], [0, {}], ], d = []; for (i = 0; i < s.length; i++) { var m = n[s[i]]; if (p in m) { var g = m[p], v = m._length || a.minRowLength(g); if (h(g[0]) && h(g[1])) for (o = 0; o < v; o++) { var y = g[0][o], x = g[1][o]; S(y) && S(x) && (d.push([y, x]), y in f[0][1] || (f[0][1][y] = f[0][0]++), x in f[1][1] || (f[1][1][x] = f[1][0]++)); } } } for ( d.sort(function (t, e) { var r = f[0][1], n = r[t[0]] - r[e[0]]; if (n) return n; var i = f[1][1]; return i[t[1]] - i[e[1]]; }), i = 0; i < d.length; i++ ) I(d[i]); })), (t.fraction2r = function (e) { var r = t.r2l(t.range[0]), n = t.r2l(t.range[1]); return t.l2r(r + e * (n - r)); }), (t.r2fraction = function (e) { var r = t.r2l(t.range[0]), n = t.r2l(t.range[1]); return (t.r2l(e) - r) / (n - r); }), (t.cleanRange = function (e, r) { r || (r = {}), e || (e = "range"); var n, i, o = a.nestedProperty(t, e).get(); if ( ((i = (i = "date" === t.type ? a.dfltRange(t.calendar) : "y" === p ? T.DFLTRANGEY : "realaxis" === t._name ? [0, 1] : r.dfltRange || T.DFLTRANGEX).slice()), ("tozero" !== t.rangemode && "nonnegative" !== t.rangemode) || (i[0] = 0), o && 2 === o.length) ) for ( "date" !== t.type || t.autorange || ((o[0] = a.cleanDate(o[0], m, t.calendar)), (o[1] = a.cleanDate(o[1], m, t.calendar))), n = 0; n < 2; n++ ) if ("date" === t.type) { if (!a.isDateTime(o[n], t.calendar)) { t[e] = i; break; } if (t.r2l(o[0]) === t.r2l(o[1])) { var l = a.constrain( t.r2l(o[0]), a.MIN_MS + 1e3, a.MAX_MS - 1e3, ); (o[0] = t.l2r(l - 1e3)), (o[1] = t.l2r(l + 1e3)); break; } } else { if (!s(o[n])) { if (!s(o[1 - n])) { t[e] = i; break; } o[n] = o[1 - n] * (n ? 10 : 0.1); } if ( (o[n] < -d ? (o[n] = -d) : o[n] > d && (o[n] = d), o[0] === o[1]) ) { var c = Math.max(1, Math.abs(1e-6 * o[0])); (o[0] -= c), (o[1] += c); } } else a.nestedProperty(t, e).set(i); }), (t.setScale = function (r) { var n = e._size; if (t.overlaying) { var i = w.getFromId({ _fullLayout: e }, t.overlaying); t.domain = i.domain; } var a = r && t._r ? "_r" : "range", o = t.calendar; t.cleanRange(a); var s, l, c = t.r2l(t[a][0], o), u = t.r2l(t[a][1], o), f = "y" === p; if ( (f ? ((t._offset = n.t + (1 - t.domain[1]) * n.h), (t._length = n.h * (t.domain[1] - t.domain[0])), (t._m = t._length / (c - u)), (t._b = -t._m * u)) : ((t._offset = n.l + t.domain[0] * n.w), (t._length = n.w * (t.domain[1] - t.domain[0])), (t._m = t._length / (u - c)), (t._b = -t._m * c)), (t._rangebreaks = []), (t._lBreaks = 0), (t._m2 = 0), (t._B = []), t.rangebreaks) && ((t._rangebreaks = t.locateBreaks( Math.min(c, u), Math.max(c, u), )), t._rangebreaks.length) ) { for (s = 0; s < t._rangebreaks.length; s++) (l = t._rangebreaks[s]), (t._lBreaks += Math.abs(l.max - l.min)); var h = f; c > u && (h = !h), h && t._rangebreaks.reverse(); var d = h ? -1 : 1; for ( t._m2 = (d * t._length) / (Math.abs(u - c) - t._lBreaks), t._B.push(-t._m2 * (f ? u : c)), s = 0; s < t._rangebreaks.length; s++ ) (l = t._rangebreaks[s]), t._B.push( t._B[t._B.length - 1] - d * t._m2 * (l.max - l.min), ); for (s = 0; s < t._rangebreaks.length; s++) ((l = t._rangebreaks[s]).pmin = B(l.min)), (l.pmax = B(l.max)); } if (!isFinite(t._m) || !isFinite(t._b) || t._length < 0) throw ( ((e._replotting = !1), new Error("Something went wrong with axis scaling")) ); }), (t.maskBreaks = function (e) { var r, n, i, o, s, c = t.rangebreaks || []; c._cachedPatterns || (c._cachedPatterns = c.map(function (e) { return e.enabled && e.bounds ? a.simpleMap(e.bounds, e.pattern ? l : t.d2c) : null; })), c._cachedValues || (c._cachedValues = c.map(function (e) { return e.enabled && e.values ? a.simpleMap(e.values, t.d2c).sort(a.sorterAsc) : null; })); for (var u = 0; u < c.length; u++) { var f = c[u]; if (f.enabled) if (f.bounds) { var h = f.pattern; switch ( ((n = (r = c._cachedPatterns[u])[0]), (i = r[1]), h) ) { case A: (o = (s = new Date(e)).getUTCDay()), n > i && ((i += 7), o < n && (o += 7)); break; case k: (o = (s = new Date(e)).getUTCHours() + (s.getUTCMinutes() / 60 + s.getUTCSeconds() / 3600 + s.getUTCMilliseconds() / 36e5)), n > i && ((i += 24), o < n && (o += 24)); break; case "": o = e; } if (o >= n && o < i) return m; } else for ( var p = c._cachedValues[u], d = 0; d < p.length; d++ ) if ( ((i = (n = p[d]) + f.dvalue), e >= n && e < i) ) return m; } return e; }), (t.locateBreaks = function (e, r) { var n, i, o, s, c = []; if (!t.rangebreaks) return c; var u = t.rangebreaks.slice().sort(function (t, e) { return t.pattern === A && e.pattern === k ? -1 : e.pattern === A && t.pattern === k ? 1 : 0; }), f = function (t, n) { if ( (t = a.constrain(t, e, r)) !== (n = a.constrain(n, e, r)) ) { for (var i = !0, o = 0; o < c.length; o++) { var s = c[o]; t < s.max && n >= s.min && (t < s.min && (s.min = t), n > s.max && (s.max = n), (i = !1)); } i && c.push({ min: t, max: n }); } }; for (n = 0; n < u.length; n++) { var h = u[n]; if (h.enabled) if (h.bounds) { var p = e, d = r; h.pattern && (p = Math.floor(p)), (o = (i = a.simpleMap( h.bounds, h.pattern ? l : t.r2l, ))[0]), (s = i[1]); var m, g, w = new Date(p); switch (h.pattern) { case A: (g = v), (m = (s - o + (s < o ? 7 : 0)) * y), (p += o * y - (w.getUTCDay() * y + w.getUTCHours() * x + w.getUTCMinutes() * b + w.getUTCSeconds() * _ + w.getUTCMilliseconds())); break; case k: (g = y), (m = (s - o + (s < o ? 24 : 0)) * x), (p += o * x - (w.getUTCHours() * x + w.getUTCMinutes() * b + w.getUTCSeconds() * _ + w.getUTCMilliseconds())); break; default: (p = Math.min(i[0], i[1])), (m = g = (d = Math.max(i[0], i[1])) - p); } for (var T = p; T < d; T += g) f(T, T + m); } else for ( var M = a.simpleMap(h.values, t.d2c), S = 0; S < M.length; S++ ) f((o = M[S]), (s = o + h.dvalue)); } return ( c.sort(function (t, e) { return t.min - e.min; }), c ); }), (t.makeCalcdata = function (e, r, n) { var i, o, s, l, c = t.type, u = "date" === c && e[r + "calendar"]; if (r in e) { if ( ((i = e[r]), (l = e._length || a.minRowLength(i)), a.isTypedArray(i) && ("linear" === c || "log" === c)) ) { if (l === i.length) return i; if (i.subarray) return i.subarray(0, l); } if ("multicategory" === c) return (function (t, e) { for (var r = new Array(e), n = 0; n < e; n++) { var i = (t[0] || [])[n], a = (t[1] || [])[n]; r[n] = O([i, a]); } return r; })(i, l); for (o = new Array(l), s = 0; s < l; s++) o[s] = t.d2c(i[s], 0, u, n); } else { var f = r + "0" in e ? t.d2c(e[r + "0"], 0, u) : 0, h = e["d" + r] ? Number(e["d" + r]) : 1; for ( i = e[{ x: "y", y: "x" }[r]], l = e._length || i.length, o = new Array(l), s = 0; s < l; s++ ) o[s] = f + s * h; } if (t.rangebreaks) for (s = 0; s < l; s++) o[s] = t.maskBreaks(o[s]); return o; }), (t.isValidRange = function (e) { return ( Array.isArray(e) && 2 === e.length && s(t.r2l(e[0])) && s(t.r2l(e[1])) ); }), (t.isPtWithinRange = function (e, r) { var n = t.c2l(e[p], null, r), i = t.r2l(t.range[0]), a = t.r2l(t.range[1]); return i < a ? i <= n && n <= a : a <= n && n <= i; }), (t._emptyCategories = function () { (t._categories = []), (t._categoriesMap = {}); }), (t.clearCalc = function () { var r = t._matchGroup; if (r) { var n = null, i = null; for (var a in r) { var o = e[w.id2name(a)]; if (o._categories) { (n = o._categories), (i = o._categoriesMap); break; } } n && i ? ((t._categories = n), (t._categoriesMap = i)) : t._emptyCategories(); } else t._emptyCategories(); if (t._initialCategories) for (var s = 0; s < t._initialCategories.length; s++) I(t._initialCategories[s]); }), (t.sortByInitialCategories = function () { var n = []; if ((t._emptyCategories(), t._initialCategories)) for (var i = 0; i < t._initialCategories.length; i++) I(t._initialCategories[i]); n = n.concat(t._traceIndices); var a = t._matchGroup; for (var o in a) if (r !== o) { var s = e[w.id2name(o)]; (s._categories = t._categories), (s._categoriesMap = t._categoriesMap), (n = n.concat(s._traceIndices)); } return n; }); var U = e._d3locale; "date" === t.type && ((t._dateFormat = U ? U.timeFormat : i), (t._extraFormat = e._extraFormat)), (t._separators = e.separators), (t._numFormat = U ? U.numberFormat : o), delete t._minDtick, delete t._forceTick0; }; }, { "../../constants/numerical": 491, "../../lib": 515, "./axis_ids": 570, "./constants": 573, "@plotly/d3": 58, "d3-time-format": 120, "fast-isnumeric": 190, }, ], 586: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = [ "showexponent", "showtickprefix", "showticksuffix", ].filter(function (e) { return void 0 !== t[e]; }); if ( e.every(function (r) { return t[r] === t[e[0]]; }) || 1 === e.length ) return t[e[0]]; }; }, {}, ], 587: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/color").contrast, a = t("./layout_attributes"), o = t("./show_dflt"), s = t("../array_container_defaults"); function l(t, e) { function r(r, i) { return n.coerce(t, e, a.tickformatstops, r, i); } r("enabled") && (r("dtickrange"), r("value")); } e.exports = function (t, e, r, c, u) { u || (u = {}); var f = o(t); if (r("showticklabels")) { var h = u.font || {}, p = e.color, d = -1 !== (e.ticklabelposition || "").indexOf("inside") ? i(u.bgColor) : p && p !== a.color.dflt ? p : h.color; if ( (n.coerceFont(r, "tickfont", { family: h.family, size: h.size, color: d, }), u.noTicklabelstep || "multicategory" === c || "log" === c || r("ticklabelstep"), u.noAng || r("tickangle"), "category" !== c) ) { var m = r("tickformat"); s(t, e, { name: "tickformatstops", inclusionAttr: "enabled", handleItemDefaults: l, }), e.tickformatstops.length || delete e.tickformatstops, u.noExp || m || "date" === c || (r("showexponent", f), r("exponentformat"), r("minexponent"), r("separatethousands")); } } }; }, { "../../components/color": 367, "../../lib": 515, "../array_container_defaults": 561, "./layout_attributes": 579, "./show_dflt": 586, }, ], 588: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"); e.exports = function (t, e, r, a) { var o = a.isMinor, s = o ? t.minor || {} : t, l = o ? e.minor : e, c = o ? i.minor : i, u = o ? "minor." : "", f = n.coerce2( s, l, c, "ticklen", o ? 0.6 * (e.ticklen || 5) : void 0, ), h = n.coerce2( s, l, c, "tickwidth", o ? e.tickwidth || 1 : void 0, ), p = n.coerce2( s, l, c, "tickcolor", (o ? e.tickcolor : void 0) || l.color, ); r( u + "ticks", (!o && a.outerTicks) || f || h || p ? "outside" : "", ) || (delete l.ticklen, delete l.tickwidth, delete l.tickcolor); }; }, { "../../lib": 515, "./layout_attributes": 579 }, ], 589: [ function (t, e, r) { "use strict"; var n = t("./clean_ticks"), i = t("../../lib").isArrayOrTypedArray; e.exports = function (t, e, r, a, o) { o || (o = {}); var s = o.isMinor, l = s ? t.minor || {} : t, c = s ? e.minor : e, u = s ? "minor." : ""; function f(t) { var e = l[t]; return void 0 !== e ? e : (c._template || {})[t]; } var h = f("tick0"), p = f("dtick"), d = f("tickvals"), m = r( u + "tickmode", i(d) ? "array" : p ? "linear" : "auto", ); if ("auto" === m) r(u + "nticks"); else if ("linear" === m) { var g = (c.dtick = n.dtick(p, a)); c.tick0 = n.tick0(h, a, e.calendar, g); } else if ("multicategory" !== a) { void 0 === r(u + "tickvals") ? (c.tickmode = "auto") : s || r("ticktext"); } }; }, { "../../lib": 515, "./clean_ticks": 572 }, ], 590: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../registry"), a = t("../../lib"), o = t("../../components/drawing"), s = t("./axes"); e.exports = function (t, e, r, l) { var c = t._fullLayout; if (0 !== e.length) { var u, f, h, p; l && (u = l()); var d = n.ease(r.easing); return ( t._transitionData._interruptCallbacks.push(function () { return ( window.cancelAnimationFrame(p), (p = null), (function () { for (var r = {}, n = 0; n < e.length; n++) { var a = e[n], o = a.plotinfo.xaxis, s = a.plotinfo.yaxis; a.xr0 && (r[o._name + ".range"] = a.xr0.slice()), a.yr0 && (r[s._name + ".range"] = a.yr0.slice()); } return i.call("relayout", t, r).then(function () { for (var t = 0; t < e.length; t++) m(e[t].plotinfo); }); })() ); }), (f = Date.now()), (p = window.requestAnimationFrame(function n() { h = Date.now(); for ( var a = Math.min(1, (h - f) / r.duration), o = d(a), s = 0; s < e.length; s++ ) g(e[s], o); h - f > r.duration ? (!(function () { for (var r = {}, n = 0; n < e.length; n++) { var a = e[n], o = a.plotinfo.xaxis, s = a.plotinfo.yaxis; a.xr1 && (r[o._name + ".range"] = a.xr1.slice()), a.yr1 && (r[s._name + ".range"] = a.yr1.slice()); } u && u(), i.call("relayout", t, r).then(function () { for (var t = 0; t < e.length; t++) m(e[t].plotinfo); }); })(), (p = window.cancelAnimationFrame(n))) : (p = window.requestAnimationFrame(n)); })), Promise.resolve() ); } function m(t) { var e = t.xaxis, r = t.yaxis; c._defs .select("#" + t.clipId + "> rect") .call(o.setTranslate, 0, 0) .call(o.setScale, 1, 1), t.plot .call(o.setTranslate, e._offset, r._offset) .call(o.setScale, 1, 1); var n = t.plot.selectAll(".scatterlayer .trace"); n.selectAll(".point").call(o.setPointGroupScale, 1, 1), n .selectAll(".textpoint") .call(o.setTextPointsScale, 1, 1), n.call(o.hideOutsideRangePoints, t); } function g(e, r) { var n = e.plotinfo, i = n.xaxis, l = n.yaxis, c = i._length, u = l._length, f = !!e.xr1, h = !!e.yr1, p = []; if (f) { var d = a.simpleMap(e.xr0, i.r2l), m = a.simpleMap(e.xr1, i.r2l), g = d[1] - d[0], v = m[1] - m[0]; (p[0] = ((d[0] * (1 - r) + r * m[0] - d[0]) / (d[1] - d[0])) * c), (p[2] = c * (1 - r + (r * v) / g)), (i.range[0] = i.l2r(d[0] * (1 - r) + r * m[0])), (i.range[1] = i.l2r(d[1] * (1 - r) + r * m[1])); } else (p[0] = 0), (p[2] = c); if (h) { var y = a.simpleMap(e.yr0, l.r2l), x = a.simpleMap(e.yr1, l.r2l), b = y[1] - y[0], _ = x[1] - x[0]; (p[1] = ((y[1] * (1 - r) + r * x[1] - y[1]) / (y[0] - y[1])) * u), (p[3] = u * (1 - r + (r * _) / b)), (l.range[0] = i.l2r(y[0] * (1 - r) + r * x[0])), (l.range[1] = l.l2r(y[1] * (1 - r) + r * x[1])); } else (p[1] = 0), (p[3] = u); s.drawOne(t, i, { skipTitle: !0 }), s.drawOne(t, l, { skipTitle: !0 }), s.redrawComponents(t, [i._id, l._id]); var w = f ? c / p[2] : 1, T = h ? u / p[3] : 1, k = f ? p[0] : 0, A = h ? p[1] : 0, M = f ? (p[0] / p[2]) * c : 0, S = h ? (p[1] / p[3]) * u : 0, E = i._offset - M, L = l._offset - S; n.clipRect .call(o.setTranslate, k, A) .call(o.setScale, 1 / w, 1 / T), n.plot .call(o.setTranslate, E, L) .call(o.setScale, w, T), o.setPointGroupScale(n.zoomScalePts, 1 / w, 1 / T), o.setTextPointsScale(n.zoomScaleTxt, 1 / w, 1 / T); } s.redrawComponents(t); }; }, { "../../components/drawing": 389, "../../lib": 515, "../../registry": 647, "./axes": 566, "@plotly/d3": 58, }, ], 591: [ function (t, e, r) { "use strict"; var n = t("../../registry").traceIs, i = t("./axis_autotype"); function a(t) { return { v: "x", h: "y" }[t.orientation || "v"]; } function o(t, e) { var r = a(t), i = n(t, "box-violin"), o = n(t._fullInput || {}, "candlestick"); return ( i && !o && e === r && void 0 === t[r] && void 0 === t[r + "0"] ); } e.exports = function (t, e, r, s) { r("autotypenumbers", s.autotypenumbersDflt), "-" === r("type", (s.splomStash || {}).type) && (!(function (t, e) { if ("-" !== t.type) return; var r, s = t._id, l = s.charAt(0); -1 !== s.indexOf("scene") && (s = l); var c = (function (t, e, r) { for (var n = 0; n < t.length; n++) { var i = t[n]; if ( "splom" === i.type && i._length > 0 && (i["_" + r + "axes"] || {})[e] ) return i; if ((i[r + "axis"] || r) === e) { if (o(i, r)) return i; if ((i[r] || []).length || i[r + "0"]) return i; } } })(e, s, l); if (!c) return; if ( "histogram" === c.type && l === { v: "y", h: "x" }[c.orientation || "v"] ) return void (t.type = "linear"); var u = l + "calendar", f = c[u], h = { noMultiCategory: !n(c, "cartesian") || n(c, "noMultiCategory"), }; "box" === c.type && c._hasPreCompStats && l === { h: "x", v: "y" }[c.orientation || "v"] && (h.noMultiCategory = !0); if ( ((h.autotypenumbers = t.autotypenumbers), o(c, l)) ) { var p = a(c), d = []; for (r = 0; r < e.length; r++) { var m = e[r]; n(m, "box-violin") && (m[l + "axis"] || l) === s && (void 0 !== m[p] ? d.push(m[p][0]) : void 0 !== m.name ? d.push(m.name) : d.push("text"), m[u] !== f && (f = void 0)); } t.type = i(d, f, h); } else if ("splom" === c.type) { var g = c.dimensions[c._axesDim[s]]; g.visible && (t.type = i(g.values, f, h)); } else t.type = i(c[l] || [c[l + "0"]], f, h); })(e, s.data), "-" === e.type ? (e.type = "linear") : (t.type = e.type)); }; }, { "../../registry": 647, "./axis_autotype": 567 }, ], 592: [ function (t, e, r) { "use strict"; var n = t("../registry"), i = t("../lib"); function a(t, e, r) { var n, a, o, s = !1; if ("data" === e.type) n = t._fullData[null !== e.traces ? e.traces[0] : 0]; else { if ("layout" !== e.type) return !1; n = t._fullLayout; } return ( (a = i.nestedProperty(n, e.prop).get()), (o = r[e.type] = r[e.type] || {}).hasOwnProperty( e.prop, ) && o[e.prop] !== a && (s = !0), (o[e.prop] = a), { changed: s, value: a } ); } function o(t, e) { var r = [], n = e[0], a = {}; if ("string" == typeof n) a[n] = e[1]; else { if (!i.isPlainObject(n)) return r; a = n; } return ( l( a, function (t, e, n) { r.push({ type: "layout", prop: t, value: n }); }, "", 0, ), r ); } function s(t, e) { var r, n, a, o, s = []; if ( ((n = e[0]), (a = e[1]), (r = e[2]), (o = {}), "string" == typeof n) ) o[n] = a; else { if (!i.isPlainObject(n)) return s; (o = n), void 0 === r && (r = a); } return ( void 0 === r && (r = null), l( o, function (e, n, i) { var a, o; if (Array.isArray(i)) { o = i.slice(); var l = Math.min(o.length, t.data.length); r && (l = Math.min(l, r.length)), (a = []); for (var c = 0; c < l; c++) a[c] = r ? r[c] : c; } else (o = i), (a = r ? r.slice() : null); if (null === a) Array.isArray(o) && (o = o[0]); else if (Array.isArray(a)) { if (!Array.isArray(o)) { var u = o; o = []; for (var f = 0; f < a.length; f++) o[f] = u; } o.length = Math.min(a.length, o.length); } s.push({ type: "data", prop: e, traces: a, value: o, }); }, "", 0, ), s ); } function l(t, e, r, n) { Object.keys(t).forEach(function (a) { var o = t[a]; if ("_" !== a[0]) { var s = r + (n > 0 ? "." : "") + a; i.isPlainObject(o) ? l(o, e, s, n + 1) : e(s, a, o); } }); } (r.manageCommandObserver = function (t, e, n, o) { var s = {}, l = !0; e && e._commandObserver && (s = e._commandObserver), s.cache || (s.cache = {}), (s.lookupTable = {}); var c = r.hasSimpleAPICommandBindings(t, n, s.lookupTable); if (e && e._commandObserver) { if (c) return s; if (e._commandObserver.remove) return ( e._commandObserver.remove(), (e._commandObserver = null), s ); } if (c) { a(t, c, s.cache), (s.check = function () { if (l) { var e = a(t, c, s.cache); return ( e.changed && o && void 0 !== s.lookupTable[e.value] && (s.disable(), Promise.resolve( o({ value: e.value, type: c.type, prop: c.prop, traces: c.traces, index: s.lookupTable[e.value], }), ).then(s.enable, s.enable)), e.changed ); } }); for ( var u = [ "plotly_relayout", "plotly_redraw", "plotly_restyle", "plotly_update", "plotly_animatingframe", "plotly_afterplot", ], f = 0; f < u.length; f++ ) t._internalOn(u[f], s.check); s.remove = function () { for (var e = 0; e < u.length; e++) t._removeInternalListener(u[e], s.check); }; } else i.log( "Unable to automatically bind plot updates to API command", ), (s.lookupTable = {}), (s.remove = function () {}); return ( (s.disable = function () { l = !1; }), (s.enable = function () { l = !0; }), e && (e._commandObserver = s), s ); }), (r.hasSimpleAPICommandBindings = function (t, e, n) { var i, a, o = e.length; for (i = 0; i < o; i++) { var s, l = e[i], c = l.method, u = l.args; if ((Array.isArray(u) || (u = []), !c)) return !1; var f = r.computeAPICommandBindings(t, c, u); if (1 !== f.length) return !1; if (a) { if ((s = f[0]).type !== a.type) return !1; if (s.prop !== a.prop) return !1; if (Array.isArray(a.traces)) { if (!Array.isArray(s.traces)) return !1; s.traces.sort(); for (var h = 0; h < a.traces.length; h++) if (a.traces[h] !== s.traces[h]) return !1; } else if (s.prop !== a.prop) return !1; } else (a = f[0]), Array.isArray(a.traces) && a.traces.sort(); var p = (s = f[0]).value; if (Array.isArray(p)) { if (1 !== p.length) return !1; p = p[0]; } n && (n[p] = i); } return a; }), (r.executeAPICommand = function (t, e, r) { if ("skip" === e) return Promise.resolve(); var a = n.apiMethodRegistry[e], o = [t]; Array.isArray(r) || (r = []); for (var s = 0; s < r.length; s++) o.push(r[s]); return a.apply(null, o).catch(function (t) { return ( i.warn("API call to Plotly." + e + " rejected.", t), Promise.reject(t) ); }); }), (r.computeAPICommandBindings = function (t, e, r) { var n; switch ((Array.isArray(r) || (r = []), e)) { case "restyle": n = s(t, r); break; case "relayout": n = o(t, r); break; case "update": n = s(t, [r[0], r[2]]).concat(o(t, [r[1]])); break; case "animate": n = (function (t, e) { return Array.isArray(e[0]) && 1 === e[0].length && -1 !== ["string", "number"].indexOf(typeof e[0][0]) ? [ { type: "layout", prop: "_currentFrame", value: e[0][0].toString(), }, ] : []; })(0, r); break; default: n = []; } return n; }); }, { "../lib": 515, "../registry": 647 }, ], 593: [ function (t, e, r) { "use strict"; var n = t("../lib/extend").extendFlat; (r.attributes = function (t, e) { e = e || {}; var r = { valType: "info_array", editType: (t = t || {}).editType, items: [ { valType: "number", min: 0, max: 1, editType: t.editType, }, { valType: "number", min: 0, max: 1, editType: t.editType, }, ], dflt: [0, 1], }, i = (t.name && t.name, t.trace, e.description && e.description, { x: n({}, r, {}), y: n({}, r, {}), editType: t.editType, }); return ( t.noGridCell || ((i.row = { valType: "integer", min: 0, dflt: 0, editType: t.editType, }), (i.column = { valType: "integer", min: 0, dflt: 0, editType: t.editType, })), i ); }), (r.defaults = function (t, e, r, n) { var i = (n && n.x) || [0, 1], a = (n && n.y) || [0, 1], o = e.grid; if (o) { var s = r("domain.column"); void 0 !== s && (s < o.columns ? (i = o._domains.x[s]) : delete t.domain.column); var l = r("domain.row"); void 0 !== l && (l < o.rows ? (a = o._domains.y[l]) : delete t.domain.row); } var c = r("domain.x", i), u = r("domain.y", a); c[0] < c[1] || (t.domain.x = i.slice()), u[0] < u[1] || (t.domain.y = a.slice()); }); }, { "../lib/extend": 505 }, ], 594: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.editType, r = t.colorEditType; void 0 === r && (r = e); var n = { family: { valType: "string", noBlank: !0, strict: !0, editType: e, }, size: { valType: "number", min: 1, editType: e }, color: { valType: "color", editType: r }, editType: e, }; return ( t.autoSize && (n.size.dflt = "auto"), t.autoColor && (n.color.dflt = "auto"), t.arrayOk && ((n.family.arrayOk = !0), (n.size.arrayOk = !0), (n.color.arrayOk = !0)), n ); }; }, {}, ], 595: [ function (t, e, r) { "use strict"; e.exports = { _isLinkedToArray: "frames_entry", group: { valType: "string" }, name: { valType: "string" }, traces: { valType: "any" }, baseframe: { valType: "string" }, data: { valType: "any" }, layout: { valType: "any" }, }; }, {}, ], 596: [ function (t, e, r) { "use strict"; (r.projNames = { airy: "airy", aitoff: "aitoff", "albers usa": "albersUsa", albers: "albers", august: "august", "azimuthal equal area": "azimuthalEqualArea", "azimuthal equidistant": "azimuthalEquidistant", baker: "baker", bertin1953: "bertin1953", boggs: "boggs", bonne: "bonne", bottomley: "bottomley", bromley: "bromley", collignon: "collignon", "conic conformal": "conicConformal", "conic equal area": "conicEqualArea", "conic equidistant": "conicEquidistant", craig: "craig", craster: "craster", "cylindrical equal area": "cylindricalEqualArea", "cylindrical stereographic": "cylindricalStereographic", eckert1: "eckert1", eckert2: "eckert2", eckert3: "eckert3", eckert4: "eckert4", eckert5: "eckert5", eckert6: "eckert6", eisenlohr: "eisenlohr", equirectangular: "equirectangular", fahey: "fahey", "foucaut sinusoidal": "foucautSinusoidal", foucaut: "foucaut", ginzburg4: "ginzburg4", ginzburg5: "ginzburg5", ginzburg6: "ginzburg6", ginzburg8: "ginzburg8", ginzburg9: "ginzburg9", gnomonic: "gnomonic", "gringorten quincuncial": "gringortenQuincuncial", gringorten: "gringorten", guyou: "guyou", hammer: "hammer", hill: "hill", homolosine: "homolosine", hufnagel: "hufnagel", hyperelliptical: "hyperelliptical", kavrayskiy7: "kavrayskiy7", lagrange: "lagrange", larrivee: "larrivee", laskowski: "laskowski", loximuthal: "loximuthal", mercator: "mercator", miller: "miller", mollweide: "mollweide", "mt flat polar parabolic": "mtFlatPolarParabolic", "mt flat polar quartic": "mtFlatPolarQuartic", "mt flat polar sinusoidal": "mtFlatPolarSinusoidal", "natural earth": "naturalEarth", "natural earth1": "naturalEarth1", "natural earth2": "naturalEarth2", "nell hammer": "nellHammer", nicolosi: "nicolosi", orthographic: "orthographic", patterson: "patterson", "peirce quincuncial": "peirceQuincuncial", polyconic: "polyconic", "rectangular polyconic": "rectangularPolyconic", robinson: "robinson", satellite: "satellite", "sinu mollweide": "sinuMollweide", sinusoidal: "sinusoidal", stereographic: "stereographic", times: "times", "transverse mercator": "transverseMercator", "van der grinten": "vanDerGrinten", "van der grinten2": "vanDerGrinten2", "van der grinten3": "vanDerGrinten3", "van der grinten4": "vanDerGrinten4", wagner4: "wagner4", wagner6: "wagner6", wiechel: "wiechel", "winkel tripel": "winkel3", winkel3: "winkel3", }), (r.axesNames = ["lonaxis", "lataxis"]), (r.lonaxisSpan = { orthographic: 180, "azimuthal equal area": 360, "azimuthal equidistant": 360, "conic conformal": 180, gnomonic: 160, stereographic: 180, "transverse mercator": 180, "*": 360, }), (r.lataxisSpan = { "conic conformal": 150, stereographic: 179.5, "*": 180, }), (r.scopeDefaults = { world: { lonaxisRange: [-180, 180], lataxisRange: [-90, 90], projType: "equirectangular", projRotate: [0, 0, 0], }, usa: { lonaxisRange: [-180, -50], lataxisRange: [15, 80], projType: "albers usa", }, europe: { lonaxisRange: [-30, 60], lataxisRange: [30, 85], projType: "conic conformal", projRotate: [15, 0, 0], projParallels: [0, 60], }, asia: { lonaxisRange: [22, 160], lataxisRange: [-15, 55], projType: "mercator", projRotate: [0, 0, 0], }, africa: { lonaxisRange: [-30, 60], lataxisRange: [-40, 40], projType: "mercator", projRotate: [0, 0, 0], }, "north america": { lonaxisRange: [-180, -45], lataxisRange: [5, 85], projType: "conic conformal", projRotate: [-100, 0, 0], projParallels: [29.5, 45.5], }, "south america": { lonaxisRange: [-100, -30], lataxisRange: [-60, 15], projType: "mercator", projRotate: [0, 0, 0], }, }), (r.clipPad = 0.001), (r.precision = 0.1), (r.landColor = "#F0DC82"), (r.waterColor = "#3399FF"), (r.locationmodeToLayer = { "ISO-3": "countries", "USA-states": "subunits", "country names": "countries", }), (r.sphereSVG = { type: "Sphere" }), (r.fillLayers = { ocean: 1, land: 1, lakes: 1 }), (r.lineLayers = { subunits: 1, countries: 1, coastlines: 1, rivers: 1, frame: 1, }), (r.layers = [ "bg", "ocean", "land", "lakes", "subunits", "countries", "coastlines", "rivers", "lataxis", "lonaxis", "frame", "backplot", "frontplot", ]), (r.layersForChoropleth = [ "bg", "ocean", "land", "subunits", "countries", "coastlines", "lataxis", "lonaxis", "frame", "backplot", "rivers", "lakes", "frontplot", ]), (r.layerNameToAdjective = { ocean: "ocean", land: "land", lakes: "lake", subunits: "subunit", countries: "country", coastlines: "coastline", rivers: "river", frame: "frame", }); }, {}, ], 597: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("d3-geo"), a = i.geoPath, o = i.geoDistance, s = t("d3-geo-projection"), l = t("../../registry"), c = t("../../lib"), u = c.strTranslate, f = t("../../components/color"), h = t("../../components/drawing"), p = t("../../components/fx"), d = t("../plots"), m = t("../cartesian/axes"), g = t("../cartesian/autorange").getAutoRange, v = t("../../components/dragelement"), y = t("../../components/selections").prepSelect, x = t("../../components/selections").clearOutline, b = t("../../components/selections").selectOnClick, _ = t("./zoom"), w = t("./constants"), T = t("../../lib/geo_location_utils"), k = t("../../lib/topojson_utils"), A = t("topojson-client").feature; function M(t) { (this.id = t.id), (this.graphDiv = t.graphDiv), (this.container = t.container), (this.topojsonURL = t.topojsonURL), (this.isStatic = t.staticPlot), (this.topojsonName = null), (this.topojson = null), (this.projection = null), (this.scope = null), (this.viewInitial = null), (this.fitScale = null), (this.bounds = null), (this.midPt = null), (this.hasChoropleth = !1), (this.traceHash = {}), (this.layers = {}), (this.basePaths = {}), (this.dataPaths = {}), (this.dataPoints = {}), (this.clipDef = null), (this.clipRect = null), (this.bgRect = null), this.makeFramework(); } var S = M.prototype; function E(t, e) { var r = w.clipPad, n = t[0] + r, i = t[1] - r, a = e[0] + r, o = e[1] - r; n > 0 && i < 0 && (i += 360); var s = (i - n) / 4; return { type: "Polygon", coordinates: [ [ [n, a], [n, o], [n + s, o], [n + 2 * s, o], [n + 3 * s, o], [i, o], [i, a], [i - s, a], [i - 2 * s, a], [i - 3 * s, a], [n, a], ], ], }; } (e.exports = function (t) { return new M(t); }), (S.plot = function (t, e, r, n) { var i = this; if (n) return i.update(t, e, !0); (i._geoCalcData = t), (i._fullLayout = e); var a = e[this.id], o = [], s = !1; for (var l in w.layerNameToAdjective) if ("frame" !== l && a["show" + l]) { s = !0; break; } for (var c = !1, u = 0; u < t.length; u++) { var f = t[0][0].trace; (f._geo = i), f.locationmode && (s = !0); var h = f.marker; if (h) { var p = h.angle, d = h.angleref; (p || "north" === d || "previous" === d) && (c = !0); } } if (((this._hasMarkerAngles = c), s)) { var m = k.getTopojsonName(a); (null !== i.topojson && m === i.topojsonName) || ((i.topojsonName = m), void 0 === PlotlyGeoAssets.topojson[i.topojsonName] && o.push(i.fetchTopojson())); } (o = o.concat(T.fetchTraceGeoData(t))), r.push( new Promise(function (r, n) { Promise.all(o) .then(function () { (i.topojson = PlotlyGeoAssets.topojson[i.topojsonName]), i.update(t, e), r(); }) .catch(n); }), ); }), (S.fetchTopojson = function () { var t = this, e = k.getTopojsonPath(t.topojsonURL, t.topojsonName); return new Promise(function (r, i) { n.json(e, function (n, a) { if (n) return 404 === n.status ? i( new Error( [ "plotly.js could not find topojson file at", e + ".", "Make sure the *topojsonURL* plot config option", "is set properly.", ].join(" "), ), ) : i( new Error( [ "unexpected error while fetching topojson file at", e, ].join(" "), ), ); (PlotlyGeoAssets.topojson[t.topojsonName] = a), r(); }); }); }), (S.update = function (t, e, r) { var n = e[this.id]; this.hasChoropleth = !1; for (var i = 0; i < t.length; i++) { var a = t[i], o = a[0].trace; "choropleth" === o.type && (this.hasChoropleth = !0), !0 === o.visible && o._length > 0 && o._module.calcGeoJSON(a, e); } if (!r) { if (this.updateProjection(t, e)) return; (this.viewInitial && this.scope === n.scope) || this.saveViewInitial(n); } (this.scope = n.scope), this.updateBaseLayers(e, n), this.updateDims(e, n), this.updateFx(e, n), d.generalUpdatePerTraceModule( this.graphDiv, this, t, n, ); var s = this.layers.frontplot.select(".scatterlayer"); (this.dataPoints.point = s.selectAll(".point")), (this.dataPoints.text = s.selectAll("text")), (this.dataPaths.line = s.selectAll(".js-line")); var l = this.layers.backplot.select(".choroplethlayer"); (this.dataPaths.choropleth = l.selectAll("path")), this._render(); }), (S.updateProjection = function (t, e) { var r = this.graphDiv, n = e[this.id], l = e._size, u = n.domain, f = n.projection, h = n.lonaxis, p = n.lataxis, d = h._ax, m = p._ax, v = (this.projection = (function (t) { var e = t.projection, r = e.type, n = w.projNames[r]; n = "geo" + c.titleCase(n); for ( var l = (i[n] || s[n])(), u = t._isSatellite ? (180 * Math.acos(1 / e.distance)) / Math.PI : t._isClipped ? w.lonaxisSpan[r] / 2 : null, f = [ "center", "rotate", "parallels", "clipExtent", ], h = function (t) { return t ? l : []; }, p = 0; p < f.length; p++ ) { var d = f[p]; "function" != typeof l[d] && (l[d] = h); } (l.isLonLatOverEdges = function (t) { if (null === l(t)) return !0; if (u) { var e = l.rotate(); return o(t, [-e[0], -e[1]]) > (u * Math.PI) / 180; } return !1; }), (l.getPath = function () { return a().projection(l); }), (l.getBounds = function (t) { return l.getPath().bounds(t); }), l.precision(w.precision), t._isSatellite && l.tilt(e.tilt).distance(e.distance); u && l.clipAngle(u - w.clipPad); return l; })(n)), y = [ [l.l + l.w * u.x[0], l.t + l.h * (1 - u.y[1])], [l.l + l.w * u.x[1], l.t + l.h * (1 - u.y[0])], ], x = n.center || {}, b = f.rotation || {}, _ = h.range || [], T = p.range || []; if (n.fitbounds) { (d._length = y[1][0] - y[0][0]), (m._length = y[1][1] - y[0][1]), (d.range = g(r, d)), (m.range = g(r, m)); var k = (d.range[0] + d.range[1]) / 2, A = (m.range[0] + m.range[1]) / 2; if (n._isScoped) x = { lon: k, lat: A }; else if (n._isClipped) { (x = { lon: k, lat: A }), (b = { lon: k, lat: A, roll: b.roll }); var M = f.type, S = w.lonaxisSpan[M] / 2 || 180, L = w.lataxisSpan[M] / 2 || 90; (_ = [k - S, k + S]), (T = [A - L, A + L]); } else (x = { lon: k, lat: A }), (b = { lon: k, lat: b.lat, roll: b.roll }); } v.center([x.lon - b.lon, x.lat - b.lat]) .rotate([-b.lon, -b.lat, b.roll]) .parallels(f.parallels); var C = E(_, T); v.fitExtent(y, C); var P = (this.bounds = v.getBounds(C)), I = (this.fitScale = v.scale()), O = v.translate(); if (n.fitbounds) { var z = v.getBounds(E(d.range, m.range)), D = Math.min( (P[1][0] - P[0][0]) / (z[1][0] - z[0][0]), (P[1][1] - P[0][1]) / (z[1][1] - z[0][1]), ); isFinite(D) ? v.scale(D * I) : c.warn( "Something went wrong during" + this.id + "fitbounds computations.", ); } else v.scale(f.scale * I); var R = (this.midPt = [ (P[0][0] + P[1][0]) / 2, (P[0][1] + P[1][1]) / 2, ]); if ( (v .translate([ O[0] + (R[0] - O[0]), O[1] + (R[1] - O[1]), ]) .clipExtent(P), n._isAlbersUsa) ) { var F = v([x.lon, x.lat]), B = v.translate(); v.translate([ B[0] - (F[0] - B[0]), B[1] - (F[1] - B[1]), ]); } }), (S.updateBaseLayers = function (t, e) { var r = this, i = r.topojson, a = r.layers, o = r.basePaths; function s(t) { return "lonaxis" === t || "lataxis" === t; } function l(t) { return Boolean(w.lineLayers[t]); } function c(t) { return Boolean(w.fillLayers[t]); } var u = ( this.hasChoropleth ? w.layersForChoropleth : w.layers ).filter(function (t) { return l(t) || c(t) ? e["show" + t] : !s(t) || e[t].showgrid; }), p = r.framework.selectAll(".layer").data(u, String); p.exit().each(function (t) { delete a[t], delete o[t], n.select(this).remove(); }), p .enter() .append("g") .attr("class", function (t) { return "layer " + t; }) .each(function (t) { var e = (a[t] = n.select(this)); "bg" === t ? (r.bgRect = e .append("rect") .style("pointer-events", "all")) : s(t) ? (o[t] = e .append("path") .style("fill", "none")) : "backplot" === t ? e.append("g").classed("choroplethlayer", !0) : "frontplot" === t ? e.append("g").classed("scatterlayer", !0) : l(t) ? (o[t] = e .append("path") .style("fill", "none") .style("stroke-miterlimit", 2)) : c(t) && (o[t] = e .append("path") .style("stroke", "none")); }), p.order(), p.each(function (r) { var n = o[r], a = w.layerNameToAdjective[r]; "frame" === r ? n.datum(w.sphereSVG) : l(r) || c(r) ? n.datum(A(i, i.objects[r])) : s(r) && n .datum( (function (t, e, r) { var n, i, a, o = e[t], s = w.scopeDefaults[e.scope]; "lonaxis" === t ? ((n = s.lonaxisRange), (i = s.lataxisRange), (a = function (t, e) { return [t, e]; })) : "lataxis" === t && ((n = s.lataxisRange), (i = s.lonaxisRange), (a = function (t, e) { return [e, t]; })); var l = { type: "linear", range: [n[0], n[1] - 1e-6], tick0: o.tick0, dtick: o.dtick, }; m.setConvert(l, r); var c = m.calcTicks(l); e.isScoped || "lonaxis" !== t || c.pop(); for ( var u = c.length, f = new Array(u), h = 0; h < u; h++ ) for ( var p = c[h].x, d = (f[h] = []), g = i[0]; g < i[1] + 2.5; g += 2.5 ) d.push(a(p, g)); return { type: "MultiLineString", coordinates: f, }; })(r, e, t), ) .call(f.stroke, e[r].gridcolor) .call( h.dashLine, e[r].griddash, e[r].gridwidth, ), l(r) ? n .call(f.stroke, e[a + "color"]) .call(h.dashLine, "", e[a + "width"]) : c(r) && n.call(f.fill, e[a + "color"]); }); }), (S.updateDims = function (t, e) { var r = this.bounds, n = (e.framewidth || 0) / 2, i = r[0][0] - n, a = r[0][1] - n, o = r[1][0] - i + n, s = r[1][1] - a + n; h.setRect(this.clipRect, i, a, o, s), this.bgRect .call(h.setRect, i, a, o, s) .call(f.fill, e.bgcolor), (this.xaxis._offset = i), (this.xaxis._length = o), (this.yaxis._offset = a), (this.yaxis._length = s); }), (S.updateFx = function (t, e) { var r = this, i = r.graphDiv, a = r.bgRect, o = t.dragmode, s = t.clickmode; if (!r.isStatic) { var u = { element: r.bgRect.node(), gd: i, plotinfo: { id: r.id, xaxis: r.xaxis, yaxis: r.yaxis, fillRangeItems: function (t, e) { e.isRect ? ((t.range = {})[r.id] = [ f([e.xmin, e.ymin]), f([e.xmax, e.ymax]), ]) : ((t.lassoPoints = {})[r.id] = e.map(f)); }, }, xaxes: [r.xaxis], yaxes: [r.yaxis], subplot: r.id, clickFn: function (t) { 2 === t && x(i); }, }; "pan" === o ? ((a.node().onmousedown = null), a.call(_(r, e)), a.on("dblclick.zoom", function () { var t = r.viewInitial, e = {}; for (var n in t) e[r.id + "." + n] = t[n]; l.call("_guiRelayout", i, e), i.emit("plotly_doubleclick", null); }), i._context._scrollZoom.geo || a.on("wheel.zoom", null)) : ("select" !== o && "lasso" !== o) || (a.on(".zoom", null), (u.prepFn = function (t, e, r) { y(t, e, r, u, o); }), v.init(u)), a.on("mousemove", function () { var t = r.projection.invert( c.getPositionFromD3Event(), ); if (!t) return v.unhover(i, n.event); (r.xaxis.p2c = function () { return t[0]; }), (r.yaxis.p2c = function () { return t[1]; }), p.hover(i, n.event, r.id); }), a.on("mouseout", function () { i._dragging || v.unhover(i, n.event); }), a.on("click", function () { "select" !== o && "lasso" !== o && (s.indexOf("select") > -1 && b(n.event, i, [r.xaxis], [r.yaxis], r.id, u), s.indexOf("event") > -1 && p.click(i, n.event)); }); } function f(t) { return r.projection.invert([ t[0] + r.xaxis._offset, t[1] + r.yaxis._offset, ]); } }), (S.makeFramework = function () { var t = this, e = t.graphDiv, r = e._fullLayout, i = "clip" + r._uid + t.id; (t.clipDef = r._clips.append("clipPath").attr("id", i)), (t.clipRect = t.clipDef.append("rect")), (t.framework = n .select(t.container) .append("g") .attr("class", "geo " + t.id) .call(h.setClipUrl, i, e)), (t.project = function (e) { var r = t.projection(e); return r ? [r[0] - t.xaxis._offset, r[1] - t.yaxis._offset] : [null, null]; }), (t.xaxis = { _id: "x", c2p: function (e) { return t.project(e)[0]; }, }), (t.yaxis = { _id: "y", c2p: function (e) { return t.project(e)[1]; }, }), (t.mockAxis = { type: "linear", showexponent: "all", exponentformat: "B", }), m.setConvert(t.mockAxis, r); }), (S.saveViewInitial = function (t) { var e, r = t.center || {}, n = t.projection, i = n.rotation || {}; (this.viewInitial = { fitbounds: t.fitbounds, "projection.scale": n.scale, }), (e = t._isScoped ? { "center.lon": r.lon, "center.lat": r.lat } : t._isClipped ? { "projection.rotation.lon": i.lon, "projection.rotation.lat": i.lat, } : { "center.lon": r.lon, "center.lat": r.lat, "projection.rotation.lon": i.lon, }), c.extendFlat(this.viewInitial, e); }), (S.render = function (t) { this._hasMarkerAngles && t ? this.plot(this._geoCalcData, this._fullLayout, [], !0) : this._render(); }), (S._render = function () { var t, e = this.projection, r = e.getPath(); function n(t) { var r = e(t.lonlat); return r ? u(r[0], r[1]) : null; } function i(t) { return e.isLonLatOverEdges(t.lonlat) ? "none" : null; } for (t in this.basePaths) this.basePaths[t].attr("d", r); for (t in this.dataPaths) this.dataPaths[t].attr("d", function (t) { return r(t.geojson); }); for (t in this.dataPoints) this.dataPoints[t] .attr("display", i) .attr("transform", n); }); }, { "../../components/color": 367, "../../components/dragelement": 386, "../../components/drawing": 389, "../../components/fx": 407, "../../components/selections": 455, "../../lib": 515, "../../lib/geo_location_utils": 508, "../../lib/topojson_utils": 544, "../../registry": 647, "../cartesian/autorange": 565, "../cartesian/axes": 566, "../plots": 628, "./constants": 596, "./zoom": 601, "@plotly/d3": 58, "d3-geo": 114, "d3-geo-projection": 113, "topojson-client": 316, }, ], 598: [ function (t, e, r) { "use strict"; var n = t("../../plots/get_data").getSubplotCalcData, i = t("../../lib").counterRegex, a = t("./geo"), o = "geo", s = i(o), l = {}; (l.geo = { valType: "subplotid", dflt: o, editType: "calc" }), (e.exports = { attr: o, name: o, idRoot: o, idRegex: s, attrRegex: s, attributes: l, layoutAttributes: t("./layout_attributes"), supplyLayoutDefaults: t("./layout_defaults"), plot: function (t) { for ( var e = t._fullLayout, r = t.calcdata, i = e._subplots.geo, s = 0; s < i.length; s++ ) { var l = i[s], c = n(r, o, l), u = e[l]._subplot; u || ((u = a({ id: l, graphDiv: t, container: e._geolayer.node(), topojsonURL: t._context.topojsonURL, staticPlot: t._context.staticPlot, })), (e[l]._subplot = u)), u.plot(c, e, t._promises); } }, updateFx: function (t) { for ( var e = t._fullLayout, r = e._subplots.geo, n = 0; n < r.length; n++ ) { var i = e[r[n]]; i._subplot.updateFx(e, i); } }, clean: function (t, e, r, n) { for ( var i = n._subplots.geo || [], a = 0; a < i.length; a++ ) { var o = i[a], s = n[o]._subplot; !e[o] && s && (s.framework.remove(), s.clipDef.remove()); } }, }); }, { "../../lib": 515, "../../plots/get_data": 602, "./geo": 597, "./layout_attributes": 599, "./layout_defaults": 600, }, ], 599: [ function (t, e, r) { "use strict"; var n = t("../../components/color/attributes"), i = t("../domain").attributes, a = t("../../components/drawing/attributes").dash, o = t("./constants"), s = t("../../plot_api/edit_types").overrideAll, l = t("../../lib/sort_object_keys"), c = { range: { valType: "info_array", items: [{ valType: "number" }, { valType: "number" }], }, showgrid: { valType: "boolean", dflt: !1 }, tick0: { valType: "number", dflt: 0 }, dtick: { valType: "number" }, gridcolor: { valType: "color", dflt: n.lightLine }, gridwidth: { valType: "number", min: 0, dflt: 1 }, griddash: a, }; (e.exports = s( { domain: i({ name: "geo" }, {}), fitbounds: { valType: "enumerated", values: [!1, "locations", "geojson"], dflt: !1, editType: "plot", }, resolution: { valType: "enumerated", values: [110, 50], dflt: 110, coerceNumber: !0, }, scope: { valType: "enumerated", values: l(o.scopeDefaults), dflt: "world", }, projection: { type: { valType: "enumerated", values: l(o.projNames) }, rotation: { lon: { valType: "number" }, lat: { valType: "number" }, roll: { valType: "number" }, }, tilt: { valType: "number", dflt: 0 }, distance: { valType: "number", min: 1.001, dflt: 2 }, parallels: { valType: "info_array", items: [{ valType: "number" }, { valType: "number" }], }, scale: { valType: "number", min: 0, dflt: 1 }, }, center: { lon: { valType: "number" }, lat: { valType: "number" }, }, visible: { valType: "boolean", dflt: !0 }, showcoastlines: { valType: "boolean" }, coastlinecolor: { valType: "color", dflt: n.defaultLine }, coastlinewidth: { valType: "number", min: 0, dflt: 1 }, showland: { valType: "boolean", dflt: !1 }, landcolor: { valType: "color", dflt: o.landColor }, showocean: { valType: "boolean", dflt: !1 }, oceancolor: { valType: "color", dflt: o.waterColor }, showlakes: { valType: "boolean", dflt: !1 }, lakecolor: { valType: "color", dflt: o.waterColor }, showrivers: { valType: "boolean", dflt: !1 }, rivercolor: { valType: "color", dflt: o.waterColor }, riverwidth: { valType: "number", min: 0, dflt: 1 }, showcountries: { valType: "boolean" }, countrycolor: { valType: "color", dflt: n.defaultLine }, countrywidth: { valType: "number", min: 0, dflt: 1 }, showsubunits: { valType: "boolean" }, subunitcolor: { valType: "color", dflt: n.defaultLine }, subunitwidth: { valType: "number", min: 0, dflt: 1 }, showframe: { valType: "boolean" }, framecolor: { valType: "color", dflt: n.defaultLine }, framewidth: { valType: "number", min: 0, dflt: 1 }, bgcolor: { valType: "color", dflt: n.background }, lonaxis: c, lataxis: c, }, "plot", "from-root", )).uirevision = { valType: "any", editType: "none" }; }, { "../../components/color/attributes": 366, "../../components/drawing/attributes": 388, "../../lib/sort_object_keys": 538, "../../plot_api/edit_types": 548, "../domain": 593, "./constants": 596, }, ], 600: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../subplot_defaults"), a = t("../get_data").getSubplotData, o = t("./constants"), s = t("./layout_attributes"), l = o.axesNames; function c(t, e, r, i) { var s = a(i.fullData, "geo", i.id).map(function (t) { return t._expandedIndex; }), c = r("resolution"), u = r("scope"), f = o.scopeDefaults[u], h = r("projection.type", f.projType), p = (e._isAlbersUsa = "albers usa" === h); p && (u = e.scope = "usa"); var d = (e._isScoped = "world" !== u), m = (e._isSatellite = "satellite" === h), g = (e._isConic = -1 !== h.indexOf("conic") || "albers" === h), v = (e._isClipped = !!o.lonaxisSpan[h]); if (!1 === t.visible) { var y = n.extendDeep({}, e._template); (y.showcoastlines = !1), (y.showcountries = !1), (y.showframe = !1), (y.showlakes = !1), (y.showland = !1), (y.showocean = !1), (y.showrivers = !1), (y.showsubunits = !1), y.lonaxis && (y.lonaxis.showgrid = !1), y.lataxis && (y.lataxis.showgrid = !1), (e._template = y); } for (var x = r("visible"), b = 0; b < l.length; b++) { var _, w = l[b], T = [30, 10][b]; if (d) _ = f[w + "Range"]; else { var k = o[w + "Span"], A = (k[h] || k["*"]) / 2, M = r( "projection.rotation." + w.substr(0, 3), f.projRotate[b], ); _ = [M - A, M + A]; } var S = r(w + ".range", _); r(w + ".tick0"), r(w + ".dtick", T), r(w + ".showgrid", !!x && void 0) && (r(w + ".gridcolor"), r(w + ".gridwidth"), r(w + ".griddash")), (e[w]._ax = { type: "linear", _id: w.slice(0, 3), _traceIndices: s, setScale: n.identity, c2l: n.identity, r2l: n.identity, autorange: !0, range: S.slice(), _m: 1, _input: {}, }); } var E = e.lonaxis.range, L = e.lataxis.range, C = E[0], P = E[1]; C > 0 && P < 0 && (P += 360); var I, O, z, D = (C + P) / 2; if (!p) { var R = d ? f.projRotate : [D, 0, 0]; (I = r("projection.rotation.lon", R[0])), r("projection.rotation.lat", R[1]), r("projection.rotation.roll", R[2]), r("showcoastlines", !d && x) && (r("coastlinecolor"), r("coastlinewidth")), r("showocean", !!x && void 0) && r("oceancolor"); } (p ? ((O = -96.6), (z = 38.7)) : ((O = d ? D : I), (z = (L[0] + L[1]) / 2)), r("center.lon", O), r("center.lat", z), m && (r("projection.tilt"), r("projection.distance")), g) && r("projection.parallels", f.projParallels || [0, 60]); r("projection.scale"), r("showland", !!x && void 0) && r("landcolor"), r("showlakes", !!x && void 0) && r("lakecolor"), r("showrivers", !!x && void 0) && (r("rivercolor"), r("riverwidth")), r("showcountries", d && "usa" !== u && x) && (r("countrycolor"), r("countrywidth")), ("usa" === u || ("north america" === u && 50 === c)) && (r("showsubunits", x), r("subunitcolor"), r("subunitwidth")), d || (r("showframe", x) && (r("framecolor"), r("framewidth"))), r("bgcolor"), r("fitbounds") && (delete e.projection.scale, d ? (delete e.center.lon, delete e.center.lat) : v ? (delete e.center.lon, delete e.center.lat, delete e.projection.rotation.lon, delete e.projection.rotation.lat, delete e.lonaxis.range, delete e.lataxis.range) : (delete e.center.lon, delete e.center.lat, delete e.projection.rotation.lon)); } e.exports = function (t, e, r) { i(t, e, r, { type: "geo", attributes: s, handleDefaults: c, fullData: r, partition: "y", }); }; }, { "../../lib": 515, "../get_data": 602, "../subplot_defaults": 641, "./constants": 596, "./layout_attributes": 599, }, ], 601: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../registry"), o = Math.PI / 180, s = 180 / Math.PI, l = { cursor: "pointer" }, c = { cursor: "auto" }; function u(t, e) { return n.behavior .zoom() .translate(e.translate()) .scale(e.scale()); } function f(t, e, r) { var n = t.id, o = t.graphDiv, s = o.layout, l = s[n], c = o._fullLayout, u = c[n], f = {}, h = {}; function p(t, e) { (f[n + "." + t] = i.nestedProperty(l, t).get()), a.call("_storeDirectGUIEdit", s, c._preGUI, f); var r = i.nestedProperty(u, t); r.get() !== e && (r.set(e), i.nestedProperty(l, t).set(e), (h[n + "." + t] = e)); } r(p), p("projection.scale", e.scale() / t.fitScale), p("fitbounds", !1), o.emit("plotly_relayout", h); } function h(t, e) { var r = u(0, e); function i(r) { var n = e.invert(t.midPt); r("center.lon", n[0]), r("center.lat", n[1]); } return ( r .on("zoomstart", function () { n.select(this).style(l); }) .on("zoom", function () { e.scale(n.event.scale).translate(n.event.translate), t.render(!0); var r = e.invert(t.midPt); t.graphDiv.emit("plotly_relayouting", { "geo.projection.scale": e.scale() / t.fitScale, "geo.center.lon": r[0], "geo.center.lat": r[1], }); }) .on("zoomend", function () { n.select(this).style(c), f(t, e, i); }), r ); } function p(t, e) { var r, i, a, o, s, h, p, d, m, g = u(0, e); function v(t) { return e.invert(t); } function y(r) { var n = e.rotate(), i = e.invert(t.midPt); r("projection.rotation.lon", -n[0]), r("center.lon", i[0]), r("center.lat", i[1]); } return ( g .on("zoomstart", function () { n.select(this).style(l), (r = n.mouse(this)), (i = e.rotate()), (a = e.translate()), (o = i), (s = v(r)); }) .on("zoom", function () { if ( ((h = n.mouse(this)), (function (t) { var r = v(t); if (!r) return !0; var n = e(r); return ( Math.abs(n[0] - t[0]) > 2 || Math.abs(n[1] - t[1]) > 2 ); })(r)) ) return ( g.scale(e.scale()), void g.translate(e.translate()) ); e.scale(n.event.scale), e.translate([a[0], n.event.translate[1]]), s ? v(h) && ((d = v(h)), (p = [o[0] + (d[0] - s[0]), i[1], i[2]]), e.rotate(p), (o = p)) : (s = v((r = h))), (m = !0), t.render(!0); var l = e.rotate(), c = e.invert(t.midPt); t.graphDiv.emit("plotly_relayouting", { "geo.projection.scale": e.scale() / t.fitScale, "geo.center.lon": c[0], "geo.center.lat": c[1], "geo.projection.rotation.lon": -l[0], }); }) .on("zoomend", function () { n.select(this).style(c), m && f(t, e, y); }), g ); } function d(t, e) { var r, i = { r: e.rotate(), k: e.scale() }, a = u(0, e), o = (function (t) { var e = 0, r = arguments.length, i = []; for (; ++e < r; ) i.push(arguments[e]); var a = n.dispatch.apply(null, i); return ( (a.of = function (e, r) { return function (i) { var o; try { (o = i.sourceEvent = n.event), (i.target = t), (n.event = i), a[i.type].apply(e, r); } finally { n.event = o; } }; }), a ); })(a, "zoomstart", "zoom", "zoomend"), s = 0, h = a.on; function p(t) { s++ || t({ type: "zoomstart" }); } function d(t) { t({ type: "zoom" }); } function b(t) { --s || t({ type: "zoomend" }); } function _(t) { var r = e.rotate(); t("projection.rotation.lon", -r[0]), t("projection.rotation.lat", -r[1]); } return ( a .on("zoomstart", function () { n.select(this).style(l); var t = n.mouse(this), s = e.rotate(), c = s, u = e.translate(), f = g(s); (r = m(e, t)), h.call(a, "zoom", function () { var a = n.mouse(this); if ((e.scale((i.k = n.event.scale)), r)) { if (m(e, a)) { e.rotate(s).translate(u); var l = m(e, a), h = y(r, l), p = T(v(f, h)), g = (i.r = x(p, r, c)); (isFinite(g[0]) && isFinite(g[1]) && isFinite(g[2])) || (g = c), e.rotate(g), (c = g); } } else r = m(e, (t = a)); d(o.of(this, arguments)); }), p(o.of(this, arguments)); }) .on("zoomend", function () { n.select(this).style(c), h.call(a, "zoom", null), b(o.of(this, arguments)), f(t, e, _); }) .on("zoom.redraw", function () { t.render(!0); var r = e.rotate(); t.graphDiv.emit("plotly_relayouting", { "geo.projection.scale": e.scale() / t.fitScale, "geo.projection.rotation.lon": -r[0], "geo.projection.rotation.lat": -r[1], }); }), n.rebind(a, o, "on") ); } function m(t, e) { var r = t.invert(e); return ( r && isFinite(r[0]) && isFinite(r[1]) && (function (t) { var e = t[0] * o, r = t[1] * o, n = Math.cos(r); return [n * Math.cos(e), n * Math.sin(e), Math.sin(r)]; })(r) ); } function g(t) { var e = 0.5 * t[0] * o, r = 0.5 * t[1] * o, n = 0.5 * t[2] * o, i = Math.sin(e), a = Math.cos(e), s = Math.sin(r), l = Math.cos(r), c = Math.sin(n), u = Math.cos(n); return [ a * l * u + i * s * c, i * l * u - a * s * c, a * s * u + i * l * c, a * l * c - i * s * u, ]; } function v(t, e) { var r = t[0], n = t[1], i = t[2], a = t[3], o = e[0], s = e[1], l = e[2], c = e[3]; return [ r * o - n * s - i * l - a * c, r * s + n * o + i * c - a * l, r * l - n * c + i * o + a * s, r * c + n * l - i * s + a * o, ]; } function y(t, e) { if (t && e) { var r = (function (t, e) { return [ t[1] * e[2] - t[2] * e[1], t[2] * e[0] - t[0] * e[2], t[0] * e[1] - t[1] * e[0], ]; })(t, e), n = Math.sqrt(k(r, r)), i = 0.5 * Math.acos(Math.max(-1, Math.min(1, k(t, e)))), a = Math.sin(i) / n; return n && [Math.cos(i), r[2] * a, -r[1] * a, r[0] * a]; } } function x(t, e, r) { var n = w(e, 2, t[0]); (n = w(n, 1, t[1])), (n = w(n, 0, t[2] - r[2])); var i, a, o = e[0], l = e[1], c = e[2], u = n[0], f = n[1], h = n[2], p = Math.atan2(l, o) * s, d = Math.sqrt(o * o + l * l); Math.abs(f) > d ? ((a = (f > 0 ? 90 : -90) - p), (i = 0)) : ((a = Math.asin(f / d) * s - p), (i = Math.sqrt(d * d - f * f))); var m = 180 - a - 2 * p, g = (Math.atan2(h, u) - Math.atan2(c, i)) * s, v = (Math.atan2(h, u) - Math.atan2(c, -i)) * s; return b(r[0], r[1], a, g) <= b(r[0], r[1], m, v) ? [a, g, r[2]] : [m, v, r[2]]; } function b(t, e, r, n) { var i = _(r - t), a = _(n - e); return Math.sqrt(i * i + a * a); } function _(t) { return (((t % 360) + 540) % 360) - 180; } function w(t, e, r) { var n = r * o, i = t.slice(), a = 0 === e ? 1 : 0, s = 2 === e ? 1 : 2, l = Math.cos(n), c = Math.sin(n); return ( (i[a] = t[a] * l - t[s] * c), (i[s] = t[s] * l + t[a] * c), i ); } function T(t) { return [ Math.atan2( 2 * (t[0] * t[1] + t[2] * t[3]), 1 - 2 * (t[1] * t[1] + t[2] * t[2]), ) * s, Math.asin( Math.max( -1, Math.min(1, 2 * (t[0] * t[2] - t[3] * t[1])), ), ) * s, Math.atan2( 2 * (t[0] * t[3] + t[1] * t[2]), 1 - 2 * (t[2] * t[2] + t[3] * t[3]), ) * s, ]; } function k(t, e) { for (var r = 0, n = 0, i = t.length; n < i; ++n) r += t[n] * e[n]; return r; } e.exports = function (t, e) { var r = t.projection; return (e._isScoped ? h : e._isClipped ? d : p)(t, r); }; }, { "../../lib": 515, "../../registry": 647, "@plotly/d3": 58 }, ], 602: [ function (t, e, r) { "use strict"; var n = t("../registry"), i = t("./cartesian/constants").SUBPLOT_PATTERN; (r.getSubplotCalcData = function (t, e, r) { var i = n.subplotsRegistry[e]; if (!i) return []; for (var a = i.attr, o = [], s = 0; s < t.length; s++) { var l = t[s]; l[0].trace[a] === r && o.push(l); } return o; }), (r.getModuleCalcData = function (t, e) { var r, i = [], a = []; if ( !(r = "string" == typeof e ? n.getModule(e).plot : "function" == typeof e ? e : e.plot) ) return [i, t]; for (var o = 0; o < t.length; o++) { var s = t[o], l = s[0].trace; !0 === l.visible && 0 !== l._length && (l._module.plot === r ? i.push(s) : a.push(s)); } return [i, a]; }), (r.getSubplotData = function (t, e, r) { if (!n.subplotsRegistry[e]) return []; var a, o, s, l = n.subplotsRegistry[e].attr, c = []; if ("gl2d" === e) { var u = r.match(i); (o = "x" + u[1]), (s = "y" + u[2]); } for (var f = 0; f < t.length; f++) (a = t[f]), "gl2d" === e && n.traceIs(a, "gl2d") ? a[l[0]] === o && a[l[1]] === s && c.push(a) : a[l] === r && c.push(a); return c; }); }, { "../registry": 647, "./cartesian/constants": 573 }, ], 603: [ function (t, e, r) { "use strict"; var n = t("mouse-change"), i = t("mouse-wheel"), a = t("mouse-event-offset"), o = t("../cartesian/constants"), s = t("has-passive-events"); function l(t, e) { (this.element = t), (this.plot = e), (this.mouseListener = null), (this.wheelListener = null), (this.lastInputTime = Date.now()), (this.lastPos = [0, 0]), (this.boxEnabled = !1), (this.boxInited = !1), (this.boxStart = [0, 0]), (this.boxEnd = [0, 0]), (this.dragStart = [0, 0]); } e.exports = function (t) { var e = t.mouseContainer, r = t.glplot, c = new l(e, r); function u() { (t.xaxis.autorange = !1), (t.yaxis.autorange = !1); } function f(e, n, i) { var a, s, l = t.calcDataBox(), f = r.viewBox, h = c.lastPos[0], p = c.lastPos[1], d = o.MINDRAG * r.pixelRatio, m = o.MINZOOM * r.pixelRatio; function g(e, r, n) { var i = Math.min(r, n), a = Math.max(r, n); i !== a ? ((l[e] = i), (l[e + 2] = a), (c.dataBox = l), t.setRanges(l)) : ((t.selectBox.selectBox = [0, 0, 1, 1]), t.glplot.setDirty()); } switch ( ((n *= r.pixelRatio), (i *= r.pixelRatio), (i = f[3] - f[1] - i), t.fullLayout.dragmode) ) { case "zoom": if (e) { var v = (n / (f[2] - f[0])) * (l[2] - l[0]) + l[0], y = (i / (f[3] - f[1])) * (l[3] - l[1]) + l[1]; c.boxInited || ((c.boxStart[0] = v), (c.boxStart[1] = y), (c.dragStart[0] = n), (c.dragStart[1] = i)), (c.boxEnd[0] = v), (c.boxEnd[1] = y), (c.boxInited = !0), c.boxEnabled || (c.boxStart[0] === c.boxEnd[0] && c.boxStart[1] === c.boxEnd[1]) || (c.boxEnabled = !0); var x = Math.abs(c.dragStart[0] - n) < m, b = Math.abs(c.dragStart[1] - i) < m; if ( !(function () { for ( var e = t.graphDiv._fullLayout ._axisConstraintGroups, r = t.xaxis._id, n = t.yaxis._id, i = 0; i < e.length; i++ ) if (-1 !== e[i][r]) { if (-1 !== e[i][n]) return !0; break; } return !1; })() || (x && b) ) x && (c.boxEnd[0] = c.boxStart[0]), b && (c.boxEnd[1] = c.boxStart[1]); else { (a = c.boxEnd[0] - c.boxStart[0]), (s = c.boxEnd[1] - c.boxStart[1]); var _ = (l[3] - l[1]) / (l[2] - l[0]); Math.abs(a * _) > Math.abs(s) ? ((c.boxEnd[1] = c.boxStart[1] + Math.abs(a) * _ * (s >= 0 ? 1 : -1)), c.boxEnd[1] < l[1] ? ((c.boxEnd[1] = l[1]), (c.boxEnd[0] = c.boxStart[0] + (l[1] - c.boxStart[1]) / Math.abs(_))) : c.boxEnd[1] > l[3] && ((c.boxEnd[1] = l[3]), (c.boxEnd[0] = c.boxStart[0] + (l[3] - c.boxStart[1]) / Math.abs(_)))) : ((c.boxEnd[0] = c.boxStart[0] + (Math.abs(s) / _) * (a >= 0 ? 1 : -1)), c.boxEnd[0] < l[0] ? ((c.boxEnd[0] = l[0]), (c.boxEnd[1] = c.boxStart[1] + (l[0] - c.boxStart[0]) * Math.abs(_))) : c.boxEnd[0] > l[2] && ((c.boxEnd[0] = l[2]), (c.boxEnd[1] = c.boxStart[1] + (l[2] - c.boxStart[0]) * Math.abs(_)))); } } else c.boxEnabled ? ((a = c.boxStart[0] !== c.boxEnd[0]), (s = c.boxStart[1] !== c.boxEnd[1]), a || s ? (a && (g(0, c.boxStart[0], c.boxEnd[0]), (t.xaxis.autorange = !1)), s && (g(1, c.boxStart[1], c.boxEnd[1]), (t.yaxis.autorange = !1)), t.relayoutCallback()) : t.glplot.setDirty(), (c.boxEnabled = !1), (c.boxInited = !1)) : c.boxInited && (c.boxInited = !1); break; case "pan": (c.boxEnabled = !1), (c.boxInited = !1), e ? (c.panning || ((c.dragStart[0] = n), (c.dragStart[1] = i)), Math.abs(c.dragStart[0] - n) < d && (n = c.dragStart[0]), Math.abs(c.dragStart[1] - i) < d && (i = c.dragStart[1]), (a = ((h - n) * (l[2] - l[0])) / (r.viewBox[2] - r.viewBox[0])), (s = ((p - i) * (l[3] - l[1])) / (r.viewBox[3] - r.viewBox[1])), (l[0] += a), (l[2] += a), (l[1] += s), (l[3] += s), t.setRanges(l), (c.panning = !0), (c.lastInputTime = Date.now()), u(), t.cameraChanged(), t.handleAnnotations()) : c.panning && ((c.panning = !1), t.relayoutCallback()); } (c.lastPos[0] = n), (c.lastPos[1] = i); } return ( (c.mouseListener = n(e, f)), e.addEventListener( "touchstart", function (t) { var r = a(t.changedTouches[0], e); f(0, r[0], r[1]), f(1, r[0], r[1]), t.preventDefault(); }, !!s && { passive: !1 }, ), e.addEventListener( "touchmove", function (t) { t.preventDefault(); var r = a(t.changedTouches[0], e); f(1, r[0], r[1]), t.preventDefault(); }, !!s && { passive: !1 }, ), e.addEventListener( "touchend", function (t) { f(0, c.lastPos[0], c.lastPos[1]), t.preventDefault(); }, !!s && { passive: !1 }, ), (c.wheelListener = i( e, function (e, n) { if (!t.scrollZoom) return !1; var i = t.calcDataBox(), a = r.viewBox, o = c.lastPos[0], s = c.lastPos[1], l = Math.exp((5 * n) / (a[3] - a[1])), f = (o / (a[2] - a[0])) * (i[2] - i[0]) + i[0], h = (s / (a[3] - a[1])) * (i[3] - i[1]) + i[1]; return ( (i[0] = (i[0] - f) * l + f), (i[2] = (i[2] - f) * l + f), (i[1] = (i[1] - h) * l + h), (i[3] = (i[3] - h) * l + h), t.setRanges(i), (c.lastInputTime = Date.now()), u(), t.cameraChanged(), t.handleAnnotations(), t.relayoutCallback(), !0 ); }, !0, )), c ); }; }, { "../cartesian/constants": 573, "has-passive-events": 229, "mouse-change": 241, "mouse-event-offset": 242, "mouse-wheel": 244, }, ], 604: [ function (t, e, r) { "use strict"; var n = t("../cartesian/axes"), i = t("../../lib/str2rgbarray"); function a(t) { (this.scene = t), (this.gl = t.gl), (this.pixelRatio = t.pixelRatio), (this.screenBox = [0, 0, 1, 1]), (this.viewBox = [0, 0, 1, 1]), (this.dataBox = [-1, -1, 1, 1]), (this.borderLineEnable = [!1, !1, !1, !1]), (this.borderLineWidth = [1, 1, 1, 1]), (this.borderLineColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.ticks = [[], []]), (this.tickEnable = [!0, !0, !1, !1]), (this.tickPad = [15, 15, 15, 15]), (this.tickAngle = [0, 0, 0, 0]), (this.tickColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.tickMarkLength = [0, 0, 0, 0]), (this.tickMarkWidth = [0, 0, 0, 0]), (this.tickMarkColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.labels = ["x", "y"]), (this.labelEnable = [!0, !0, !1, !1]), (this.labelAngle = [ 0, Math.PI / 2, 0, (3 * Math.PI) / 2, ]), (this.labelPad = [15, 15, 15, 15]), (this.labelSize = [12, 12]), (this.labelFont = ["sans-serif", "sans-serif"]), (this.labelColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.title = ""), (this.titleEnable = !0), (this.titleCenter = [0, 0, 0, 0]), (this.titleAngle = 0), (this.titleColor = [0, 0, 0, 1]), (this.titleFont = "sans-serif"), (this.titleSize = 18), (this.gridLineEnable = [!0, !0]), (this.gridLineColor = [ [0, 0, 0, 0.5], [0, 0, 0, 0.5], ]), (this.gridLineWidth = [1, 1]), (this.zeroLineEnable = [!0, !0]), (this.zeroLineWidth = [1, 1]), (this.zeroLineColor = [ [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.borderColor = [0, 0, 0, 0]), (this.backgroundColor = [0, 0, 0, 0]), (this.static = this.scene.staticPlot); } var o = a.prototype, s = ["xaxis", "yaxis"]; (o.merge = function (t) { var e, r, n, a, o, l, c, u, f, h, p; for ( this.titleEnable = !1, this.backgroundColor = i(t.plot_bgcolor), h = 0; h < 2; ++h ) { var d = (e = s[h]).charAt(0); for ( n = (r = t[this.scene[e]._name]).title.text === this.scene.fullLayout._dfltTitle[d] ? "" : r.title.text, p = 0; p <= 2; p += 2 ) (this.labelEnable[h + p] = !1), (this.labels[h + p] = n), (this.labelColor[h + p] = i(r.title.font.color)), (this.labelFont[h + p] = r.title.font.family), (this.labelSize[h + p] = r.title.font.size), (this.labelPad[h + p] = this.getLabelPad(e, r)), (this.tickEnable[h + p] = !1), (this.tickColor[h + p] = i((r.tickfont || {}).color)), (this.tickAngle[h + p] = "auto" === r.tickangle ? 0 : (Math.PI * -r.tickangle) / 180), (this.tickPad[h + p] = this.getTickPad(r)), (this.tickMarkLength[h + p] = 0), (this.tickMarkWidth[h + p] = r.tickwidth || 0), (this.tickMarkColor[h + p] = i(r.tickcolor)), (this.borderLineEnable[h + p] = !1), (this.borderLineColor[h + p] = i(r.linecolor)), (this.borderLineWidth[h + p] = r.linewidth || 0); (c = this.hasSharedAxis(r)), (o = this.hasAxisInDfltPos(e, r) && !c), (l = this.hasAxisInAltrPos(e, r) && !c), (a = r.mirror || !1), (u = c ? -1 !== String(a).indexOf("all") : !!a), (f = c ? "allticks" === a : -1 !== String(a).indexOf("ticks")), o ? (this.labelEnable[h] = !0) : l && (this.labelEnable[h + 2] = !0), o ? (this.tickEnable[h] = r.showticklabels) : l && (this.tickEnable[h + 2] = r.showticklabels), (o || u) && (this.borderLineEnable[h] = r.showline), (l || u) && (this.borderLineEnable[h + 2] = r.showline), (o || f) && (this.tickMarkLength[h] = this.getTickMarkLength(r)), (l || f) && (this.tickMarkLength[h + 2] = this.getTickMarkLength(r)), (this.gridLineEnable[h] = r.showgrid), (this.gridLineColor[h] = i(r.gridcolor)), (this.gridLineWidth[h] = r.gridwidth), (this.zeroLineEnable[h] = r.zeroline), (this.zeroLineColor[h] = i(r.zerolinecolor)), (this.zeroLineWidth[h] = r.zerolinewidth); } }), (o.hasSharedAxis = function (t) { var e = this.scene, r = e.fullLayout._subplots.gl2d; return 0 !== n.findSubplotsWithAxis(r, t).indexOf(e.id); }), (o.hasAxisInDfltPos = function (t, e) { var r = e.side; return "xaxis" === t ? "bottom" === r : "yaxis" === t ? "left" === r : void 0; }), (o.hasAxisInAltrPos = function (t, e) { var r = e.side; return "xaxis" === t ? "top" === r : "yaxis" === t ? "right" === r : void 0; }), (o.getLabelPad = function (t, e) { var r = e.title.font.size, n = e.showticklabels; return "xaxis" === t ? "top" === e.side ? r * (1.5 + (n ? 1 : 0)) - 10 : r * (1.5 + (n ? 0.5 : 0)) - 10 : "yaxis" === t ? "right" === e.side ? 10 + r * (1.5 + (n ? 1 : 0.5)) : 10 + r * (1.5 + (n ? 0.5 : 0)) : void 0; }), (o.getTickPad = function (t) { return "outside" === t.ticks ? 10 + t.ticklen : 15; }), (o.getTickMarkLength = function (t) { if (!t.ticks) return 0; var e = t.ticklen; return "inside" === t.ticks ? -e : e; }), (e.exports = function (t) { return new a(t); }); }, { "../../lib/str2rgbarray": 540, "../cartesian/axes": 566 }, ], 605: [ function (t, e, r) { "use strict"; var n = t("../../plot_api/edit_types").overrideAll, i = t("./scene2d"), a = t("../layout_attributes"), o = t("../../constants/xmlns_namespaces"), s = t("../cartesian/constants"), l = t("../cartesian"), c = t("../../components/fx/layout_attributes"), u = t("../get_data").getSubplotData; (r.name = "gl2d"), (r.attr = ["xaxis", "yaxis"]), (r.idRoot = ["x", "y"]), (r.idRegex = s.idRegex), (r.attrRegex = s.attrRegex), (r.attributes = t("../cartesian/attributes")), (r.supplyLayoutDefaults = function (t, e, r) { e._has("cartesian") || l.supplyLayoutDefaults(t, e, r); }), (r.layoutAttrOverrides = n( l.layoutAttributes, "plot", "from-root", )), (r.baseLayoutAttrOverrides = n( { plot_bgcolor: a.plot_bgcolor, hoverlabel: c.hoverlabel, }, "plot", "nested", )), (r.plot = function (t) { for ( var e = t._fullLayout, r = t._fullData, n = e._subplots.gl2d, a = 0; a < n.length; a++ ) { var o = n[a], s = e._plots[o], l = u(r, "gl2d", o), c = s._scene2d; void 0 === c && ((c = new i( { id: o, graphDiv: t, container: t.querySelector(".gl-container"), staticPlot: t._context.staticPlot, plotGlPixelRatio: t._context.plotGlPixelRatio, }, e, )), (s._scene2d = c)), c.plot(l, t.calcdata, e, t.layout); } }), (r.clean = function (t, e, r, n) { for ( var i = n._subplots.gl2d || [], a = 0; a < i.length; a++ ) { var o = i[a], s = n._plots[o]; if (s._scene2d) { var c = u(t, "gl2d", o); 0 === c.length && (s._scene2d.destroy(), delete n._plots[o]); } } l.clean.apply(this, arguments); }), (r.drawFramework = function (t) { t._context.staticPlot || l.drawFramework(t); }), (r.toSVG = function (t) { for ( var e = t._fullLayout, r = e._subplots.gl2d, n = 0; n < r.length; n++ ) { var i = e._plots[r[n]]._scene2d, a = i.toImage("png"); e._glimages.append("svg:image").attr({ xmlns: o.svg, "xlink:href": a, x: 0, y: 0, width: "100%", height: "100%", preserveAspectRatio: "none", }), i.destroy(); } }), (r.updateFx = function (t) { for ( var e = t._fullLayout, r = e._subplots.gl2d, n = 0; n < r.length; n++ ) { e._plots[r[n]]._scene2d.updateFx(e.dragmode); } }); }, { "../../components/fx/layout_attributes": 408, "../../constants/xmlns_namespaces": 492, "../../plot_api/edit_types": 548, "../cartesian": 578, "../cartesian/attributes": 564, "../cartesian/constants": 573, "../get_data": 602, "../layout_attributes": 619, "./scene2d": 606, }, ], 606: [ function (t, e, r) { "use strict"; var n, i, a = t("../../registry"), o = t("../../plots/cartesian/axes"), s = t("../../components/fx"), l = t("../../../stackgl_modules").gl_plot2d, c = t("../../../stackgl_modules").gl_spikes2d, u = t("../../../stackgl_modules").gl_select_box, f = t("webgl-context"), h = t("./convert"), p = t("./camera"), d = t("../../lib/show_no_webgl_msg"), m = t("../cartesian/constraints"), g = m.enforce, v = m.clean, y = t("../cartesian/autorange").doAutoRange, x = t("../../components/dragelement/helpers"), b = x.drawMode, _ = x.selectMode, w = ["xaxis", "yaxis"], T = t("../cartesian/constants").SUBPLOT_PATTERN; function k(t, e) { (this.container = t.container), (this.graphDiv = t.graphDiv), (this.pixelRatio = t.plotGlPixelRatio || window.devicePixelRatio), (this.id = t.id), (this.staticPlot = !!t.staticPlot), (this.scrollZoom = this.graphDiv._context._scrollZoom.cartesian), (this.fullData = null), this.updateRefs(e), this.makeFramework(), this.stopped || ((this.glplotOptions = h(this)), this.glplotOptions.merge(e), (this.glplot = l(this.glplotOptions)), (this.camera = p(this)), (this.traces = {}), (this.spikes = c(this.glplot)), (this.selectBox = u(this.glplot, { innerFill: !1, outerFill: !0, })), (this.lastButtonState = 0), (this.pickResult = null), (this.isMouseOver = !0), (this.stopped = !1), (this.redraw = this.draw.bind(this)), this.redraw()); } e.exports = k; var A = k.prototype; (A.makeFramework = function () { if (this.staticPlot) { if ( !( i || ((n = document.createElement("canvas")), (i = f({ canvas: n, preserveDrawingBuffer: !1, premultipliedAlpha: !0, antialias: !0, }))) ) ) throw new Error( "Error creating static canvas/context for image server", ); (this.canvas = n), (this.gl = i); } else { var t = this.container.querySelector(".gl-canvas-focus"), e = f({ canvas: t, preserveDrawingBuffer: !0, premultipliedAlpha: !0, }); if (!e) return d(this), void (this.stopped = !0); (this.canvas = t), (this.gl = e); } var r = this.canvas; (r.style.width = "100%"), (r.style.height = "100%"), (r.style.position = "absolute"), (r.style.top = "0px"), (r.style.left = "0px"), (r.style["pointer-events"] = "none"), this.updateSize(r); var a = (this.svgContainer = document.createElementNS( "http://www.w3.org/2000/svg", "svg", )); (a.style.position = "absolute"), (a.style.top = a.style.left = "0px"), (a.style.width = a.style.height = "100%"), (a.style["z-index"] = 20), (a.style["pointer-events"] = "none"); var o = (this.mouseContainer = document.createElement("div")); (o.style.position = "absolute"), (o.style["pointer-events"] = "auto"), (this.pickCanvas = this.container.querySelector(".gl-canvas-pick")); var s = this.container; s.appendChild(a), s.appendChild(o); var l = this; o.addEventListener("mouseout", function () { (l.isMouseOver = !1), l.unhover(); }), o.addEventListener("mouseover", function () { l.isMouseOver = !0; }); }), (A.toImage = function (t) { t || (t = "png"), (this.stopped = !0), this.staticPlot && this.container.appendChild(n), this.updateSize(this.canvas); var e = this.glplot.gl, r = e.drawingBufferWidth, i = e.drawingBufferHeight; e.clearColor(1, 1, 1, 0), e.clear(e.COLOR_BUFFER_BIT | e.DEPTH_BUFFER_BIT), this.glplot.setDirty(), this.glplot.draw(), e.bindFramebuffer(e.FRAMEBUFFER, null); var a = new Uint8Array(r * i * 4); e.readPixels(0, 0, r, i, e.RGBA, e.UNSIGNED_BYTE, a); for (var o = 0, s = i - 1; o < s; ++o, --s) for (var l = 0; l < r; ++l) for (var c = 0; c < 4; ++c) { var u = a[4 * (r * o + l) + c]; (a[4 * (r * o + l) + c] = a[4 * (r * s + l) + c]), (a[4 * (r * s + l) + c] = u); } var f = document.createElement("canvas"); (f.width = r), (f.height = i); var h, p = f.getContext("2d", { willReadFrequently: !0 }), d = p.createImageData(r, i); switch ((d.data.set(a), p.putImageData(d, 0, 0), t)) { case "jpeg": h = f.toDataURL("image/jpeg"); break; case "webp": h = f.toDataURL("image/webp"); break; default: h = f.toDataURL("image/png"); } return ( this.staticPlot && this.container.removeChild(n), h ); }), (A.updateSize = function (t) { t || (t = this.canvas); var e = this.pixelRatio, r = this.fullLayout, n = r.width, i = r.height, a = 0 | Math.ceil(e * n), o = 0 | Math.ceil(e * i); return ( (t.width === a && t.height === o) || ((t.width = a), (t.height = o)), t ); }), (A.computeTickMarks = function () { this.xaxis.setScale(), this.yaxis.setScale(); for ( var t = [ o.calcTicks(this.xaxis), o.calcTicks(this.yaxis), ], e = 0; e < 2; ++e ) for (var r = 0; r < t[e].length; ++r) t[e][r].text = t[e][r].text + ""; return t; }), (A.updateRefs = function (t) { this.fullLayout = t; var e = this.id.match(T), r = "xaxis" + e[1], n = "yaxis" + e[2]; (this.xaxis = this.fullLayout[r]), (this.yaxis = this.fullLayout[n]); }), (A.relayoutCallback = function () { var t = this.graphDiv, e = this.xaxis, r = this.yaxis, n = t.layout, i = {}, o = (i[e._name + ".range"] = e.range.slice()), s = (i[r._name + ".range"] = r.range.slice()); (i[e._name + ".autorange"] = e.autorange), (i[r._name + ".autorange"] = r.autorange), a.call( "_storeDirectGUIEdit", t.layout, t._fullLayout._preGUI, i, ); var l = n[e._name]; (l.range = o), (l.autorange = e.autorange); var c = n[r._name]; (c.range = s), (c.autorange = r.autorange), (i.lastInputTime = this.camera.lastInputTime), t.emit("plotly_relayout", i); }), (A.cameraChanged = function () { var t = this.camera; this.glplot.setDataBox(this.calcDataBox()); var e = this.computeTickMarks(); (function (t, e) { for (var r = 0; r < 2; ++r) { var n = t[r], i = e[r]; if (n.length !== i.length) return !0; for (var a = 0; a < n.length; ++a) if (n[a].x !== i[a].x) return !0; } return !1; })(e, this.glplotOptions.ticks) && ((this.glplotOptions.ticks = e), (this.glplotOptions.dataBox = t.dataBox), this.glplot.update(this.glplotOptions), this.handleAnnotations()); }), (A.handleAnnotations = function () { for ( var t = this.graphDiv, e = this.fullLayout.annotations, r = 0; r < e.length; r++ ) { var n = e[r]; n.xref === this.xaxis._id && n.yref === this.yaxis._id && a.getComponentMethod("annotations", "drawOne")(t, r); } }), (A.destroy = function () { if (this.glplot) { var t = this.traces; t && Object.keys(t).map(function (e) { t[e].dispose(), delete t[e]; }), this.glplot.dispose(), this.container.removeChild(this.svgContainer), this.container.removeChild(this.mouseContainer), (this.fullData = null), (this.glplot = null), (this.stopped = !0), (this.camera.mouseListener.enabled = !1), this.mouseContainer.removeEventListener( "wheel", this.camera.wheelListener, ), (this.camera = null); } }), (A.plot = function (t, e, r) { var n = this.glplot; this.updateRefs(r), this.xaxis.clearCalc(), this.yaxis.clearCalc(), this.updateTraces(t, e), this.updateFx(r.dragmode); var i = r.width, a = r.height; this.updateSize(this.canvas); var o = this.glplotOptions; o.merge(r), (o.screenBox = [0, 0, i, a]); var s = { _fullLayout: { _axisConstraintGroups: r._axisConstraintGroups, xaxis: this.xaxis, yaxis: this.yaxis, _size: r._size, }, }; v(s, this.xaxis), v(s, this.yaxis); var l, c, u = r._size, f = this.xaxis.domain, h = this.yaxis.domain; for ( o.viewBox = [ u.l + f[0] * u.w, u.b + h[0] * u.h, i - u.r - (1 - f[1]) * u.w, a - u.t - (1 - h[1]) * u.h, ], this.mouseContainer.style.width = u.w * (f[1] - f[0]) + "px", this.mouseContainer.style.height = u.h * (h[1] - h[0]) + "px", this.mouseContainer.height = u.h * (h[1] - h[0]), this.mouseContainer.style.left = u.l + f[0] * u.w + "px", this.mouseContainer.style.top = u.t + (1 - h[1]) * u.h + "px", c = 0; c < 2; ++c ) ((l = this[w[c]])._length = o.viewBox[c + 2] - o.viewBox[c]), y(this.graphDiv, l), l.setScale(); g(s), (o.ticks = this.computeTickMarks()), (o.dataBox = this.calcDataBox()), o.merge(r), n.update(o), this.glplot.draw(); }), (A.calcDataBox = function () { var t = this.xaxis, e = this.yaxis, r = t.range, n = e.range, i = t.r2l, a = e.r2l; return [i(r[0]), a(n[0]), i(r[1]), a(n[1])]; }), (A.setRanges = function (t) { var e = this.xaxis, r = this.yaxis, n = e.l2r, i = r.l2r; (e.range = [n(t[0]), n(t[2])]), (r.range = [i(t[1]), i(t[3])]); }), (A.updateTraces = function (t, e) { var r, n, i, a = Object.keys(this.traces); this.fullData = t; t: for (r = 0; r < a.length; r++) { var o = a[r], s = this.traces[o]; for (n = 0; n < t.length; n++) if ((i = t[n]).uid === o && i.type === s.type) continue t; s.dispose(), delete this.traces[o]; } for (r = 0; r < t.length; r++) { i = t[r]; var l = e[r], c = this.traces[i.uid]; c ? c.update(i, l) : ((c = i._module.plot(this, i, l)), (this.traces[i.uid] = c)); } this.glplot.objects.sort(function (t, e) { return t._trace.index - e._trace.index; }); }), (A.updateFx = function (t) { _(t) || b(t) ? ((this.pickCanvas.style["pointer-events"] = "none"), (this.mouseContainer.style["pointer-events"] = "none")) : ((this.pickCanvas.style["pointer-events"] = "auto"), (this.mouseContainer.style["pointer-events"] = "auto")), (this.mouseContainer.style.cursor = "pan" === t ? "move" : "zoom" === t ? "crosshair" : null); }), (A.emitPointAction = function (t, e) { for ( var r, n = t.trace.uid, i = t.pointIndex, a = 0; a < this.fullData.length; a++ ) this.fullData[a].uid === n && (r = this.fullData[a]); var o = { x: t.traceCoord[0], y: t.traceCoord[1], curveNumber: r.index, pointNumber: i, data: r._input, fullData: this.fullData, xaxis: this.xaxis, yaxis: this.yaxis, }; s.appendArrayPointValue(o, r, i), this.graphDiv.emit(e, { points: [o] }); }), (A.draw = function () { if (!this.stopped) { requestAnimationFrame(this.redraw); var t = this.glplot, e = this.camera, r = e.mouseListener, n = 1 === this.lastButtonState && 0 === r.buttons, i = this.fullLayout; (this.lastButtonState = r.buttons), this.cameraChanged(); var a, o = r.x * t.pixelRatio, l = this.canvas.height - t.pixelRatio * r.y; if (e.boxEnabled && "zoom" === i.dragmode) { this.selectBox.enabled = !0; for ( var c = (this.selectBox.selectBox = [ Math.min(e.boxStart[0], e.boxEnd[0]), Math.min(e.boxStart[1], e.boxEnd[1]), Math.max(e.boxStart[0], e.boxEnd[0]), Math.max(e.boxStart[1], e.boxEnd[1]), ]), u = 0; u < 2; u++ ) e.boxStart[u] === e.boxEnd[u] && ((c[u] = t.dataBox[u]), (c[u + 2] = t.dataBox[u + 2])); t.setDirty(); } else if (!e.panning && this.isMouseOver) { this.selectBox.enabled = !1; var f = i._size, h = this.xaxis.domain, p = this.yaxis.domain, d = (a = t.pick( o / t.pixelRatio + f.l + h[0] * f.w, l / t.pixelRatio - (f.t + (1 - p[1]) * f.h), )) && a.object._trace.handlePick(a); if ( (d && n && this.emitPointAction(d, "plotly_click"), a && "skip" !== a.object._trace.hoverinfo && i.hovermode && d && (!this.lastPickResult || this.lastPickResult.traceUid !== d.trace.uid || this.lastPickResult.dataCoord[0] !== d.dataCoord[0] || this.lastPickResult.dataCoord[1] !== d.dataCoord[1])) ) { var m = d; (this.lastPickResult = { traceUid: d.trace ? d.trace.uid : null, dataCoord: d.dataCoord.slice(), }), this.spikes.update({ center: a.dataCoord }), (m.screenCoord = [ (((t.viewBox[2] - t.viewBox[0]) * (a.dataCoord[0] - t.dataBox[0])) / (t.dataBox[2] - t.dataBox[0]) + t.viewBox[0]) / t.pixelRatio, (this.canvas.height - ((t.viewBox[3] - t.viewBox[1]) * (a.dataCoord[1] - t.dataBox[1])) / (t.dataBox[3] - t.dataBox[1]) - t.viewBox[1]) / t.pixelRatio, ]), this.emitPointAction(d, "plotly_hover"); var g = this.fullData[m.trace.index] || {}, v = m.pointIndex, y = s.castHoverinfo(g, i, v); if (y && "all" !== y) { var x = y.split("+"); -1 === x.indexOf("x") && (m.traceCoord[0] = void 0), -1 === x.indexOf("y") && (m.traceCoord[1] = void 0), -1 === x.indexOf("z") && (m.traceCoord[2] = void 0), -1 === x.indexOf("text") && (m.textLabel = void 0), -1 === x.indexOf("name") && (m.name = void 0); } s.loneHover( { x: m.screenCoord[0], y: m.screenCoord[1], xLabel: this.hoverFormatter( "xaxis", m.traceCoord[0], ), yLabel: this.hoverFormatter( "yaxis", m.traceCoord[1], ), zLabel: m.traceCoord[2], text: m.textLabel, name: m.name, color: s.castHoverOption(g, v, "bgcolor") || m.color, borderColor: s.castHoverOption( g, v, "bordercolor", ), fontFamily: s.castHoverOption( g, v, "font.family", ), fontSize: s.castHoverOption(g, v, "font.size"), fontColor: s.castHoverOption( g, v, "font.color", ), nameLength: s.castHoverOption( g, v, "namelength", ), textAlign: s.castHoverOption(g, v, "align"), }, { container: this.svgContainer, gd: this.graphDiv, }, ); } } a || this.unhover(), t.draw(); } }), (A.unhover = function () { this.lastPickResult && (this.spikes.update({}), (this.lastPickResult = null), this.graphDiv.emit("plotly_unhover"), s.loneUnhover(this.svgContainer)); }), (A.hoverFormatter = function (t, e) { if (void 0 !== e) { var r = this[t]; return o.tickText(r, r.c2l(e), "hover").text; } }); }, { "../../../stackgl_modules": 1133, "../../components/dragelement/helpers": 385, "../../components/fx": 407, "../../lib/show_no_webgl_msg": 537, "../../plots/cartesian/axes": 566, "../../registry": 647, "../cartesian/autorange": 565, "../cartesian/constants": 573, "../cartesian/constraints": 574, "./camera": 603, "./convert": 604, "webgl-context": 332, }, ], 607: [ function (t, e, r) { "use strict"; var n = t("../../plot_api/edit_types").overrideAll, i = t("../../components/fx/layout_attributes"), a = t("./scene"), o = t("../get_data").getSubplotData, s = t("../../lib"), l = t("../../constants/xmlns_namespaces"); (r.name = "gl3d"), (r.attr = "scene"), (r.idRoot = "scene"), (r.idRegex = r.attrRegex = s.counterRegex("scene")), (r.attributes = t("./layout/attributes")), (r.layoutAttributes = t("./layout/layout_attributes")), (r.baseLayoutAttrOverrides = n( { hoverlabel: i.hoverlabel }, "plot", "nested", )), (r.supplyLayoutDefaults = t("./layout/defaults")), (r.plot = function (t) { for ( var e = t._fullLayout, r = t._fullData, n = e._subplots.gl3d, i = 0; i < n.length; i++ ) { var s = n[i], l = o(r, "gl3d", s), c = e[s], u = c.camera, f = c._scene; f || ((f = new a( { id: s, graphDiv: t, container: t.querySelector(".gl-container"), staticPlot: t._context.staticPlot, plotGlPixelRatio: t._context.plotGlPixelRatio, camera: u, }, e, )), (c._scene = f)), f.viewInitial || (f.viewInitial = { up: { x: u.up.x, y: u.up.y, z: u.up.z }, eye: { x: u.eye.x, y: u.eye.y, z: u.eye.z }, center: { x: u.center.x, y: u.center.y, z: u.center.z, }, }), f.plot(l, e, t.layout); } }), (r.clean = function (t, e, r, n) { for ( var i = n._subplots.gl3d || [], a = 0; a < i.length; a++ ) { var o = i[a]; !e[o] && n[o]._scene && (n[o]._scene.destroy(), n._infolayer && n._infolayer .selectAll(".annotation-" + o) .remove()); } }), (r.toSVG = function (t) { for ( var e = t._fullLayout, r = e._subplots.gl3d, n = e._size, i = 0; i < r.length; i++ ) { var a = e[r[i]], o = a.domain, s = a._scene, c = s.toImage("png"); e._glimages.append("svg:image").attr({ xmlns: l.svg, "xlink:href": c, x: n.l + n.w * o.x[0], y: n.t + n.h * (1 - o.y[1]), width: n.w * (o.x[1] - o.x[0]), height: n.h * (o.y[1] - o.y[0]), preserveAspectRatio: "none", }), s.destroy(); } }), (r.cleanId = function (t) { if (t.match(/^scene[0-9]*$/)) { var e = t.substr(5); return "1" === e && (e = ""), "scene" + e; } }), (r.updateFx = function (t) { for ( var e = t._fullLayout, r = e._subplots.gl3d, n = 0; n < r.length; n++ ) { e[r[n]]._scene.updateFx(e.dragmode, e.hovermode); } }); }, { "../../components/fx/layout_attributes": 408, "../../constants/xmlns_namespaces": 492, "../../lib": 515, "../../plot_api/edit_types": 548, "../get_data": 602, "./layout/attributes": 608, "./layout/defaults": 612, "./layout/layout_attributes": 613, "./scene": 617, }, ], 608: [ function (t, e, r) { "use strict"; e.exports = { scene: { valType: "subplotid", dflt: "scene", editType: "calc+clearAxisTypes", }, }; }, {}, ], 609: [ function (t, e, r) { "use strict"; var n = t("../../../components/color"), i = t("../../cartesian/layout_attributes"), a = t("../../../lib/extend").extendFlat, o = t("../../../plot_api/edit_types").overrideAll; e.exports = o( { visible: i.visible, showspikes: { valType: "boolean", dflt: !0 }, spikesides: { valType: "boolean", dflt: !0 }, spikethickness: { valType: "number", min: 0, dflt: 2 }, spikecolor: { valType: "color", dflt: n.defaultLine }, showbackground: { valType: "boolean", dflt: !1 }, backgroundcolor: { valType: "color", dflt: "rgba(204, 204, 204, 0.5)", }, showaxeslabels: { valType: "boolean", dflt: !0 }, color: i.color, categoryorder: i.categoryorder, categoryarray: i.categoryarray, title: { text: i.title.text, font: i.title.font }, type: a({}, i.type, { values: ["-", "linear", "log", "date", "category"], }), autotypenumbers: i.autotypenumbers, autorange: i.autorange, rangemode: i.rangemode, range: a({}, i.range, { items: [ { valType: "any", editType: "plot", impliedEdits: { "^autorange": !1 }, }, { valType: "any", editType: "plot", impliedEdits: { "^autorange": !1 }, }, ], anim: !1, }), tickmode: i.tickmode, nticks: i.nticks, tick0: i.tick0, dtick: i.dtick, tickvals: i.tickvals, ticktext: i.ticktext, ticks: i.ticks, mirror: i.mirror, ticklen: i.ticklen, tickwidth: i.tickwidth, tickcolor: i.tickcolor, showticklabels: i.showticklabels, tickfont: i.tickfont, tickangle: i.tickangle, tickprefix: i.tickprefix, showtickprefix: i.showtickprefix, ticksuffix: i.ticksuffix, showticksuffix: i.showticksuffix, showexponent: i.showexponent, exponentformat: i.exponentformat, minexponent: i.minexponent, separatethousands: i.separatethousands, tickformat: i.tickformat, tickformatstops: i.tickformatstops, hoverformat: i.hoverformat, showline: i.showline, linecolor: i.linecolor, linewidth: i.linewidth, showgrid: i.showgrid, gridcolor: a({}, i.gridcolor, { dflt: "rgb(204, 204, 204)", }), gridwidth: i.gridwidth, zeroline: i.zeroline, zerolinecolor: i.zerolinecolor, zerolinewidth: i.zerolinewidth, _deprecated: { title: i._deprecated.title, titlefont: i._deprecated.titlefont, }, }, "plot", "from-root", ); }, { "../../../components/color": 367, "../../../lib/extend": 505, "../../../plot_api/edit_types": 548, "../../cartesian/layout_attributes": 579, }, ], 610: [ function (t, e, r) { "use strict"; var n = t("tinycolor2").mix, i = t("../../../lib"), a = t("../../../plot_api/plot_template"), o = t("./axis_attributes"), s = t("../../cartesian/type_defaults"), l = t("../../cartesian/axis_defaults"), c = ["xaxis", "yaxis", "zaxis"]; e.exports = function (t, e, r) { var u, f; function h(t, e) { return i.coerce(u, f, o, t, e); } for (var p = 0; p < c.length; p++) { var d = c[p]; (u = t[d] || {}), ((f = a.newContainer(e, d))._id = d[0] + r.scene), (f._name = d), s(u, f, h, r), l( u, f, h, { font: r.font, letter: d[0], data: r.data, showGrid: !0, noTickson: !0, noTicklabelmode: !0, noTicklabelstep: !0, noTicklabelposition: !0, noTicklabeloverflow: !0, bgColor: r.bgColor, calendar: r.calendar, }, r.fullLayout, ), h( "gridcolor", n(f.color, r.bgColor, 13600 / 187).toRgbString(), ), h("title.text", d[0]), (f.setScale = i.noop), h("showspikes") && (h("spikesides"), h("spikethickness"), h("spikecolor", f.color)), h("showaxeslabels"), h("showbackground") && h("backgroundcolor"); } }; }, { "../../../lib": 515, "../../../plot_api/plot_template": 555, "../../cartesian/axis_defaults": 568, "../../cartesian/type_defaults": 591, "./axis_attributes": 609, tinycolor2: 313, }, ], 611: [ function (t, e, r) { "use strict"; var n = t("../../../lib/str2rgbarray"), i = t("../../../lib"), a = ["xaxis", "yaxis", "zaxis"]; function o() { (this.bounds = [ [-10, -10, -10], [10, 10, 10], ]), (this.ticks = [[], [], []]), (this.tickEnable = [!0, !0, !0]), (this.tickFont = [ "sans-serif", "sans-serif", "sans-serif", ]), (this.tickSize = [12, 12, 12]), (this.tickAngle = [0, 0, 0]), (this.tickColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.tickPad = [18, 18, 18]), (this.labels = ["x", "y", "z"]), (this.labelEnable = [!0, !0, !0]), (this.labelFont = [ "Open Sans", "Open Sans", "Open Sans", ]), (this.labelSize = [20, 20, 20]), (this.labelColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.labelPad = [30, 30, 30]), (this.lineEnable = [!0, !0, !0]), (this.lineMirror = [!1, !1, !1]), (this.lineWidth = [1, 1, 1]), (this.lineColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.lineTickEnable = [!0, !0, !0]), (this.lineTickMirror = [!1, !1, !1]), (this.lineTickLength = [10, 10, 10]), (this.lineTickWidth = [1, 1, 1]), (this.lineTickColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.gridEnable = [!0, !0, !0]), (this.gridWidth = [1, 1, 1]), (this.gridColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.zeroEnable = [!0, !0, !0]), (this.zeroLineColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.zeroLineWidth = [2, 2, 2]), (this.backgroundEnable = [!0, !0, !0]), (this.backgroundColor = [ [0.8, 0.8, 0.8, 0.5], [0.8, 0.8, 0.8, 0.5], [0.8, 0.8, 0.8, 0.5], ]), (this._defaultTickPad = this.tickPad.slice()), (this._defaultLabelPad = this.labelPad.slice()), (this._defaultLineTickLength = this.lineTickLength.slice()); } (o.prototype.merge = function (t, e) { for (var r = 0; r < 3; ++r) { var o = e[a[r]]; o.visible ? ((this.labels[r] = t._meta ? i.templateString(o.title.text, t._meta) : o.title.text), "font" in o.title && (o.title.font.color && (this.labelColor[r] = n(o.title.font.color)), o.title.font.family && (this.labelFont[r] = o.title.font.family), o.title.font.size && (this.labelSize[r] = o.title.font.size)), "showline" in o && (this.lineEnable[r] = o.showline), "linecolor" in o && (this.lineColor[r] = n(o.linecolor)), "linewidth" in o && (this.lineWidth[r] = o.linewidth), "showgrid" in o && (this.gridEnable[r] = o.showgrid), "gridcolor" in o && (this.gridColor[r] = n(o.gridcolor)), "gridwidth" in o && (this.gridWidth[r] = o.gridwidth), "log" === o.type ? (this.zeroEnable[r] = !1) : "zeroline" in o && (this.zeroEnable[r] = o.zeroline), "zerolinecolor" in o && (this.zeroLineColor[r] = n(o.zerolinecolor)), "zerolinewidth" in o && (this.zeroLineWidth[r] = o.zerolinewidth), "ticks" in o && o.ticks ? (this.lineTickEnable[r] = !0) : (this.lineTickEnable[r] = !1), "ticklen" in o && (this.lineTickLength[r] = this._defaultLineTickLength[r] = o.ticklen), "tickcolor" in o && (this.lineTickColor[r] = n(o.tickcolor)), "tickwidth" in o && (this.lineTickWidth[r] = o.tickwidth), "tickangle" in o && (this.tickAngle[r] = "auto" === o.tickangle ? -3600 : (Math.PI * -o.tickangle) / 180), "showticklabels" in o && (this.tickEnable[r] = o.showticklabels), "tickfont" in o && (o.tickfont.color && (this.tickColor[r] = n(o.tickfont.color)), o.tickfont.family && (this.tickFont[r] = o.tickfont.family), o.tickfont.size && (this.tickSize[r] = o.tickfont.size)), "mirror" in o ? -1 !== ["ticks", "all", "allticks"].indexOf(o.mirror) ? ((this.lineTickMirror[r] = !0), (this.lineMirror[r] = !0)) : !0 === o.mirror ? ((this.lineTickMirror[r] = !1), (this.lineMirror[r] = !0)) : ((this.lineTickMirror[r] = !1), (this.lineMirror[r] = !1)) : (this.lineMirror[r] = !1), "showbackground" in o && !1 !== o.showbackground ? ((this.backgroundEnable[r] = !0), (this.backgroundColor[r] = n(o.backgroundcolor))) : (this.backgroundEnable[r] = !1)) : ((this.tickEnable[r] = !1), (this.labelEnable[r] = !1), (this.lineEnable[r] = !1), (this.lineTickEnable[r] = !1), (this.gridEnable[r] = !1), (this.zeroEnable[r] = !1), (this.backgroundEnable[r] = !1)); } }), (e.exports = function (t, e) { var r = new o(); return r.merge(t, e), r; }); }, { "../../../lib": 515, "../../../lib/str2rgbarray": 540 }, ], 612: [ function (t, e, r) { "use strict"; var n = t("../../../lib"), i = t("../../../components/color"), a = t("../../../registry"), o = t("../../subplot_defaults"), s = t("./axis_defaults"), l = t("./layout_attributes"), c = t("../../get_data").getSubplotData; function u(t, e, r, n) { for ( var o = r("bgcolor"), l = i.combine(o, n.paper_bgcolor), u = ["up", "center", "eye"], f = 0; f < u.length; f++ ) r("camera." + u[f] + ".x"), r("camera." + u[f] + ".y"), r("camera." + u[f] + ".z"); r("camera.projection.type"); var h = !!r("aspectratio.x") && !!r("aspectratio.y") && !!r("aspectratio.z"), p = r("aspectmode", h ? "manual" : "auto"); h || ((t.aspectratio = e.aspectratio = { x: 1, y: 1, z: 1 }), "manual" === p && (e.aspectmode = "auto"), (t.aspectmode = e.aspectmode)); var d = c(n.fullData, "gl3d", n.id); s(t, e, { font: n.font, scene: n.id, data: d, bgColor: l, calendar: n.calendar, autotypenumbersDflt: n.autotypenumbersDflt, fullLayout: n.fullLayout, }), a.getComponentMethod("annotations3d", "handleDefaults")( t, e, n, ); var m = n.getDfltFromLayout("dragmode"); if (!1 !== m && !m) if (((m = "orbit"), t.camera && t.camera.up)) { var g = t.camera.up.x, v = t.camera.up.y, y = t.camera.up.z; 0 !== y && (g && v && y ? y / Math.sqrt(g * g + v * v + y * y) > 0.999 && (m = "turntable") : (m = "turntable")); } else m = "turntable"; r("dragmode", m), r("hovermode", n.getDfltFromLayout("hovermode")); } e.exports = function (t, e, r) { var i = e._basePlotModules.length > 1; o(t, e, r, { type: "gl3d", attributes: l, handleDefaults: u, fullLayout: e, font: e.font, fullData: r, getDfltFromLayout: function (e) { if (!i) return n.validate(t[e], l[e]) ? t[e] : void 0; }, autotypenumbersDflt: e.autotypenumbers, paper_bgcolor: e.paper_bgcolor, calendar: e.calendar, }); }; }, { "../../../components/color": 367, "../../../lib": 515, "../../../registry": 647, "../../get_data": 602, "../../subplot_defaults": 641, "./axis_defaults": 610, "./layout_attributes": 613, }, ], 613: [ function (t, e, r) { "use strict"; var n = t("./axis_attributes"), i = t("../../domain").attributes, a = t("../../../lib/extend").extendFlat, o = t("../../../lib").counterRegex; function s(t, e, r) { return { x: { valType: "number", dflt: t, editType: "camera" }, y: { valType: "number", dflt: e, editType: "camera" }, z: { valType: "number", dflt: r, editType: "camera" }, editType: "camera", }; } e.exports = { _arrayAttrRegexps: [o("scene", ".annotations", !0)], bgcolor: { valType: "color", dflt: "rgba(0,0,0,0)", editType: "plot", }, camera: { up: a(s(0, 0, 1), {}), center: a(s(0, 0, 0), {}), eye: a(s(1.25, 1.25, 1.25), {}), projection: { type: { valType: "enumerated", values: ["perspective", "orthographic"], dflt: "perspective", editType: "calc", }, editType: "calc", }, editType: "camera", }, domain: i({ name: "scene", editType: "plot" }), aspectmode: { valType: "enumerated", values: ["auto", "cube", "data", "manual"], dflt: "auto", editType: "plot", impliedEdits: { "aspectratio.x": void 0, "aspectratio.y": void 0, "aspectratio.z": void 0, }, }, aspectratio: { x: { valType: "number", min: 0, editType: "plot", impliedEdits: { "^aspectmode": "manual" }, }, y: { valType: "number", min: 0, editType: "plot", impliedEdits: { "^aspectmode": "manual" }, }, z: { valType: "number", min: 0, editType: "plot", impliedEdits: { "^aspectmode": "manual" }, }, editType: "plot", impliedEdits: { aspectmode: "manual" }, }, xaxis: n, yaxis: n, zaxis: n, dragmode: { valType: "enumerated", values: ["orbit", "turntable", "zoom", "pan", !1], editType: "plot", }, hovermode: { valType: "enumerated", values: ["closest", !1], dflt: "closest", editType: "modebar", }, uirevision: { valType: "any", editType: "none" }, editType: "plot", _deprecated: { cameraposition: { valType: "info_array", editType: "camera", }, }, }; }, { "../../../lib": 515, "../../../lib/extend": 505, "../../domain": 593, "./axis_attributes": 609, }, ], 614: [ function (t, e, r) { "use strict"; var n = t("../../../lib/str2rgbarray"), i = ["xaxis", "yaxis", "zaxis"]; function a() { (this.enabled = [!0, !0, !0]), (this.colors = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.drawSides = [!0, !0, !0]), (this.lineWidth = [1, 1, 1]); } (a.prototype.merge = function (t) { for (var e = 0; e < 3; ++e) { var r = t[i[e]]; r.visible ? ((this.enabled[e] = r.showspikes), (this.colors[e] = n(r.spikecolor)), (this.drawSides[e] = r.spikesides), (this.lineWidth[e] = r.spikethickness)) : ((this.enabled[e] = !1), (this.drawSides[e] = !1)); } }), (e.exports = function (t) { var e = new a(); return e.merge(t), e; }); }, { "../../../lib/str2rgbarray": 540 }, ], 615: [ function (t, e, r) { "use strict"; e.exports = function (t) { for ( var e = t.axesOptions, r = t.glplot.axesPixels, s = t.fullSceneLayout, l = [[], [], []], c = 0; c < 3; ++c ) { var u = s[a[c]]; if ( ((u._length = ((r[c].hi - r[c].lo) * r[c].pixelsPerDataUnit) / t.dataScale[c]), Math.abs(u._length) === 1 / 0 || isNaN(u._length)) ) l[c] = []; else { (u._input_range = u.range.slice()), (u.range[0] = r[c].lo / t.dataScale[c]), (u.range[1] = r[c].hi / t.dataScale[c]), (u._m = 1 / (t.dataScale[c] * r[c].pixelsPerDataUnit)), u.range[0] === u.range[1] && ((u.range[0] -= 1), (u.range[1] += 1)); var f = u.tickmode; if ("auto" === u.tickmode) { u.tickmode = "linear"; var h = u.nticks || i.constrain(u._length / 40, 4, 9); n.autoTicks(u, Math.abs(u.range[1] - u.range[0]) / h); } for ( var p = n.calcTicks(u, { msUTC: !0 }), d = 0; d < p.length; ++d ) (p[d].x = p[d].x * t.dataScale[c]), "date" === u.type && (p[d].text = p[d].text.replace(/\/g, " ")); (l[c] = p), (u.tickmode = f); } } e.ticks = l; for (c = 0; c < 3; ++c) { o[c] = 0.5 * (t.glplot.bounds[0][c] + t.glplot.bounds[1][c]); for (d = 0; d < 2; ++d) e.bounds[d][c] = t.glplot.bounds[d][c]; } t.contourLevels = (function (t) { for (var e = new Array(3), r = 0; r < 3; ++r) { for ( var n = t[r], i = new Array(n.length), a = 0; a < n.length; ++a ) i[a] = n[a].x; e[r] = i; } return e; })(l); }; var n = t("../../cartesian/axes"), i = t("../../../lib"), a = ["xaxis", "yaxis", "zaxis"], o = [0, 0, 0]; }, { "../../../lib": 515, "../../cartesian/axes": 566 }, ], 616: [ function (t, e, r) { "use strict"; function n(t, e) { var r, n, i = [0, 0, 0, 0]; for (r = 0; r < 4; ++r) for (n = 0; n < 4; ++n) i[n] += t[4 * r + n] * e[r]; return i; } e.exports = function (t, e) { return n( t.projection, n(t.view, n(t.model, [e[0], e[1], e[2], 1])), ); }; }, {}, ], 617: [ function (t, e, r) { "use strict"; var n, i, a = t("../../../stackgl_modules").gl_plot3d, o = a.createCamera, s = a.createScene, l = t("webgl-context"), c = t("has-passive-events"), u = t("../../registry"), f = t("../../lib"), h = f.preserveDrawingBuffer(), p = t("../../plots/cartesian/axes"), d = t("../../components/fx"), m = t("../../lib/str2rgbarray"), g = t("../../lib/show_no_webgl_msg"), v = t("./project"), y = t("./layout/convert"), x = t("./layout/spikes"), b = t("./layout/tick_marks"); function _(t, e) { var r = document.createElement("div"), n = t.container; this.graphDiv = t.graphDiv; var i = document.createElementNS( "http://www.w3.org/2000/svg", "svg", ); (i.style.position = "absolute"), (i.style.top = i.style.left = "0px"), (i.style.width = i.style.height = "100%"), (i.style["z-index"] = 20), (i.style["pointer-events"] = "none"), r.appendChild(i), (this.svgContainer = i), (r.id = t.id), (r.style.position = "absolute"), (r.style.top = r.style.left = "0px"), (r.style.width = r.style.height = "100%"), n.appendChild(r), (this.fullLayout = e), (this.id = t.id || "scene"), (this.fullSceneLayout = e[this.id]), (this.plotArgs = [[], {}, {}]), (this.axesOptions = y(e, e[this.id])), (this.spikeOptions = x(e[this.id])), (this.container = r), (this.staticMode = !!t.staticPlot), (this.pixelRatio = this.pixelRatio || t.plotGlPixelRatio || 2), (this.dataScale = [1, 1, 1]), (this.contourLevels = [[], [], []]), (this.convertAnnotations = u.getComponentMethod( "annotations3d", "convert", )), (this.drawAnnotations = u.getComponentMethod( "annotations3d", "draw", )), this.initializeGLPlot(); } var w = _.prototype; w.prepareOptions = function () { var t = { canvas: this.canvas, gl: this.gl, glOptions: { preserveDrawingBuffer: h, premultipliedAlpha: !0, antialias: !0, }, container: this.container, axes: this.axesOptions, spikes: this.spikeOptions, pickRadius: 10, snapToData: !0, autoScale: !0, autoBounds: !1, cameraObject: this.camera, pixelRatio: this.pixelRatio, }; if (this.staticMode) { if ( !( i || ((n = document.createElement("canvas")), (i = l({ canvas: n, preserveDrawingBuffer: !0, premultipliedAlpha: !0, antialias: !0, }))) ) ) throw new Error( "error creating static canvas/context for image server", ); (t.gl = i), (t.canvas = n); } return t; }; var T = !0; (w.tryCreatePlot = function () { var t = this.prepareOptions(), e = !0; try { this.glplot = s(t); } catch (r) { if (this.staticMode || !T || h) e = !1; else { f.warn( [ "webgl setup failed possibly due to", "false preserveDrawingBuffer config.", "The mobile/tablet device may not be detected by is-mobile module.", "Enabling preserveDrawingBuffer in second attempt to create webgl scene...", ].join(" "), ); try { (h = t.glOptions.preserveDrawingBuffer = !0), (this.glplot = s(t)); } catch (r) { (h = t.glOptions.preserveDrawingBuffer = !1), (e = !1); } } } return (T = !1), e; }), (w.initializeGLCamera = function () { var t = this.fullSceneLayout.camera, e = "orthographic" === t.projection.type; this.camera = o(this.container, { center: [t.center.x, t.center.y, t.center.z], eye: [t.eye.x, t.eye.y, t.eye.z], up: [t.up.x, t.up.y, t.up.z], _ortho: e, zoomMin: 0.01, zoomMax: 100, mode: "orbit", }); }), (w.initializeGLPlot = function () { var t = this; if ((t.initializeGLCamera(), !t.tryCreatePlot())) return g(t); (t.traces = {}), t.make4thDimension(); var e = t.graphDiv, r = e.layout, n = function () { var e = {}; return ( t.isCameraChanged(r) && (e[t.id + ".camera"] = t.getCamera()), t.isAspectChanged(r) && ((e[t.id + ".aspectratio"] = t.glplot.getAspectratio()), "manual" !== r[t.id].aspectmode && (t.fullSceneLayout.aspectmode = r[t.id].aspectmode = e[t.id + ".aspectmode"] = "manual")), e ); }, i = function (t) { if (!1 !== t.fullSceneLayout.dragmode) { var e = n(); t.saveLayout(r), t.graphDiv.emit("plotly_relayout", e); } }; return ( t.glplot.canvas && (t.glplot.canvas.addEventListener( "mouseup", function () { i(t); }, ), t.glplot.canvas.addEventListener( "wheel", function (r) { if (e._context._scrollZoom.gl3d) { if (t.camera._ortho) { var n = r.deltaX > r.deltaY ? 1.1 : 1 / 1.1, a = t.glplot.getAspectratio(); t.glplot.setAspectratio({ x: n * a.x, y: n * a.y, z: n * a.z, }); } i(t); } }, !!c && { passive: !1 }, ), t.glplot.canvas.addEventListener( "mousemove", function () { if ( !1 !== t.fullSceneLayout.dragmode && 0 !== t.camera.mouseListener.buttons ) { var e = n(); t.graphDiv.emit("plotly_relayouting", e); } }, ), t.staticMode || t.glplot.canvas.addEventListener( "webglcontextlost", function (r) { e && e.emit && e.emit("plotly_webglcontextlost", { event: r, layer: t.id, }); }, !1, )), (t.glplot.oncontextloss = function () { t.recoverContext(); }), (t.glplot.onrender = function () { t.render(); }), !0 ); }), (w.render = function () { var t, e = this, r = e.graphDiv, n = e.svgContainer, i = e.container.getBoundingClientRect(); r._fullLayout._calcInverseTransform(r); var a = r._fullLayout._invScaleX, o = r._fullLayout._invScaleY, s = i.width * a, l = i.height * o; n.setAttributeNS(null, "viewBox", "0 0 " + s + " " + l), n.setAttributeNS(null, "width", s), n.setAttributeNS(null, "height", l), b(e), e.glplot.axes.update(e.axesOptions); for ( var c = Object.keys(e.traces), u = null, h = e.glplot.selection, m = 0; m < c.length; ++m ) "skip" !== (t = e.traces[c[m]]).data.hoverinfo && t.handlePick(h) && (u = t), t.setContourLevels && t.setContourLevels(); function g(t, r, n) { var i = e.fullSceneLayout[t + "axis"]; return ( "log" !== i.type && (r = i.d2l(r)), p.hoverLabelText(i, r, n) ); } if (null !== u) { var y = v(e.glplot.cameraParams, h.dataCoordinate); t = u.data; var x, _ = r._fullData[t.index], w = h.index, T = { xLabel: g( "x", h.traceCoordinate[0], t.xhoverformat, ), yLabel: g( "y", h.traceCoordinate[1], t.yhoverformat, ), zLabel: g( "z", h.traceCoordinate[2], t.zhoverformat, ), }, k = d.castHoverinfo(_, e.fullLayout, w), A = (k || "").split("+"), M = k && "all" === k; _.hovertemplate || M || (-1 === A.indexOf("x") && (T.xLabel = void 0), -1 === A.indexOf("y") && (T.yLabel = void 0), -1 === A.indexOf("z") && (T.zLabel = void 0), -1 === A.indexOf("text") && (h.textLabel = void 0), -1 === A.indexOf("name") && (u.name = void 0)); var S = []; "cone" === t.type || "streamtube" === t.type ? ((T.uLabel = g( "x", h.traceCoordinate[3], t.uhoverformat, )), (M || -1 !== A.indexOf("u")) && S.push("u: " + T.uLabel), (T.vLabel = g( "y", h.traceCoordinate[4], t.vhoverformat, )), (M || -1 !== A.indexOf("v")) && S.push("v: " + T.vLabel), (T.wLabel = g( "z", h.traceCoordinate[5], t.whoverformat, )), (M || -1 !== A.indexOf("w")) && S.push("w: " + T.wLabel), (T.normLabel = h.traceCoordinate[6].toPrecision(3)), (M || -1 !== A.indexOf("norm")) && S.push("norm: " + T.normLabel), "streamtube" === t.type && ((T.divergenceLabel = h.traceCoordinate[7].toPrecision(3)), (M || -1 !== A.indexOf("divergence")) && S.push("divergence: " + T.divergenceLabel)), h.textLabel && S.push(h.textLabel), (x = S.join("
"))) : "isosurface" === t.type || "volume" === t.type ? ((T.valueLabel = p.hoverLabelText( e._mockAxis, e._mockAxis.d2l(h.traceCoordinate[3]), t.valuehoverformat, )), S.push("value: " + T.valueLabel), h.textLabel && S.push(h.textLabel), (x = S.join("
"))) : (x = h.textLabel); var E = { x: h.traceCoordinate[0], y: h.traceCoordinate[1], z: h.traceCoordinate[2], data: _._input, fullData: _, curveNumber: _.index, pointNumber: w, }; d.appendArrayPointValue(E, _, w), t._module.eventData && (E = _._module.eventData(E, h, _, {}, w)); var L = { points: [E] }; if (e.fullSceneLayout.hovermode) { var C = []; d.loneHover( { trace: _, x: (0.5 + (0.5 * y[0]) / y[3]) * s, y: (0.5 - (0.5 * y[1]) / y[3]) * l, xLabel: T.xLabel, yLabel: T.yLabel, zLabel: T.zLabel, text: x, name: u.name, color: d.castHoverOption(_, w, "bgcolor") || u.color, borderColor: d.castHoverOption( _, w, "bordercolor", ), fontFamily: d.castHoverOption( _, w, "font.family", ), fontSize: d.castHoverOption(_, w, "font.size"), fontColor: d.castHoverOption(_, w, "font.color"), nameLength: d.castHoverOption(_, w, "namelength"), textAlign: d.castHoverOption(_, w, "align"), hovertemplate: f.castOption( _, w, "hovertemplate", ), hovertemplateLabels: f.extendFlat({}, E, T), eventData: [E], }, { container: n, gd: r, inOut_bbox: C }, ), (E.bbox = C[0]); } h.buttons && h.distance < 5 ? r.emit("plotly_click", L) : r.emit("plotly_hover", L), (this.oldEventData = L); } else d.loneUnhover(n), this.oldEventData && r.emit("plotly_unhover", this.oldEventData), (this.oldEventData = void 0); e.drawAnnotations(e); }), (w.recoverContext = function () { var t = this; t.glplot.dispose(); var e = function () { t.glplot.gl.isContextLost() ? requestAnimationFrame(e) : t.initializeGLPlot() ? t.plot.apply(t, t.plotArgs) : f.error( "Catastrophic and unrecoverable WebGL error. Context lost.", ); }; requestAnimationFrame(e); }); var k = ["xaxis", "yaxis", "zaxis"]; function A(t, e, r) { for (var n = t.fullSceneLayout, i = 0; i < 3; i++) { var a = k[i], o = a.charAt(0), s = n[a], l = e[o], c = e[o + "calendar"], u = e["_" + o + "length"]; if (f.isArrayOrTypedArray(l)) for (var h, p = 0; p < (u || l.length); p++) if (f.isArrayOrTypedArray(l[p])) for (var d = 0; d < l[p].length; ++d) (h = s.d2l(l[p][d], 0, c)), !isNaN(h) && isFinite(h) && ((r[0][i] = Math.min(r[0][i], h)), (r[1][i] = Math.max(r[1][i], h))); else (h = s.d2l(l[p], 0, c)), !isNaN(h) && isFinite(h) && ((r[0][i] = Math.min(r[0][i], h)), (r[1][i] = Math.max(r[1][i], h))); else (r[0][i] = Math.min(r[0][i], 0)), (r[1][i] = Math.max(r[1][i], u - 1)); } } (w.plot = function (t, e, r) { if ( ((this.plotArgs = [t, e, r]), !this.glplot.contextLost) ) { var n, i, a, o, s, l, c = e[this.id], u = r[this.id]; (this.fullLayout = e), (this.fullSceneLayout = c), this.axesOptions.merge(e, c), this.spikeOptions.merge(c), this.setViewport(c), this.updateFx(c.dragmode, c.hovermode), (this.camera.enableWheel = this.graphDiv._context._scrollZoom.gl3d), this.glplot.setClearColor(m(c.bgcolor)), this.setConvert(s), t ? Array.isArray(t) || (t = [t]) : (t = []); var f = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ]; for (a = 0; a < t.length; ++a) !0 === (n = t[a]).visible && 0 !== n._length && A(this, n, f); !(function (t, e) { for ( var r = t.fullSceneLayout, n = r.annotations || [], i = 0; i < 3; i++ ) for ( var a = k[i], o = a.charAt(0), s = r[a], l = 0; l < n.length; l++ ) { var c = n[l]; if (c.visible) { var u = s.r2l(c[o]); !isNaN(u) && isFinite(u) && ((e[0][i] = Math.min(e[0][i], u)), (e[1][i] = Math.max(e[1][i], u))); } } })(this, f); var h = [1, 1, 1]; for (o = 0; o < 3; ++o) f[1][o] === f[0][o] ? (h[o] = 1) : (h[o] = 1 / (f[1][o] - f[0][o])); for ( this.dataScale = h, this.convertAnnotations(this), a = 0; a < t.length; ++a ) !0 === (n = t[a]).visible && 0 !== n._length && ((i = this.traces[n.uid]) ? i.data.type === n.type ? i.update(n) : (i.dispose(), (i = n._module.plot(this, n)), (this.traces[n.uid] = i)) : ((i = n._module.plot(this, n)), (this.traces[n.uid] = i)), (i.name = n.name)); var p = Object.keys(this.traces); t: for (a = 0; a < p.length; ++a) { for (o = 0; o < t.length; ++o) if ( t[o].uid === p[a] && !0 === t[o].visible && 0 !== t[o]._length ) continue t; (i = this.traces[p[a]]).dispose(), delete this.traces[p[a]]; } this.glplot.objects.sort(function (t, e) { return t._trace.data.index - e._trace.data.index; }); var d, g = [ [0, 0, 0], [0, 0, 0], ], v = [], y = {}; for (a = 0; a < 3; ++a) { if ( ((l = (s = c[k[a]]).type) in y ? ((y[l].acc *= h[a]), (y[l].count += 1)) : (y[l] = { acc: h[a], count: 1 }), s.autorange) ) { (g[0][a] = 1 / 0), (g[1][a] = -1 / 0); var x = this.glplot.objects, b = this.fullSceneLayout.annotations || [], _ = s._name.charAt(0); for (o = 0; o < x.length; o++) { var w = x[o], T = w.bounds, M = w._trace.data._pad || 0; "ErrorBars" === w.constructor.name && s._lowerLogErrorBound ? (g[0][a] = Math.min( g[0][a], s._lowerLogErrorBound, )) : (g[0][a] = Math.min( g[0][a], T[0][a] / h[a] - M, )), (g[1][a] = Math.max(g[1][a], T[1][a] / h[a] + M)); } for (o = 0; o < b.length; o++) { var S = b[o]; if (S.visible) { var E = s.r2l(S[_]); (g[0][a] = Math.min(g[0][a], E)), (g[1][a] = Math.max(g[1][a], E)); } } if ( ("rangemode" in s && "tozero" === s.rangemode && ((g[0][a] = Math.min(g[0][a], 0)), (g[1][a] = Math.max(g[1][a], 0))), g[0][a] > g[1][a]) ) (g[0][a] = -1), (g[1][a] = 1); else { var L = g[1][a] - g[0][a]; (g[0][a] -= L / 32), (g[1][a] += L / 32); } if ("reversed" === s.autorange) { var C = g[0][a]; (g[0][a] = g[1][a]), (g[1][a] = C); } } else { var P = s.range; (g[0][a] = s.r2l(P[0])), (g[1][a] = s.r2l(P[1])); } g[0][a] === g[1][a] && ((g[0][a] -= 1), (g[1][a] += 1)), (v[a] = g[1][a] - g[0][a]), this.glplot.setBounds(a, { min: g[0][a] * h[a], max: g[1][a] * h[a], }); } var I = c.aspectmode; if ("cube" === I) d = [1, 1, 1]; else if ("manual" === I) { var O = c.aspectratio; d = [O.x, O.y, O.z]; } else { if ("auto" !== I && "data" !== I) throw new Error( "scene.js aspectRatio was not one of the enumerated types", ); var z = [1, 1, 1]; for (a = 0; a < 3; ++a) { var D = y[(l = (s = c[k[a]]).type)]; z[a] = Math.pow(D.acc, 1 / D.count) / h[a]; } d = "data" === I || Math.max.apply(null, z) / Math.min.apply(null, z) <= 4 ? z : [1, 1, 1]; } (c.aspectratio.x = u.aspectratio.x = d[0]), (c.aspectratio.y = u.aspectratio.y = d[1]), (c.aspectratio.z = u.aspectratio.z = d[2]), this.glplot.setAspectratio(c.aspectratio), this.viewInitial.aspectratio || (this.viewInitial.aspectratio = { x: c.aspectratio.x, y: c.aspectratio.y, z: c.aspectratio.z, }), this.viewInitial.aspectmode || (this.viewInitial.aspectmode = c.aspectmode); var R = c.domain || null, F = e._size || null; if (R && F) { var B = this.container.style; (B.position = "absolute"), (B.left = F.l + R.x[0] * F.w + "px"), (B.top = F.t + (1 - R.y[1]) * F.h + "px"), (B.width = F.w * (R.x[1] - R.x[0]) + "px"), (B.height = F.h * (R.y[1] - R.y[0]) + "px"); } this.glplot.redraw(); } }), (w.destroy = function () { this.glplot && ((this.camera.mouseListener.enabled = !1), this.container.removeEventListener( "wheel", this.camera.wheelListener, ), (this.camera = null), this.glplot.dispose(), this.container.parentNode.removeChild(this.container), (this.glplot = null)); }), (w.getCamera = function () { var t; return ( this.camera.view.recalcMatrix(this.camera.view.lastT()), { up: { x: (t = this.camera).up[0], y: t.up[1], z: t.up[2], }, center: { x: t.center[0], y: t.center[1], z: t.center[2], }, eye: { x: t.eye[0], y: t.eye[1], z: t.eye[2] }, projection: { type: !0 === t._ortho ? "orthographic" : "perspective", }, } ); }), (w.setViewport = function (t) { var e, r = t.camera; this.camera.lookAt.apply(this, [ [(e = r).eye.x, e.eye.y, e.eye.z], [e.center.x, e.center.y, e.center.z], [e.up.x, e.up.y, e.up.z], ]), this.glplot.setAspectratio(t.aspectratio), ("orthographic" === r.projection.type) !== this.camera._ortho && (this.glplot.redraw(), this.glplot.clearRGBA(), this.glplot.dispose(), this.initializeGLPlot()); }), (w.isCameraChanged = function (t) { var e = this.getCamera(), r = f.nestedProperty(t, this.id + ".camera").get(); function n(t, e, r, n) { var i = ["up", "center", "eye"], a = ["x", "y", "z"]; return e[i[r]] && t[i[r]][a[n]] === e[i[r]][a[n]]; } var i = !1; if (void 0 === r) i = !0; else { for (var a = 0; a < 3; a++) for (var o = 0; o < 3; o++) if (!n(e, r, a, o)) { i = !0; break; } (!r.projection || (e.projection && e.projection.type !== r.projection.type)) && (i = !0); } return i; }), (w.isAspectChanged = function (t) { var e = this.glplot.getAspectratio(), r = f.nestedProperty(t, this.id + ".aspectratio").get(); return ( void 0 === r || r.x !== e.x || r.y !== e.y || r.z !== e.z ); }), (w.saveLayout = function (t) { var e, r, n, i, a, o, s = this.fullLayout, l = this.isCameraChanged(t), c = this.isAspectChanged(t), h = l || c; if (h) { var p = {}; if ( (l && ((e = this.getCamera()), (n = (r = f.nestedProperty( t, this.id + ".camera", )).get()), (p[this.id + ".camera"] = n)), c && ((i = this.glplot.getAspectratio()), (o = (a = f.nestedProperty( t, this.id + ".aspectratio", )).get()), (p[this.id + ".aspectratio"] = o)), u.call("_storeDirectGUIEdit", t, s._preGUI, p), l) ) r.set(e), f.nestedProperty(s, this.id + ".camera").set(e); if (c) a.set(i), f .nestedProperty(s, this.id + ".aspectratio") .set(i), this.glplot.redraw(); } return h; }), (w.updateFx = function (t, e) { var r = this.camera; if (r) if ("orbit" === t) (r.mode = "orbit"), (r.keyBindingMode = "rotate"); else if ("turntable" === t) { (r.up = [0, 0, 1]), (r.mode = "turntable"), (r.keyBindingMode = "rotate"); var n = this.graphDiv, i = n._fullLayout, a = this.fullSceneLayout.camera, o = a.up.x, s = a.up.y, l = a.up.z; if (l / Math.sqrt(o * o + s * s + l * l) < 0.999) { var c = this.id + ".camera.up", h = { x: 0, y: 0, z: 1 }, p = {}; p[c] = h; var d = n.layout; u.call("_storeDirectGUIEdit", d, i._preGUI, p), (a.up = h), f.nestedProperty(d, c).set(h); } } else r.keyBindingMode = t; this.fullSceneLayout.hovermode = e; }), (w.toImage = function (t) { t || (t = "png"), this.staticMode && this.container.appendChild(n), this.glplot.redraw(); var e = this.glplot.gl, r = e.drawingBufferWidth, i = e.drawingBufferHeight; e.bindFramebuffer(e.FRAMEBUFFER, null); var a = new Uint8Array(r * i * 4); e.readPixels(0, 0, r, i, e.RGBA, e.UNSIGNED_BYTE, a), (function (t, e, r) { for (var n = 0, i = r - 1; n < i; ++n, --i) for (var a = 0; a < e; ++a) for (var o = 0; o < 4; ++o) { var s = 4 * (e * n + a) + o, l = 4 * (e * i + a) + o, c = t[s]; (t[s] = t[l]), (t[l] = c); } })(a, r, i), (function (t, e, r) { for (var n = 0; n < r; ++n) for (var i = 0; i < e; ++i) { var a = 4 * (e * n + i), o = t[a + 3]; if (o > 0) for (var s = 255 / o, l = 0; l < 3; ++l) t[a + l] = Math.min(s * t[a + l], 255); } })(a, r, i); var o = document.createElement("canvas"); (o.width = r), (o.height = i); var s, l = o.getContext("2d", { willReadFrequently: !0 }), c = l.createImageData(r, i); switch ((c.data.set(a), l.putImageData(c, 0, 0), t)) { case "jpeg": s = o.toDataURL("image/jpeg"); break; case "webp": s = o.toDataURL("image/webp"); break; default: s = o.toDataURL("image/png"); } return ( this.staticMode && this.container.removeChild(n), s ); }), (w.setConvert = function () { for (var t = 0; t < 3; t++) { var e = this.fullSceneLayout[k[t]]; p.setConvert(e, this.fullLayout), (e.setScale = f.noop); } }), (w.make4thDimension = function () { var t = this.graphDiv._fullLayout; (this._mockAxis = { type: "linear", showexponent: "all", exponentformat: "B", }), p.setConvert(this._mockAxis, t); }), (e.exports = _); }, { "../../../stackgl_modules": 1133, "../../components/fx": 407, "../../lib": 515, "../../lib/show_no_webgl_msg": 537, "../../lib/str2rgbarray": 540, "../../plots/cartesian/axes": 566, "../../registry": 647, "./layout/convert": 611, "./layout/spikes": 614, "./layout/tick_marks": 615, "./project": 616, "has-passive-events": 229, "webgl-context": 332, }, ], 618: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n) { n = n || t.length; for (var i = new Array(n), a = 0; a < n; a++) i[a] = [t[a], e[a], r[a]]; return i; }; }, {}, ], 619: [ function (t, e, r) { "use strict"; var n = t("./font_attributes"), i = t("./animation_attributes"), a = t("../components/color/attributes"), o = t("../components/shapes/draw_newshape/attributes"), s = t( "../components/selections/draw_newselection/attributes", ), l = t("./pad_attributes"), c = t("../lib/extend").extendFlat, u = n({ editType: "calc" }); (u.family.dflt = '"Open Sans", verdana, arial, sans-serif'), (u.size.dflt = 12), (u.color.dflt = a.defaultLine), (e.exports = { font: u, title: { text: { valType: "string", editType: "layoutstyle" }, font: n({ editType: "layoutstyle" }), xref: { valType: "enumerated", dflt: "container", values: ["container", "paper"], editType: "layoutstyle", }, yref: { valType: "enumerated", dflt: "container", values: ["container", "paper"], editType: "layoutstyle", }, x: { valType: "number", min: 0, max: 1, dflt: 0.5, editType: "layoutstyle", }, y: { valType: "number", min: 0, max: 1, dflt: "auto", editType: "layoutstyle", }, xanchor: { valType: "enumerated", dflt: "auto", values: ["auto", "left", "center", "right"], editType: "layoutstyle", }, yanchor: { valType: "enumerated", dflt: "auto", values: ["auto", "top", "middle", "bottom"], editType: "layoutstyle", }, pad: c(l({ editType: "layoutstyle" }), {}), editType: "layoutstyle", }, uniformtext: { mode: { valType: "enumerated", values: [!1, "hide", "show"], dflt: !1, editType: "plot", }, minsize: { valType: "number", min: 0, dflt: 0, editType: "plot", }, editType: "plot", }, autosize: { valType: "boolean", dflt: !1, editType: "none", }, width: { valType: "number", min: 10, dflt: 700, editType: "plot", }, height: { valType: "number", min: 10, dflt: 450, editType: "plot", }, minreducedwidth: { valType: "number", min: 2, dflt: 64, editType: "plot", }, minreducedheight: { valType: "number", min: 2, dflt: 64, editType: "plot", }, margin: { l: { valType: "number", min: 0, dflt: 80, editType: "plot", }, r: { valType: "number", min: 0, dflt: 80, editType: "plot", }, t: { valType: "number", min: 0, dflt: 100, editType: "plot", }, b: { valType: "number", min: 0, dflt: 80, editType: "plot", }, pad: { valType: "number", min: 0, dflt: 0, editType: "plot", }, autoexpand: { valType: "boolean", dflt: !0, editType: "plot", }, editType: "plot", }, computed: { valType: "any", editType: "none" }, paper_bgcolor: { valType: "color", dflt: a.background, editType: "plot", }, plot_bgcolor: { valType: "color", dflt: a.background, editType: "layoutstyle", }, autotypenumbers: { valType: "enumerated", values: ["convert types", "strict"], dflt: "convert types", editType: "calc", }, separators: { valType: "string", editType: "plot" }, hidesources: { valType: "boolean", dflt: !1, editType: "plot", }, showlegend: { valType: "boolean", editType: "legend" }, colorway: { valType: "colorlist", dflt: a.defaults, editType: "calc", }, datarevision: { valType: "any", editType: "calc" }, uirevision: { valType: "any", editType: "none" }, editrevision: { valType: "any", editType: "none" }, selectionrevision: { valType: "any", editType: "none" }, template: { valType: "any", editType: "calc" }, newshape: o.newshape, activeshape: o.activeshape, newselection: s.newselection, activeselection: s.activeselection, meta: { valType: "any", arrayOk: !0, editType: "plot" }, transition: c({}, i.transition, { editType: "none" }), _deprecated: { title: { valType: "string", editType: "layoutstyle" }, titlefont: n({ editType: "layoutstyle" }), }, }); }, { "../components/color/attributes": 366, "../components/selections/draw_newselection/attributes": 451, "../components/shapes/draw_newshape/attributes": 463, "../lib/extend": 505, "./animation_attributes": 560, "./font_attributes": 594, "./pad_attributes": 627, }, ], 620: [ function (t, e, r) { "use strict"; var n = t("../../lib/sort_object_keys"), i = '\xa9 OpenStreetMap contributors', a = [ '\xa9 Carto', i, ].join(" "), o = [ 'Map tiles by Stamen Design', 'under CC BY 3.0', "|", 'Data by OpenStreetMap contributors', 'under ODbL', ].join(" "), s = { "open-street-map": { id: "osm", version: 8, sources: { "plotly-osm-tiles": { type: "raster", attribution: i, tiles: [ "https://a.tile.openstreetmap.org/{z}/{x}/{y}.png", "https://b.tile.openstreetmap.org/{z}/{x}/{y}.png", ], tileSize: 256, }, }, layers: [ { id: "plotly-osm-tiles", type: "raster", source: "plotly-osm-tiles", minzoom: 0, maxzoom: 22, }, ], }, "white-bg": { id: "white-bg", version: 8, sources: {}, layers: [ { id: "white-bg", type: "background", paint: { "background-color": "#FFFFFF" }, minzoom: 0, maxzoom: 22, }, ], }, "carto-positron": { id: "carto-positron", version: 8, sources: { "plotly-carto-positron": { type: "raster", attribution: a, tiles: [ "https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png", ], tileSize: 256, }, }, layers: [ { id: "plotly-carto-positron", type: "raster", source: "plotly-carto-positron", minzoom: 0, maxzoom: 22, }, ], }, "carto-darkmatter": { id: "carto-darkmatter", version: 8, sources: { "plotly-carto-darkmatter": { type: "raster", attribution: a, tiles: [ "https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png", ], tileSize: 256, }, }, layers: [ { id: "plotly-carto-darkmatter", type: "raster", source: "plotly-carto-darkmatter", minzoom: 0, maxzoom: 22, }, ], }, "stamen-terrain": { id: "stamen-terrain", version: 8, sources: { "plotly-stamen-terrain": { type: "raster", attribution: o, tiles: [ "https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png", ], tileSize: 256, }, }, layers: [ { id: "plotly-stamen-terrain", type: "raster", source: "plotly-stamen-terrain", minzoom: 0, maxzoom: 22, }, ], }, "stamen-toner": { id: "stamen-toner", version: 8, sources: { "plotly-stamen-toner": { type: "raster", attribution: o, tiles: [ "https://stamen-tiles.a.ssl.fastly.net/toner/{z}/{x}/{y}.png", ], tileSize: 256, }, }, layers: [ { id: "plotly-stamen-toner", type: "raster", source: "plotly-stamen-toner", minzoom: 0, maxzoom: 22, }, ], }, "stamen-watercolor": { id: "stamen-watercolor", version: 8, sources: { "plotly-stamen-watercolor": { type: "raster", attribution: [ 'Map tiles by Stamen Design', 'under CC BY 3.0', "|", 'Data by OpenStreetMap contributors', 'under CC BY SA', ].join(" "), tiles: [ "https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png", ], tileSize: 256, }, }, layers: [ { id: "plotly-stamen-watercolor", type: "raster", source: "plotly-stamen-watercolor", minzoom: 0, maxzoom: 22, }, ], }, }, l = n(s); e.exports = { requiredVersion: "1.10.1", styleUrlPrefix: "mapbox://styles/mapbox/", styleUrlSuffix: "v9", styleValuesMapbox: [ "basic", "streets", "outdoors", "light", "dark", "satellite", "satellite-streets", ], styleValueDflt: "basic", stylesNonMapbox: s, styleValuesNonMapbox: l, traceLayerPrefix: "plotly-trace-layer-", layoutLayerPrefix: "plotly-layout-layer-", wrongVersionErrorMsg: [ "Your custom plotly.js bundle is not using the correct mapbox-gl version", "Please install mapbox-gl@1.10.1.", ].join("\n"), noAccessTokenErrorMsg: [ "Missing Mapbox access token.", "Mapbox trace type require a Mapbox access token to be registered.", "For example:", " Plotly.newPlot(gd, data, layout, { mapboxAccessToken: 'my-access-token' });", "More info here: https://www.mapbox.com/help/define-access-token/", ].join("\n"), missingStyleErrorMsg: [ "No valid mapbox style found, please set `mapbox.style` to one of:", l.join(", "), "or register a Mapbox access token to use a Mapbox-served style.", ].join("\n"), multipleTokensErrorMsg: [ "Set multiple mapbox access token across different mapbox subplot,", "using first token found as mapbox-gl does not allow multipleaccess tokens on the same page.", ].join("\n"), mapOnErrorMsg: "Mapbox error.", mapboxLogo: { path0: "m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z", path1: "M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z", path2: "M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z", polygon: "11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34", }, styleRules: { map: "overflow:hidden;position:relative;", "missing-css": "display:none;", canary: "background-color:salmon;", "ctrl-bottom-left": "position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;", "ctrl-bottom-right": "position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;", ctrl: "clear: both; pointer-events: auto; transform: translate(0, 0);", "ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner": "display: none;", "ctrl-attrib.mapboxgl-compact:hover .mapboxgl-ctrl-attrib-inner": "display: block; margin-top:2px", "ctrl-attrib.mapboxgl-compact:hover": "padding: 2px 24px 2px 4px; visibility: visible; margin-top: 6px;", "ctrl-attrib.mapboxgl-compact::after": 'content: ""; cursor: pointer; position: absolute; background-image: url(\'data:image/svg+xml;charset=utf-8,%3Csvg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"%3E %3Cpath fill="%23333333" fill-rule="evenodd" d="M4,10a6,6 0 1,0 12,0a6,6 0 1,0 -12,0 M9,7a1,1 0 1,0 2,0a1,1 0 1,0 -2,0 M9,10a1,1 0 1,1 2,0l0,3a1,1 0 1,1 -2,0"/%3E %3C/svg%3E\'); background-color: rgba(255, 255, 255, 0.5); width: 24px; height: 24px; box-sizing: border-box; border-radius: 12px;', "ctrl-attrib.mapboxgl-compact": "min-height: 20px; padding: 0; margin: 10px; position: relative; background-color: #fff; border-radius: 3px 12px 12px 3px;", "ctrl-bottom-right > .mapboxgl-ctrl-attrib.mapboxgl-compact::after": "bottom: 0; right: 0", "ctrl-bottom-left > .mapboxgl-ctrl-attrib.mapboxgl-compact::after": "bottom: 0; left: 0", "ctrl-bottom-left .mapboxgl-ctrl": "margin: 0 0 10px 10px; float: left;", "ctrl-bottom-right .mapboxgl-ctrl": "margin: 0 10px 10px 0; float: right;", "ctrl-attrib": "color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px", "ctrl-attrib a": "color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px", "ctrl-attrib a:hover": "color: inherit; text-decoration: underline;", "ctrl-attrib .mapbox-improve-map": "font-weight: bold; margin-left: 2px;", "attrib-empty": "display: none;", "ctrl-logo": 'display:block; width: 21px; height: 21px; background-image: url(\'data:image/svg+xml;charset=utf-8,%3C?xml version="1.0" encoding="utf-8"?%3E %3Csvg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 21 21" style="enable-background:new 0 0 21 21;" xml:space="preserve"%3E%3Cg transform="translate(0,0.01)"%3E%3Cpath d="m 10.5,1.24 c -5.11,0 -9.25,4.15 -9.25,9.25 0,5.1 4.15,9.25 9.25,9.25 5.1,0 9.25,-4.15 9.25,-9.25 0,-5.11 -4.14,-9.25 -9.25,-9.25 z m 4.39,11.53 c -1.93,1.93 -4.78,2.31 -6.7,2.31 -0.7,0 -1.41,-0.05 -2.1,-0.16 0,0 -1.02,-5.64 2.14,-8.81 0.83,-0.83 1.95,-1.28 3.13,-1.28 1.27,0 2.49,0.51 3.39,1.42 1.84,1.84 1.89,4.75 0.14,6.52 z" style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3Cpath d="M 10.5,-0.01 C 4.7,-0.01 0,4.7 0,10.49 c 0,5.79 4.7,10.5 10.5,10.5 5.8,0 10.5,-4.7 10.5,-10.5 C 20.99,4.7 16.3,-0.01 10.5,-0.01 Z m 0,19.75 c -5.11,0 -9.25,-4.15 -9.25,-9.25 0,-5.1 4.14,-9.26 9.25,-9.26 5.11,0 9.25,4.15 9.25,9.25 0,5.13 -4.14,9.26 -9.25,9.26 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpath d="M 14.74,6.25 C 12.9,4.41 9.98,4.35 8.23,6.1 5.07,9.27 6.09,14.91 6.09,14.91 c 0,0 5.64,1.02 8.81,-2.14 C 16.64,11 16.59,8.09 14.74,6.25 Z m -2.27,4.09 -0.91,1.87 -0.9,-1.87 -1.86,-0.91 1.86,-0.9 0.9,-1.87 0.91,1.87 1.86,0.9 z" style="opacity:0.35;enable-background:new" class="st1"/%3E%3Cpolygon points="11.56,12.21 10.66,10.34 8.8,9.43 10.66,8.53 11.56,6.66 12.47,8.53 14.33,9.43 12.47,10.34 " style="opacity:0.9;fill:%23ffffff;enable-background:new" class="st0"/%3E%3C/g%3E%3C/svg%3E\')', }, }; }, { "../../lib/sort_object_keys": 538 }, ], 621: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e) { var r = t.split(" "), i = r[0], a = r[1], o = n.isArrayOrTypedArray(e) ? n.mean(e) : e, s = 0.5 + o / 100, l = 1.5 + o / 100, c = ["", ""], u = [0, 0]; switch (i) { case "top": (c[0] = "top"), (u[1] = -l); break; case "bottom": (c[0] = "bottom"), (u[1] = l); } switch (a) { case "left": (c[1] = "right"), (u[0] = -s); break; case "right": (c[1] = "left"), (u[0] = s); } return { anchor: c[0] && c[1] ? c.join("-") : c[0] ? c[0] : c[1] ? c[1] : "center", offset: u, }; }; }, { "../../lib": 515 }, ], 622: [ function (t, e, r) { "use strict"; var n = t("mapbox-gl/dist/mapbox-gl-unminified"), i = t("../../lib"), a = i.strTranslate, o = i.strScale, s = t("../../plots/get_data").getSubplotCalcData, l = t("../../constants/xmlns_namespaces"), c = t("@plotly/d3"), u = t("../../components/drawing"), f = t("../../lib/svg_text_utils"), h = t("./mapbox"), p = (r.constants = t("./constants")); function d(t) { return ( "string" == typeof t && (-1 !== p.styleValuesMapbox.indexOf(t) || 0 === t.indexOf("mapbox://")) ); } (r.name = "mapbox"), (r.attr = "subplot"), (r.idRoot = "mapbox"), (r.idRegex = r.attrRegex = i.counterRegex("mapbox")), (r.attributes = { subplot: { valType: "subplotid", dflt: "mapbox", editType: "calc", }, }), (r.layoutAttributes = t("./layout_attributes")), (r.supplyLayoutDefaults = t("./layout_defaults")), (r.plot = function (t) { var e = t._fullLayout, r = t.calcdata, a = e._subplots.mapbox; if (n.version !== p.requiredVersion) throw new Error(p.wrongVersionErrorMsg); var o = (function (t, e) { var r = t._fullLayout; if ("" === t._context.mapboxAccessToken) return ""; for ( var n = [], a = [], o = !1, s = !1, l = 0; l < e.length; l++ ) { var c = r[e[l]], u = c.accesstoken; d(c.style) && (u ? i.pushUnique(n, u) : (d(c._input.style) && (i.error( "Uses Mapbox map style, but did not set an access token.", ), (o = !0)), (s = !0))), u && i.pushUnique(a, u); } if (s) { var f = o ? p.noAccessTokenErrorMsg : p.missingStyleErrorMsg; throw (i.error(f), new Error(f)); } return n.length ? (n.length > 1 && i.warn(p.multipleTokensErrorMsg), n[0]) : (a.length && i.log( [ "Listed mapbox access token(s)", a.join(","), "but did not use a Mapbox map style, ignoring token(s).", ].join(" "), ), ""); })(t, a); n.accessToken = o; for (var l = 0; l < a.length; l++) { var c = a[l], u = s(r, "mapbox", c), f = e[c], m = f._subplot; m || ((m = new h(t, c)), (e[c]._subplot = m)), m.viewInitial || (m.viewInitial = { center: i.extendFlat({}, f.center), zoom: f.zoom, bearing: f.bearing, pitch: f.pitch, }), m.plot(u, e, t._promises); } }), (r.clean = function (t, e, r, n) { for ( var i = n._subplots.mapbox || [], a = 0; a < i.length; a++ ) { var o = i[a]; !e[o] && n[o]._subplot && n[o]._subplot.destroy(); } }), (r.toSVG = function (t) { for ( var e = t._fullLayout, r = e._subplots.mapbox, n = e._size, i = 0; i < r.length; i++ ) { var s = e[r[i]], h = s.domain, d = s._subplot.toImage("png"); e._glimages.append("svg:image").attr({ xmlns: l.svg, "xlink:href": d, x: n.l + n.w * h.x[0], y: n.t + n.h * (1 - h.y[1]), width: n.w * (h.x[1] - h.x[0]), height: n.h * (h.y[1] - h.y[0]), preserveAspectRatio: "none", }); var m = c.select(s._subplot.div); if ( !( null === m.select(".mapboxgl-ctrl-logo").node().offsetParent ) ) { var g = e._glimages.append("g"); g.attr( "transform", a( n.l + n.w * h.x[0] + 10, n.t + n.h * (1 - h.y[0]) - 31, ), ), g .append("path") .attr("d", p.mapboxLogo.path0) .style({ opacity: 0.9, fill: "#ffffff", "enable-background": "new", }), g .append("path") .attr("d", p.mapboxLogo.path1) .style("opacity", 0.35) .style("enable-background", "new"), g .append("path") .attr("d", p.mapboxLogo.path2) .style("opacity", 0.35) .style("enable-background", "new"), g .append("polygon") .attr("points", p.mapboxLogo.polygon) .style({ opacity: 0.9, fill: "#ffffff", "enable-background": "new", }); } var v = m .select(".mapboxgl-ctrl-attrib") .text() .replace("Improve this map", ""), y = e._glimages.append("g"), x = y.append("text"); x.text(v).classed("static-attribution", !0).attr({ "font-size": 12, "font-family": "Arial", color: "rgba(0, 0, 0, 0.75)", "text-anchor": "end", "data-unformatted": v, }); var b = u.bBox(x.node()), _ = n.w * (h.x[1] - h.x[0]); if (b.width > _ / 2) { var w = v.split("|").join("
"); x .text(w) .attr("data-unformatted", w) .call(f.convertToTspans, t), (b = u.bBox(x.node())); } x.attr("transform", a(-3, 8 - b.height)), y.insert("rect", ".static-attribution").attr({ x: -b.width - 6, y: -b.height - 3, width: b.width + 6, height: b.height + 3, fill: "rgba(255, 255, 255, 0.75)", }); var T = 1; b.width + 6 > _ && (T = _ / (b.width + 6)); var k = [n.l + n.w * h.x[1], n.t + n.h * (1 - h.y[0])]; y.attr("transform", a(k[0], k[1]) + o(T)); } }), (r.updateFx = function (t) { for ( var e = t._fullLayout, r = e._subplots.mapbox, n = 0; n < r.length; n++ ) { e[r[n]]._subplot.updateFx(e); } }); }, { "../../components/drawing": 389, "../../constants/xmlns_namespaces": 492, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plots/get_data": 602, "./constants": 620, "./layout_attributes": 624, "./layout_defaults": 625, "./mapbox": 626, "@plotly/d3": 58, "mapbox-gl/dist/mapbox-gl-unminified": 239, }, ], 623: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../lib/svg_text_utils").sanitizeHTML, a = t("./convert_text_opts"), o = t("./constants"); function s(t, e) { (this.subplot = t), (this.uid = t.uid + "-" + e), (this.index = e), (this.idSource = "source-" + this.uid), (this.idLayer = o.layoutLayerPrefix + this.uid), (this.sourceType = null), (this.source = null), (this.layerType = null), (this.below = null), (this.visible = !1); } var l = s.prototype; function c(t) { if (!t.visible) return !1; var e = t.source; if (Array.isArray(e) && e.length > 0) { for (var r = 0; r < e.length; r++) if ("string" != typeof e[r] || 0 === e[r].length) return !1; return !0; } return ( n.isPlainObject(e) || ("string" == typeof e && e.length > 0) ); } function u(t) { var e = {}, r = {}; switch (t.type) { case "circle": n.extendFlat(r, { "circle-radius": t.circle.radius, "circle-color": t.color, "circle-opacity": t.opacity, }); break; case "line": n.extendFlat(r, { "line-width": t.line.width, "line-color": t.color, "line-opacity": t.opacity, "line-dasharray": t.line.dash, }); break; case "fill": n.extendFlat(r, { "fill-color": t.color, "fill-outline-color": t.fill.outlinecolor, "fill-opacity": t.opacity, }); break; case "symbol": var i = t.symbol, o = a(i.textposition, i.iconsize); n.extendFlat(e, { "icon-image": i.icon + "-15", "icon-size": i.iconsize / 10, "text-field": i.text, "text-size": i.textfont.size, "text-anchor": o.anchor, "text-offset": o.offset, "symbol-placement": i.placement, }), n.extendFlat(r, { "icon-color": t.color, "text-color": i.textfont.color, "text-opacity": t.opacity, }); break; case "raster": n.extendFlat(r, { "raster-fade-duration": 0, "raster-opacity": t.opacity, }); } return { layout: e, paint: r }; } (l.update = function (t) { this.visible ? this.needsNewImage(t) ? this.updateImage(t) : this.needsNewSource(t) ? (this.removeLayer(), this.updateSource(t), this.updateLayer(t)) : this.needsNewLayer(t) ? this.updateLayer(t) : this.updateStyle(t) : (this.updateSource(t), this.updateLayer(t)), (this.visible = c(t)); }), (l.needsNewImage = function (t) { return ( this.subplot.map.getSource(this.idSource) && "image" === this.sourceType && "image" === t.sourcetype && (this.source !== t.source || JSON.stringify(this.coordinates) !== JSON.stringify(t.coordinates)) ); }), (l.needsNewSource = function (t) { return ( this.sourceType !== t.sourcetype || JSON.stringify(this.source) !== JSON.stringify(t.source) || this.layerType !== t.type ); }), (l.needsNewLayer = function (t) { return ( this.layerType !== t.type || this.below !== this.subplot.belowLookup["layout-" + this.index] ); }), (l.lookupBelow = function () { return this.subplot.belowLookup["layout-" + this.index]; }), (l.updateImage = function (t) { this.subplot.map.getSource(this.idSource).updateImage({ url: t.source, coordinates: t.coordinates, }); var e = this.findFollowingMapboxLayerId( this.lookupBelow(), ); null !== e && this.subplot.map.moveLayer(this.idLayer, e); }), (l.updateSource = function (t) { var e = this.subplot.map; if ( (e.getSource(this.idSource) && e.removeSource(this.idSource), (this.sourceType = t.sourcetype), (this.source = t.source), c(t)) ) { var r = (function (t) { var e, r = t.sourcetype, n = t.source, a = { type: r }; "geojson" === r ? (e = "data") : "vector" === r ? (e = "string" == typeof n ? "url" : "tiles") : "raster" === r ? ((e = "tiles"), (a.tileSize = 256)) : "image" === r && ((e = "url"), (a.coordinates = t.coordinates)); (a[e] = n), t.sourceattribution && (a.attribution = i(t.sourceattribution)); return a; })(t); e.addSource(this.idSource, r); } }), (l.findFollowingMapboxLayerId = function (t) { if ("traces" === t) for ( var e = this.subplot.getMapLayers(), r = 0; r < e.length; r++ ) { var n = e[r].id; if ( "string" == typeof n && 0 === n.indexOf(o.traceLayerPrefix) ) { t = n; break; } } return t; }), (l.updateLayer = function (t) { var e = this.subplot, r = u(t), n = this.lookupBelow(), i = this.findFollowingMapboxLayerId(n); this.removeLayer(), c(t) && e.addLayer( { id: this.idLayer, source: this.idSource, "source-layer": t.sourcelayer || "", type: t.type, minzoom: t.minzoom, maxzoom: t.maxzoom, layout: r.layout, paint: r.paint, }, i, ), (this.layerType = t.type), (this.below = n); }), (l.updateStyle = function (t) { if (c(t)) { var e = u(t); this.subplot.setOptions( this.idLayer, "setLayoutProperty", e.layout, ), this.subplot.setOptions( this.idLayer, "setPaintProperty", e.paint, ); } }), (l.removeLayer = function () { var t = this.subplot.map; t.getLayer(this.idLayer) && t.removeLayer(this.idLayer); }), (l.dispose = function () { var t = this.subplot.map; t.getLayer(this.idLayer) && t.removeLayer(this.idLayer), t.getSource(this.idSource) && t.removeSource(this.idSource); }), (e.exports = function (t, e, r) { var n = new s(t, e); return n.update(r), n; }); }, { "../../lib": 515, "../../lib/svg_text_utils": 541, "./constants": 620, "./convert_text_opts": 621, }, ], 624: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/color").defaultLine, a = t("../domain").attributes, o = t("../font_attributes"), s = t("../../traces/scatter/attributes").textposition, l = t("../../plot_api/edit_types").overrideAll, c = t("../../plot_api/plot_template").templatedArray, u = t("./constants"), f = o({}); (f.family.dflt = "Open Sans Regular, Arial Unicode MS Regular"), ((e.exports = l( { _arrayAttrRegexps: [ n.counterRegex("mapbox", ".layers", !0), ], domain: a({ name: "mapbox" }), accesstoken: { valType: "string", noBlank: !0, strict: !0, }, style: { valType: "any", values: u.styleValuesMapbox.concat( u.styleValuesNonMapbox, ), dflt: u.styleValueDflt, }, center: { lon: { valType: "number", dflt: 0 }, lat: { valType: "number", dflt: 0 }, }, zoom: { valType: "number", dflt: 1 }, bearing: { valType: "number", dflt: 0 }, pitch: { valType: "number", dflt: 0 }, bounds: { west: { valType: "number" }, east: { valType: "number" }, south: { valType: "number" }, north: { valType: "number" }, }, layers: c("layer", { visible: { valType: "boolean", dflt: !0 }, sourcetype: { valType: "enumerated", values: ["geojson", "vector", "raster", "image"], dflt: "geojson", }, source: { valType: "any" }, sourcelayer: { valType: "string", dflt: "" }, sourceattribution: { valType: "string" }, type: { valType: "enumerated", values: [ "circle", "line", "fill", "symbol", "raster", ], dflt: "circle", }, coordinates: { valType: "any" }, below: { valType: "string" }, color: { valType: "color", dflt: i }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, }, minzoom: { valType: "number", min: 0, max: 24, dflt: 0, }, maxzoom: { valType: "number", min: 0, max: 24, dflt: 24, }, circle: { radius: { valType: "number", dflt: 15 } }, line: { width: { valType: "number", dflt: 2 }, dash: { valType: "data_array" }, }, fill: { outlinecolor: { valType: "color", dflt: i } }, symbol: { icon: { valType: "string", dflt: "marker" }, iconsize: { valType: "number", dflt: 10 }, text: { valType: "string", dflt: "" }, placement: { valType: "enumerated", values: ["point", "line", "line-center"], dflt: "point", }, textfont: f, textposition: n.extendFlat({}, s, { arrayOk: !1 }), }, }), }, "plot", "from-root", )).uirevision = { valType: "any", editType: "none" }); }, { "../../components/color": 367, "../../lib": 515, "../../plot_api/edit_types": 548, "../../plot_api/plot_template": 555, "../../traces/scatter/attributes": 936, "../domain": 593, "../font_attributes": 594, "./constants": 620, }, ], 625: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../subplot_defaults"), a = t("../array_container_defaults"), o = t("./layout_attributes"); function s(t, e, r, n) { r("accesstoken", n.accessToken), r("style"), r("center.lon"), r("center.lat"), r("zoom"), r("bearing"), r("pitch"); var i = r("bounds.west"), o = r("bounds.east"), s = r("bounds.south"), c = r("bounds.north"); (void 0 !== i && void 0 !== o && void 0 !== s && void 0 !== c) || delete e.bounds, a(t, e, { name: "layers", handleItemDefaults: l }), (e._input = t); } function l(t, e) { function r(r, i) { return n.coerce(t, e, o.layers, r, i); } if (r("visible")) { var i, a = r("sourcetype"), s = "raster" === a || "image" === a; r("source"), r("sourceattribution"), "vector" === a && r("sourcelayer"), "image" === a && r("coordinates"), s && (i = "raster"); var l = r("type", i); s && "raster" !== l && ((l = e.type = "raster"), n.log( "Source types *raster* and *image* must drawn *raster* layer type.", )), r("below"), r("color"), r("opacity"), r("minzoom"), r("maxzoom"), "circle" === l && r("circle.radius"), "line" === l && (r("line.width"), r("line.dash")), "fill" === l && r("fill.outlinecolor"), "symbol" === l && (r("symbol.icon"), r("symbol.iconsize"), r("symbol.text"), n.coerceFont(r, "symbol.textfont"), r("symbol.textposition"), r("symbol.placement")); } } e.exports = function (t, e, r) { i(t, e, r, { type: "mapbox", attributes: o, handleDefaults: s, partition: "y", accessToken: e._mapboxAccessToken, }); }; }, { "../../lib": 515, "../array_container_defaults": 561, "../subplot_defaults": 641, "./layout_attributes": 624, }, ], 626: [ function (t, e, r) { "use strict"; var n = t("mapbox-gl/dist/mapbox-gl-unminified"), i = t("../../lib"), a = t("../../lib/geo_location_utils"), o = t("../../registry"), s = t("../cartesian/axes"), l = t("../../components/dragelement"), c = t("../../components/fx"), u = t("../../components/dragelement/helpers"), f = u.drawMode, h = u.selectMode, p = t("../../components/selections").prepSelect, d = t("../../components/selections").clearOutline, m = t("../../components/selections").clearSelectionsCache, g = t("../../components/selections").selectOnClick, v = t("./constants"), y = t("./layers"); function x(t, e) { (this.id = e), (this.gd = t); var r = t._fullLayout, n = t._context; (this.container = r._glcontainer.node()), (this.isStatic = n.staticPlot), (this.uid = r._uid + "-" + this.id), (this.div = null), (this.xaxis = null), (this.yaxis = null), this.createFramework(r), (this.map = null), (this.accessToken = null), (this.styleObj = null), (this.traceHash = {}), (this.layerList = []), (this.belowLookup = {}), (this.dragging = !1), (this.wheeling = !1); } var b = x.prototype; (b.plot = function (t, e, r) { var n, i = this, a = e[i.id]; i.map && a.accesstoken !== i.accessToken && (i.map.remove(), (i.map = null), (i.styleObj = null), (i.traceHash = {}), (i.layerList = [])), (n = i.map ? new Promise(function (r, n) { i.updateMap(t, e, r, n); }) : new Promise(function (r, n) { i.createMap(t, e, r, n); })), r.push(n); }), (b.createMap = function (t, e, r, i) { var o = this, s = e[o.id], l = (o.styleObj = w(s.style)); o.accessToken = s.accesstoken; var c = s.bounds, u = c ? [ [c.west, c.south], [c.east, c.north], ] : null, f = (o.map = new n.Map({ container: o.div, style: l.style, center: k(s.center), zoom: s.zoom, bearing: s.bearing, pitch: s.pitch, maxBounds: u, interactive: !o.isStatic, preserveDrawingBuffer: o.isStatic, doubleClickZoom: !1, boxZoom: !1, attributionControl: !1, }).addControl( new n.AttributionControl({ compact: !0 }), )); (f._canvas.style.left = "0px"), (f._canvas.style.top = "0px"), o.rejectOnError(i), o.isStatic || o.initFx(t, e); var h = []; h.push( new Promise(function (t) { f.once("load", t); }), ), (h = h.concat(a.fetchTraceGeoData(t))), Promise.all(h) .then(function () { o.fillBelowLookup(t, e), o.updateData(t), o.updateLayout(e), o.resolveOnRender(r); }) .catch(i); }), (b.updateMap = function (t, e, r, n) { var i = this, o = i.map, s = e[this.id]; i.rejectOnError(n); var l = [], c = w(s.style); JSON.stringify(i.styleObj) !== JSON.stringify(c) && ((i.styleObj = c), o.setStyle(c.style), (i.traceHash = {}), l.push( new Promise(function (t) { o.once("styledata", t); }), )), (l = l.concat(a.fetchTraceGeoData(t))), Promise.all(l) .then(function () { i.fillBelowLookup(t, e), i.updateData(t), i.updateLayout(e), i.resolveOnRender(r); }) .catch(n); }), (b.fillBelowLookup = function (t, e) { var r, n, i = e[this.id].layers, a = (this.belowLookup = {}), o = !1; for (r = 0; r < t.length; r++) { var s = t[r][0].trace, l = s._module; "string" == typeof s.below ? (n = s.below) : l.getBelow && (n = l.getBelow(s, this)), "" === n && (o = !0), (a["trace-" + s.uid] = n || ""); } for (r = 0; r < i.length; r++) { var c = i[r]; (n = "string" == typeof c.below ? c.below : o ? "traces" : ""), (a["layout-" + r] = n); } var u, f, h = {}; for (u in a) h[(n = a[u])] ? h[n].push(u) : (h[n] = [u]); for (n in h) { var p = h[n]; if (p.length > 1) for (r = 0; r < p.length; r++) 0 === (u = p[r]).indexOf("trace-") ? ((f = u.split("trace-")[1]), this.traceHash[f] && (this.traceHash[f].below = null)) : 0 === u.indexOf("layout-") && ((f = u.split("layout-")[1]), this.layerList[f] && (this.layerList[f].below = null)); } }); var _ = { choroplethmapbox: 0, densitymapbox: 1, scattermapbox: 2, }; function w(t) { var e = {}; return ( i.isPlainObject(t) ? ((e.id = t.id), (e.style = t)) : "string" == typeof t ? ((e.id = t), -1 !== v.styleValuesMapbox.indexOf(t) ? (e.style = T(t)) : v.stylesNonMapbox[t] ? (e.style = v.stylesNonMapbox[t]) : (e.style = t)) : ((e.id = v.styleValueDflt), (e.style = T(v.styleValueDflt))), (e.transition = { duration: 0, delay: 0 }), e ); } function T(t) { return v.styleUrlPrefix + t + "-" + v.styleUrlSuffix; } function k(t) { return [t.lon, t.lat]; } (b.updateData = function (t) { var e, r, n, i, a = this.traceHash, o = t.slice().sort(function (t, e) { return _[t[0].trace.type] - _[e[0].trace.type]; }); for (n = 0; n < o.length; n++) { var s = o[n], l = !1; (e = a[(r = s[0].trace).uid]) && (e.type === r.type ? (e.update(s), (l = !0)) : e.dispose()), !l && r._module && (a[r.uid] = r._module.plot(this, s)); } var c = Object.keys(a); t: for (n = 0; n < c.length; n++) { var u = c[n]; for (i = 0; i < t.length; i++) if (u === (r = t[i][0].trace).uid) continue t; (e = a[u]).dispose(), delete a[u]; } }), (b.updateLayout = function (t) { var e = this.map, r = t[this.id]; this.dragging || this.wheeling || (e.setCenter(k(r.center)), e.setZoom(r.zoom), e.setBearing(r.bearing), e.setPitch(r.pitch)), this.updateLayers(t), this.updateFramework(t), this.updateFx(t), this.map.resize(), this.gd._context._scrollZoom.mapbox ? e.scrollZoom.enable() : e.scrollZoom.disable(); }), (b.resolveOnRender = function (t) { var e = this.map; e.on("render", function r() { e.loaded() && (e.off("render", r), setTimeout(t, 10)); }); }), (b.rejectOnError = function (t) { var e = this.map; function r() { t(new Error(v.mapOnErrorMsg)); } e.once("error", r), e.once("style.error", r), e.once("source.error", r), e.once("tile.error", r), e.once("layer.error", r); }), (b.createFramework = function (t) { var e = this, r = (e.div = document.createElement("div")); (r.id = e.uid), (r.style.position = "absolute"), e.container.appendChild(r), (e.xaxis = { _id: "x", c2p: function (t) { return e.project(t).x; }, }), (e.yaxis = { _id: "y", c2p: function (t) { return e.project(t).y; }, }), e.updateFramework(t), (e.mockAxis = { type: "linear", showexponent: "all", exponentformat: "B", }), s.setConvert(e.mockAxis, t); }), (b.initFx = function (t, e) { var r = this, n = r.gd, i = r.map; function a() { c.loneUnhover(e._hoverlayer); } function s() { var t = r.getView(); n.emit( "plotly_relayouting", r.getViewEditsWithDerived(t), ); } i.on("moveend", function (t) { if (r.map) { var e = n._fullLayout; if (t.originalEvent || r.wheeling) { var i = e[r.id]; o.call( "_storeDirectGUIEdit", n.layout, e._preGUI, r.getViewEdits(i), ); var a = r.getView(); (i._input.center = i.center = a.center), (i._input.zoom = i.zoom = a.zoom), (i._input.bearing = i.bearing = a.bearing), (i._input.pitch = i.pitch = a.pitch), n.emit( "plotly_relayout", r.getViewEditsWithDerived(a), ); } t.originalEvent && "mouseup" === t.originalEvent.type ? (r.dragging = !1) : r.wheeling && (r.wheeling = !1), e._rehover && e._rehover(); } }), i.on("wheel", function () { r.wheeling = !0; }), i.on("mousemove", function (t) { var e = r.div.getBoundingClientRect(), a = [ t.originalEvent.offsetX, t.originalEvent.offsetY, ]; (t.target.getBoundingClientRect = function () { return e; }), (r.xaxis.p2c = function () { return i.unproject(a).lng; }), (r.yaxis.p2c = function () { return i.unproject(a).lat; }), (n._fullLayout._rehover = function () { n._fullLayout._hoversubplot === r.id && n._fullLayout[r.id] && c.hover(n, t, r.id); }), c.hover(n, t, r.id), (n._fullLayout._hoversubplot = r.id); }), i.on("dragstart", function () { (r.dragging = !0), a(); }), i.on("zoomstart", a), i.on("mouseout", function () { n._fullLayout._hoversubplot = null; }), i.on("drag", s), i.on("zoom", s), i.on("dblclick", function () { var t = n._fullLayout[r.id]; o.call( "_storeDirectGUIEdit", n.layout, n._fullLayout._preGUI, r.getViewEdits(t), ); var e = r.viewInitial; i.setCenter(k(e.center)), i.setZoom(e.zoom), i.setBearing(e.bearing), i.setPitch(e.pitch); var a = r.getView(); (t._input.center = t.center = a.center), (t._input.zoom = t.zoom = a.zoom), (t._input.bearing = t.bearing = a.bearing), (t._input.pitch = t.pitch = a.pitch), n.emit("plotly_doubleclick", null), n.emit( "plotly_relayout", r.getViewEditsWithDerived(a), ); }), (r.clearOutline = function () { m(r.dragOptions), d(r.dragOptions.gd); }), (r.onClickInPanFn = function (t) { return function (e) { var i = n._fullLayout.clickmode; i.indexOf("select") > -1 && g( e.originalEvent, n, [r.xaxis], [r.yaxis], r.id, t, ), i.indexOf("event") > -1 && c.click(n, e.originalEvent); }; }); }), (b.updateFx = function (t) { var e = this, r = e.map, n = e.gd; if (!e.isStatic) { var a, o = t.dragmode; a = function (t, r) { r.isRect ? ((t.range = {})[e.id] = [ c([r.xmin, r.ymin]), c([r.xmax, r.ymax]), ]) : ((t.lassoPoints = {})[e.id] = r.map(c)); }; var s = e.dragOptions; (e.dragOptions = i.extendDeep(s || {}, { dragmode: t.dragmode, element: e.div, gd: n, plotinfo: { id: e.id, domain: t[e.id].domain, xaxis: e.xaxis, yaxis: e.yaxis, fillRangeItems: a, }, xaxes: [e.xaxis], yaxes: [e.yaxis], subplot: e.id, })), r.off("click", e.onClickInPanHandler), h(o) || f(o) ? (r.dragPan.disable(), r.on("zoomstart", e.clearSelect), (e.dragOptions.prepFn = function (t, r, n) { p(t, r, n, e.dragOptions, o); }), l.init(e.dragOptions)) : (r.dragPan.enable(), r.off("zoomstart", e.clearSelect), (e.div.onmousedown = null), (e.div.ontouchstart = null), e.div.removeEventListener( "touchstart", e.div._ontouchstart, ), (e.onClickInPanHandler = e.onClickInPanFn( e.dragOptions, )), r.on("click", e.onClickInPanHandler)); } function c(t) { var r = e.map.unproject(t); return [r.lng, r.lat]; } }), (b.updateFramework = function (t) { var e = t[this.id].domain, r = t._size, n = this.div.style; (n.width = r.w * (e.x[1] - e.x[0]) + "px"), (n.height = r.h * (e.y[1] - e.y[0]) + "px"), (n.left = r.l + e.x[0] * r.w + "px"), (n.top = r.t + (1 - e.y[1]) * r.h + "px"), (this.xaxis._offset = r.l + e.x[0] * r.w), (this.xaxis._length = r.w * (e.x[1] - e.x[0])), (this.yaxis._offset = r.t + (1 - e.y[1]) * r.h), (this.yaxis._length = r.h * (e.y[1] - e.y[0])); }), (b.updateLayers = function (t) { var e, r = t[this.id].layers, n = this.layerList; if (r.length !== n.length) { for (e = 0; e < n.length; e++) n[e].dispose(); for (n = this.layerList = [], e = 0; e < r.length; e++) n.push(y(this, e, r[e])); } else for (e = 0; e < r.length; e++) n[e].update(r[e]); }), (b.destroy = function () { this.map && (this.map.remove(), (this.map = null), this.container.removeChild(this.div)); }), (b.toImage = function () { return this.map.stop(), this.map.getCanvas().toDataURL(); }), (b.setOptions = function (t, e, r) { for (var n in r) this.map[e](t, n, r[n]); }), (b.getMapLayers = function () { return this.map.getStyle().layers; }), (b.addLayer = function (t, e) { var r = this.map; if ("string" == typeof e) { if ("" === e) return void r.addLayer(t, e); for ( var n = this.getMapLayers(), a = 0; a < n.length; a++ ) if (e === n[a].id) return void r.addLayer(t, e); i.warn( [ "Trying to add layer with *below* value", e, "referencing a layer that does not exist", "or that does not yet exist.", ].join(" "), ); } r.addLayer(t); }), (b.project = function (t) { return this.map.project(new n.LngLat(t[0], t[1])); }), (b.getView = function () { var t = this.map, e = t.getCenter(), r = { lon: e.lng, lat: e.lat }, n = t.getCanvas(), i = parseInt(n.style.width), a = parseInt(n.style.height); return { center: r, zoom: t.getZoom(), bearing: t.getBearing(), pitch: t.getPitch(), _derived: { coordinates: [ t.unproject([0, 0]).toArray(), t.unproject([i, 0]).toArray(), t.unproject([i, a]).toArray(), t.unproject([0, a]).toArray(), ], }, }; }), (b.getViewEdits = function (t) { for ( var e = this.id, r = ["center", "zoom", "bearing", "pitch"], n = {}, i = 0; i < r.length; i++ ) { var a = r[i]; n[e + "." + a] = t[a]; } return n; }), (b.getViewEditsWithDerived = function (t) { var e = this.id, r = this.getViewEdits(t); return (r[e + "._derived"] = t._derived), r; }), (e.exports = x); }, { "../../components/dragelement": 386, "../../components/dragelement/helpers": 385, "../../components/fx": 407, "../../components/selections": 455, "../../lib": 515, "../../lib/geo_location_utils": 508, "../../registry": 647, "../cartesian/axes": 566, "./constants": 620, "./layers": 623, "mapbox-gl/dist/mapbox-gl-unminified": 239, }, ], 627: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.editType; return { t: { valType: "number", dflt: 0, editType: e }, r: { valType: "number", dflt: 0, editType: e }, b: { valType: "number", dflt: 0, editType: e }, l: { valType: "number", dflt: 0, editType: e }, editType: e, }; }; }, {}, ], 628: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("d3-time-format").timeFormatLocale, a = t("d3-format").formatLocale, o = t("fast-isnumeric"), s = t("../registry"), l = t("../plot_api/plot_schema"), c = t("../plot_api/plot_template"), u = t("../lib"), f = t("../components/color"), h = t("../constants/numerical").BADNUM, p = t("./cartesian/axis_ids"), d = t("../components/shapes/handle_outline").clearOutline, m = t("./animation_attributes"), g = t("./frame_attributes"), v = t("../plots/get_data").getModuleCalcData, y = u.relinkPrivateKeys, x = u._, b = (e.exports = {}); u.extendFlat(b, s), (b.attributes = t("./attributes")), (b.attributes.type.values = b.allTypes), (b.fontAttrs = t("./font_attributes")), (b.layoutAttributes = t("./layout_attributes")), (b.fontWeight = "normal"); var _ = b.transformsRegistry, w = t("./command"); (b.executeAPICommand = w.executeAPICommand), (b.computeAPICommandBindings = w.computeAPICommandBindings), (b.manageCommandObserver = w.manageCommandObserver), (b.hasSimpleAPICommandBindings = w.hasSimpleAPICommandBindings), (b.redrawText = function (t) { return ( (t = u.getGraphDiv(t)), new Promise(function (e) { setTimeout(function () { t._fullLayout && (s.getComponentMethod("annotations", "draw")(t), s.getComponentMethod("legend", "draw")(t), s.getComponentMethod("colorbar", "draw")(t), e(b.previousPromises(t))); }, 300); }) ); }), (b.resize = function (t) { var e; t = u.getGraphDiv(t); var r = new Promise(function (r, n) { (t && !u.isHidden(t)) || n( new Error( "Resize must be passed a displayed plot div element.", ), ), t._redrawTimer && clearTimeout(t._redrawTimer), t._resolveResize && (e = t._resolveResize), (t._resolveResize = r), (t._redrawTimer = setTimeout(function () { if ( !t.layout || (t.layout.width && t.layout.height) || u.isHidden(t) ) r(t); else { delete t.layout.width, delete t.layout.height; var e = t.changed; (t.autoplay = !0), s .call("relayout", t, { autosize: !0 }) .then(function () { (t.changed = e), t._resolveResize === r && (delete t._resolveResize, r(t)); }); } }, 100)); }); return e && e(r), r; }), (b.previousPromises = function (t) { if ((t._promises || []).length) return Promise.all(t._promises).then(function () { t._promises = []; }); }), (b.addLinks = function (t) { if (t._context.showLink || t._context.showSources) { var e = t._fullLayout, r = u.ensureSingle( e._paper, "text", "js-plot-link-container", function (t) { t.style({ "font-family": '"Open Sans", Arial, sans-serif', "font-size": "12px", fill: f.defaultLine, "pointer-events": "all", }).each(function () { var t = n.select(this); t .append("tspan") .classed("js-link-to-tool", !0), t .append("tspan") .classed("js-link-spacer", !0), t .append("tspan") .classed("js-sourcelinks", !0); }); }, ), i = r.node(), a = { y: e._paper.attr("height") - 9 }; document.body.contains(i) && i.getComputedTextLength() >= e.width - 20 ? ((a["text-anchor"] = "start"), (a.x = 5)) : ((a["text-anchor"] = "end"), (a.x = e._paper.attr("width") - 7)), r.attr(a); var o = r.select(".js-link-to-tool"), s = r.select(".js-link-spacer"), l = r.select(".js-sourcelinks"); t._context.showSources && t._context.showSources(t), t._context.showLink && (function (t, e) { e.text(""); var r = e .append("a") .attr({ "xlink:xlink:href": "#", class: "link--impt link--embedview", "font-weight": "bold", }) .text( t._context.linkText + " " + String.fromCharCode(187), ); if (t._context.sendData) r.on("click", function () { b.sendDataToCloud(t); }); else { var n = window.location.pathname.split("/"), i = window.location.search; r.attr({ "xlink:xlink:show": "new", "xlink:xlink:href": "/" + n[2].split(".")[0] + "/" + n[1] + i, }); } })(t, o), s.text(o.text() && l.text() ? " - " : ""); } }), (b.sendDataToCloud = function (t) { var e = (window.PLOTLYENV || {}).BASE_URL || t._context.plotlyServerURL; if (e) { t.emit("plotly_beforeexport"); var r = n .select(t) .append("div") .attr("id", "hiddenform") .style("display", "none"), i = r.append("form").attr({ action: e + "/external", method: "post", target: "_blank", }); return ( (i .append("input") .attr({ type: "text", name: "data" }) .node().value = b.graphJson(t, !1, "keepdata")), i.node().submit(), r.remove(), t.emit("plotly_afterexport"), !1 ); } }); var T = [ "days", "shortDays", "months", "shortMonths", "periods", "dateTime", "date", "time", "decimal", "thousands", "grouping", "currency", ], k = ["year", "month", "dayMonth", "dayMonthYear"]; function A(t, e) { var r = t._context.locale; r || (r = "en-US"); var n = !1, i = {}; function a(t) { for (var r = !0, a = 0; a < e.length; a++) { var o = e[a]; i[o] || (t[o] ? (i[o] = t[o]) : (r = !1)); } r && (n = !0); } for (var o = 0; o < 2; o++) { for (var l = t._context.locales, c = 0; c < 2; c++) { var u = (l[r] || {}).format; if (u && (a(u), n)) break; l = s.localeRegistry; } var f = r.split("-")[0]; if (n || f === r) break; r = f; } return n || a(s.localeRegistry.en.format), i; } function M(t, e) { var r = { _fullLayout: e }, n = "x" === t._id.charAt(0), i = t._mainAxis._anchorAxis, a = "", o = "", s = ""; if ( (i && ((s = i._mainAxis._id), (a = n ? t._id + s : s + t._id)), !a || !e._plots[a]) ) { a = ""; for (var l = t._counterAxes, c = 0; c < l.length; c++) { var u = l[c], f = n ? t._id + u : u + t._id; o || (o = f); var h = p.getFromId(r, u); if (s && h.overlaying === s) { a = f; break; } } } return a || o; } function S(t) { var e = t.transforms; if (Array.isArray(e) && e.length) for (var r = 0; r < e.length; r++) { var n = e[r], i = n._module || _[n.type]; if (i && i.makesData) return !0; } return !1; } function E(t, e, r, n) { for ( var i = t.transforms, a = [t], o = 0; o < i.length; o++ ) { var s = i[o], l = _[s.type]; l && l.transform && (a = l.transform(a, { transform: s, fullTrace: t, fullData: e, layout: r, fullLayout: n, transformIndex: o, })); } return a; } function L(t) { return ( "string" == typeof t && "px" === t.substr(t.length - 2) && parseFloat(t) ); } function C(t) { var e = t.margin; if (!t._size) { var r = (t._size = { l: Math.round(e.l), r: Math.round(e.r), t: Math.round(e.t), b: Math.round(e.b), p: Math.round(e.pad), }); (r.w = Math.round(t.width) - r.l - r.r), (r.h = Math.round(t.height) - r.t - r.b); } t._pushmargin || (t._pushmargin = {}), t._pushmarginIds || (t._pushmarginIds = {}); } (b.supplyDefaults = function (t, e) { var r = e && e.skipUpdateCalc, n = t._fullLayout || {}; if (n._skipDefaults) delete n._skipDefaults; else { var o, l = (t._fullLayout = {}), c = t.layout || {}, f = t._fullData || [], h = (t._fullData = []), p = t.data || [], m = t.calcdata || [], g = t._context || {}; t._transitionData || b.createTransitionData(t), (l._dfltTitle = { plot: x(t, "Click to enter Plot title"), x: x(t, "Click to enter X axis title"), y: x(t, "Click to enter Y axis title"), colorbar: x(t, "Click to enter Colorscale title"), annotation: x(t, "new text"), }), (l._traceWord = x(t, "trace")); var v = A(t, T); if ( ((l._mapboxAccessToken = g.mapboxAccessToken), n._initialAutoSizeIsDone) ) { var _ = n.width, w = n.height; b.supplyLayoutGlobalDefaults(c, l, v), c.width || (l.width = _), c.height || (l.height = w), b.sanitizeMargins(l); } else { b.supplyLayoutGlobalDefaults(c, l, v); var M = !c.width || !c.height, S = l.autosize, E = g.autosizable; M && (S || E) ? b.plotAutoSize(t, c, l) : M && b.sanitizeMargins(l), !S && M && ((c.width = l.width), (c.height = l.height)); } (l._d3locale = (function (t, e) { return ( (t.decimal = e.charAt(0)), (t.thousands = e.charAt(1)), { numberFormat: function (e) { try { e = a(t).format(u.adjustFormat(e)); } catch (t) { return u.warnBadFormat(e), u.noFormat; } return e; }, timeFormat: i(t).utcFormat, } ); })(v, l.separators)), (l._extraFormat = A(t, k)), (l._initialAutoSizeIsDone = !0), (l._dataLength = p.length), (l._modules = []), (l._visibleModules = []), (l._basePlotModules = []); var L = (l._subplots = (function () { var t, e, r = s.collectableSubplotTypes, n = {}; if (!r) { r = []; var i = s.subplotsRegistry; for (var a in i) { var o = i[a].attr; if (o && (r.push(a), Array.isArray(o))) for (e = 0; e < o.length; e++) u.pushUnique(r, o[e]); } } for (t = 0; t < r.length; t++) n[r[t]] = []; return n; })()), P = (l._splomAxes = { x: {}, y: {} }), I = (l._splomSubplots = {}); (l._splomGridDflt = {}), (l._scatterStackOpts = {}), (l._firstScatter = {}), (l._alignmentOpts = {}), (l._colorAxes = {}), (l._requestRangeslider = {}), (l._traceUids = (function (t, e) { var r, n, i = e.length, a = []; for (r = 0; r < t.length; r++) { var o = t[r]._fullInput; o !== n && a.push(o), (n = o); } var s = a.length, l = new Array(i), c = {}; function f(t, e) { (l[e] = t), (c[t] = 1); } function h(t, e) { if (t && "string" == typeof t && !c[t]) return f(t, e), !0; } for (r = 0; r < i; r++) { var p = e[r].uid; "number" == typeof p && (p = String(p)), h(p, r) || (r < s && h(a[r].uid, r)) || f(u.randstr(c), r); } return l; })(f, p)), (l._globalTransforms = ( t._context || {} ).globalTransforms), b.supplyDataDefaults(p, h, c, l); var O = Object.keys(P.x), z = Object.keys(P.y); if (O.length > 1 && z.length > 1) { for ( s.getComponentMethod("grid", "sizeDefaults")(c, l), o = 0; o < O.length; o++ ) u.pushUnique(L.xaxis, O[o]); for (o = 0; o < z.length; o++) u.pushUnique(L.yaxis, z[o]); for (var D in I) u.pushUnique(L.cartesian, D); } if ( ((l._has = b._hasPlotType.bind(l)), f.length === h.length) ) for (o = 0; o < h.length; o++) y(h[o], f[o]); b.supplyLayoutModuleDefaults(c, l, h, t._transitionData); var R = l._visibleModules, F = []; for (o = 0; o < R.length; o++) { var B = R[o].crossTraceDefaults; B && u.pushUnique(F, B); } for (o = 0; o < F.length; o++) F[o](h, l); (l._hasOnlyLargeSploms = 1 === l._basePlotModules.length && "splom" === l._basePlotModules[0].name && O.length > 15 && z.length > 15 && 0 === l.shapes.length && 0 === l.images.length), b.linkSubplots(h, l, f, n), b.cleanPlot(h, l, f, n); var N = !(!n._has || !n._has("gl2d")), j = !(!l._has || !l._has("gl2d")), U = !(!n._has || !n._has("cartesian")) || N, V = !(!l._has || !l._has("cartesian")) || j; U && !V ? n._bgLayer.remove() : V && !U && (l._shouldCreateBgLayer = !0), n._zoomlayer && !t._dragging && d({ _fullLayout: n }), (function (t, e) { var r, n = []; e.meta && (r = e._meta = { meta: e.meta, layout: { meta: e.meta } }); for (var i = 0; i < t.length; i++) { var a = t[i]; a.meta ? (n[a.index] = a._meta = { meta: a.meta }) : e.meta && (a._meta = { meta: e.meta }), e.meta && (a._meta.layout = { meta: e.meta }); } n.length && (r || (r = e._meta = {}), (r.data = n)); })(h, l), y(l, n), s.getComponentMethod( "colorscale", "crossTraceDefaults", )(h, l), l._preGUI || (l._preGUI = {}), l._tracePreGUI || (l._tracePreGUI = {}); var H, q = l._tracePreGUI, G = {}; for (H in q) G[H] = "old"; for (o = 0; o < h.length; o++) G[(H = h[o]._fullInput.uid)] || (q[H] = {}), (G[H] = "new"); for (H in G) "old" === G[H] && delete q[H]; C(l), s.getComponentMethod("rangeslider", "makeData")(l), r || m.length !== h.length || b.supplyDefaultsUpdateCalc(m, h); } }), (b.supplyDefaultsUpdateCalc = function (t, e) { for (var r = 0; r < e.length; r++) { var n = e[r], i = (t[r] || [])[0]; if (i && i.trace) { var a = i.trace; if (a._hasCalcTransform) { var o, s, l, c = a._arrayAttrs; for (o = 0; o < c.length; o++) (s = c[o]), (l = u.nestedProperty(a, s).get().slice()), u.nestedProperty(n, s).set(l); } i.trace = n; } } }), (b.createTransitionData = function (t) { t._transitionData || (t._transitionData = {}), t._transitionData._frames || (t._transitionData._frames = []), t._transitionData._frameHash || (t._transitionData._frameHash = {}), t._transitionData._counter || (t._transitionData._counter = 0), t._transitionData._interruptCallbacks || (t._transitionData._interruptCallbacks = []); }), (b._hasPlotType = function (t) { var e, r = this._basePlotModules || []; for (e = 0; e < r.length; e++) if (r[e].name === t) return !0; var n = this._modules || []; for (e = 0; e < n.length; e++) { var i = n[e].name; if (i === t) return !0; var a = s.modules[i]; if (a && a.categories[t]) return !0; } return !1; }), (b.cleanPlot = function (t, e, r, n) { var i, a, o = n._basePlotModules || []; for (i = 0; i < o.length; i++) { var s = o[i]; s.clean && s.clean(t, e, r, n); } var l = n._has && n._has("gl"), c = e._has && e._has("gl"); l && !c && void 0 !== n._glcontainer && (n._glcontainer.selectAll(".gl-canvas").remove(), n._glcontainer.selectAll(".no-webgl").remove(), (n._glcanvas = null)); var u = !!n._infolayer; t: for (i = 0; i < r.length; i++) { var f = r[i].uid; for (a = 0; a < t.length; a++) { if (f === t[a].uid) continue t; } u && n._infolayer.select(".cb" + f).remove(); } }), (b.linkSubplots = function (t, e, r, n) { var i, a, o = n._plots || {}, l = (e._plots = {}), c = e._subplots, f = { _fullData: t, _fullLayout: e }, h = c.cartesian.concat(c.gl2d || []); for (i = 0; i < h.length; i++) { var d, m = h[i], g = o[m], v = p.getFromId(f, m, "x"), y = p.getFromId(f, m, "y"); for ( g ? (d = l[m] = g) : ((d = l[m] = {}).id = m), v._counterAxes.push(y._id), y._counterAxes.push(v._id), v._subplotsWith.push(m), y._subplotsWith.push(m), d.xaxis = v, d.yaxis = y, d._hasClipOnAxisFalse = !1, a = 0; a < t.length; a++ ) { var x = t[a]; if ( x.xaxis === d.xaxis._id && x.yaxis === d.yaxis._id && !1 === x.cliponaxis ) { d._hasClipOnAxisFalse = !0; break; } } } var b, _ = p.list(f, null, !0); for (i = 0; i < _.length; i++) { var w = null; (b = _[i]).overlaying && (w = p.getFromId(f, b.overlaying)) && w.overlaying && ((b.overlaying = !1), (w = null)), (b._mainAxis = w || b), w && (b.domain = w.domain.slice()), (b._anchorAxis = "free" === b.anchor ? null : p.getFromId(f, b.anchor)); } for (i = 0; i < _.length; i++) if ( ((b = _[i])._counterAxes.sort(p.idSort), b._subplotsWith.sort(u.subplotSort), (b._mainSubplot = M(b, e)), b._counterAxes.length && ((b.spikemode && -1 !== b.spikemode.indexOf("across")) || (b.automargin && b.mirror && "free" !== b.anchor) || s.getComponentMethod( "rangeslider", "isVisible", )(b))) ) { var T = 1, k = 0; for (a = 0; a < b._counterAxes.length; a++) { var A = p.getFromId(f, b._counterAxes[a]); (T = Math.min(T, A.domain[0])), (k = Math.max(k, A.domain[1])); } T < k && ((b._counterDomainMin = T), (b._counterDomainMax = k)); } }), (b.clearExpandedTraceDefaultColors = function (t) { var e, r, n; for ( r = [], (e = t._module._colorAttrs) || ((t._module._colorAttrs = e = []), l.crawl( t._module.attributes, function (t, n, i, a) { (r[a] = n), (r.length = a + 1), "color" === t.valType && void 0 === t.dflt && e.push(r.join(".")); }, )), n = 0; n < e.length; n++ ) { u.nestedProperty(t, "_input." + e[n]).get() || u.nestedProperty(t, e[n]).set(null); } }), (b.supplyDataDefaults = function (t, e, r, n) { var i, a, o, l = n._modules, f = n._visibleModules, h = n._basePlotModules, p = 0, d = 0; function m(t) { e.push(t); var r = t._module; r && (u.pushUnique(l, r), !0 === t.visible && u.pushUnique(f, r), u.pushUnique(h, t._module.basePlotModule), p++, !1 !== t._input.visible && d++); } n._transformModules = []; var g = {}, v = [], x = (r.template || {}).data || {}, _ = c.traceTemplater(x); for (i = 0; i < t.length; i++) { if ( ((o = t[i]), ((a = _.newTrace(o)).uid = n._traceUids[i]), b.supplyTraceDefaults(o, a, d, n, i), (a.index = i), (a._input = o), (a._expandedIndex = p), a.transforms && a.transforms.length) ) for ( var w = !1 !== o.visible && !1 === a.visible, T = E(a, e, r, n), k = 0; k < T.length; k++ ) { var A = T[k], M = { _template: a._template, type: a.type, uid: a.uid + k, }; w && !1 === A.visible && delete A.visible, b.supplyTraceDefaults(A, M, p, n, i), y(M, A), (M.index = i), (M._input = o), (M._fullInput = a), (M._expandedIndex = p), (M._expandedInput = A), m(M); } else (a._fullInput = a), (a._expandedInput = a), m(a); s.traceIs(a, "carpetAxis") && (g[a.carpet] = a), s.traceIs(a, "carpetDependent") && v.push(i); } for (i = 0; i < v.length; i++) if ((a = e[v[i]]).visible) { var S = g[a.carpet]; (a._carpet = S), S && S.visible ? ((a.xaxis = S.xaxis), (a.yaxis = S.yaxis)) : (a.visible = !1); } }), (b.supplyAnimationDefaults = function (t) { var e; t = t || {}; var r = {}; function n(e, n) { return u.coerce(t || {}, r, m, e, n); } if ( (n("mode"), n("direction"), n("fromcurrent"), Array.isArray(t.frame)) ) for (r.frame = [], e = 0; e < t.frame.length; e++) r.frame[e] = b.supplyAnimationFrameDefaults( t.frame[e] || {}, ); else r.frame = b.supplyAnimationFrameDefaults(t.frame || {}); if (Array.isArray(t.transition)) for ( r.transition = [], e = 0; e < t.transition.length; e++ ) r.transition[e] = b.supplyAnimationTransitionDefaults( t.transition[e] || {}, ); else r.transition = b.supplyAnimationTransitionDefaults( t.transition || {}, ); return r; }), (b.supplyAnimationFrameDefaults = function (t) { var e = {}; function r(r, n) { return u.coerce(t || {}, e, m.frame, r, n); } return r("duration"), r("redraw"), e; }), (b.supplyAnimationTransitionDefaults = function (t) { var e = {}; function r(r, n) { return u.coerce(t || {}, e, m.transition, r, n); } return r("duration"), r("easing"), e; }), (b.supplyFrameDefaults = function (t) { var e = {}; function r(r, n) { return u.coerce(t, e, g, r, n); } return ( r("group"), r("name"), r("traces"), r("baseframe"), r("data"), r("layout"), e ); }), (b.supplyTraceDefaults = function (t, e, r, n, i) { var a, o = n.colorway || f.defaults, l = o[r % o.length]; function c(r, n) { return u.coerce(t, e, b.attributes, r, n); } var h = c("visible"); c("type"), c("name", n._traceWord + " " + i), c("uirevision", n.uirevision); var p = b.getModule(e); if (((e._module = p), p)) { var d = p.basePlotModule, m = d.attr, g = d.attributes; if (m && g) { var v = n._subplots, y = ""; if (h || "gl2d" !== d.name) { if (Array.isArray(m)) for (a = 0; a < m.length; a++) { var x = m[a], _ = u.coerce(t, e, g, x); v[x] && u.pushUnique(v[x], _), (y += _); } else y = u.coerce(t, e, g, m); v[d.name] && u.pushUnique(v[d.name], y); } } } return ( h && (c("customdata"), c("ids"), c("meta"), s.traceIs(e, "showLegend") ? (u.coerce( t, e, p.attributes.showlegend ? p.attributes : b.attributes, "showlegend", ), c("legendwidth"), c("legendgroup"), c("legendgrouptitle.text"), c("legendrank"), (e._dfltShowLegend = !0)) : (e._dfltShowLegend = !1), p && p.supplyDefaults(t, e, l, n), s.traceIs(e, "noOpacity") || c("opacity"), s.traceIs(e, "notLegendIsolatable") && (e.visible = !!e.visible), s.traceIs(e, "noHover") || (e.hovertemplate || u.coerceHoverinfo(t, e, n), "parcats" !== e.type && s.getComponentMethod("fx", "supplyDefaults")( t, e, l, n, )), p && p.selectPoints && c("selectedpoints"), b.supplyTransformDefaults(t, e, n)), e ); }), (b.hasMakesDataTransform = S), (b.supplyTransformDefaults = function (t, e, r) { if (e._length || S(t)) { var n = r._globalTransforms || [], i = r._transformModules || []; if (Array.isArray(t.transforms) || 0 !== n.length) for ( var a = t.transforms || [], o = n.concat(a), s = (e.transforms = []), l = 0; l < o.length; l++ ) { var c, f = o[l], h = f.type, p = _[h], d = !(f._module && f._module === p), m = p && "function" == typeof p.transform; p || u.warn("Unrecognized transform type " + h + "."), p && p.supplyDefaults && (d || m) ? (((c = p.supplyDefaults(f, e, r, t)).type = h), (c._module = p), u.pushUnique(i, p)) : (c = u.extendFlat({}, f)), s.push(c); } } }), (b.supplyLayoutGlobalDefaults = function (t, e, r) { function n(r, n) { return u.coerce(t, e, b.layoutAttributes, r, n); } var i = t.template; u.isPlainObject(i) && ((e.template = i), (e._template = i.layout), (e._dataTemplate = i.data)), n("autotypenumbers"); var a = u.coerceFont(n, "font"), o = a.size; u.coerceFont( n, "title.font", u.extendFlat({}, a, { size: Math.round(1.4 * o) }), ), n("title.text", e._dfltTitle.plot), n("title.xref"), n("title.yref"), n("title.x"), n("title.y"), n("title.xanchor"), n("title.yanchor"), n("title.pad.t"), n("title.pad.r"), n("title.pad.b"), n("title.pad.l"), n("uniformtext.mode") && n("uniformtext.minsize"), n("autosize", !(t.width && t.height)), n("width"), n("height"), n("minreducedwidth"), n("minreducedheight"), n("margin.l"), n("margin.r"), n("margin.t"), n("margin.b"), n("margin.pad"), n("margin.autoexpand"), t.width && t.height && b.sanitizeMargins(e), s.getComponentMethod("grid", "sizeDefaults")(t, e), n("paper_bgcolor"), n("separators", r.decimal + r.thousands), n("hidesources"), n("colorway"), n("datarevision"); var l = n("uirevision"); n("editrevision", l), n("selectionrevision", l), s.getComponentMethod("modebar", "supplyLayoutDefaults")( t, e, ), s.getComponentMethod( "shapes", "supplyDrawNewShapeDefaults", )(t, e, n), s.getComponentMethod( "selections", "supplyDrawNewSelectionDefaults", )(t, e, n), n("meta"), u.isPlainObject(t.transition) && (n("transition.duration"), n("transition.easing"), n("transition.ordering")), s.getComponentMethod("calendars", "handleDefaults")( t, e, "calendar", ), s.getComponentMethod( "fx", "supplyLayoutGlobalDefaults", )(t, e, n); }), (b.plotAutoSize = function (t, e, r) { var n, i, a = t._context || {}, s = a.frameMargins, l = u.isPlotDiv(t); if ((l && t.emit("plotly_autosize"), a.fillFrame)) (n = window.innerWidth), (i = window.innerHeight), (document.body.style.overflow = "hidden"); else { var c = l ? window.getComputedStyle(t) : {}; if ( ((n = L(c.width) || L(c.maxWidth) || r.width), (i = L(c.height) || L(c.maxHeight) || r.height), o(s) && s > 0) ) { var f = 1 - 2 * s; (n = Math.round(f * n)), (i = Math.round(f * i)); } } var h = b.layoutAttributes.width.min, p = b.layoutAttributes.height.min; n < h && (n = h), i < p && (i = p); var d = !e.width && Math.abs(r.width - n) > 1, m = !e.height && Math.abs(r.height - i) > 1; (m || d) && (d && (r.width = n), m && (r.height = i)), t._initialAutoSize || (t._initialAutoSize = { width: n, height: i }), b.sanitizeMargins(r); }), (b.supplyLayoutModuleDefaults = function (t, e, r, n) { var i, a, o, l = s.componentsRegistry, c = e._basePlotModules, f = s.subplotsRegistry.cartesian; for (i in l) (o = l[i]).includeBasePlot && o.includeBasePlot(t, e); for (var h in (c.length || c.push(f), e._has("cartesian") && (s.getComponentMethod("grid", "contentDefaults")(t, e), f.finalizeSubplots(t, e)), e._subplots)) e._subplots[h].sort(u.subplotSort); for (a = 0; a < c.length; a++) (o = c[a]).supplyLayoutDefaults && o.supplyLayoutDefaults(t, e, r); var p = e._modules; for (a = 0; a < p.length; a++) (o = p[a]).supplyLayoutDefaults && o.supplyLayoutDefaults(t, e, r); var d = e._transformModules; for (a = 0; a < d.length; a++) (o = d[a]).supplyLayoutDefaults && o.supplyLayoutDefaults(t, e, r, n); for (i in l) (o = l[i]).supplyLayoutDefaults && o.supplyLayoutDefaults(t, e, r); }), (b.purge = function (t) { var e = t._fullLayout || {}; void 0 !== e._glcontainer && (e._glcontainer.selectAll(".gl-canvas").remove(), e._glcontainer.remove(), (e._glcanvas = null)), e._modeBar && e._modeBar.destroy(), t._transitionData && (t._transitionData._interruptCallbacks && (t._transitionData._interruptCallbacks.length = 0), t._transitionData._animationRaf && window.cancelAnimationFrame( t._transitionData._animationRaf, )), u.clearThrottle(), u.clearResponsive(t), delete t.data, delete t.layout, delete t._fullData, delete t._fullLayout, delete t.calcdata, delete t.empty, delete t.fid, delete t.undoqueue, delete t.undonum, delete t.autoplay, delete t.changed, delete t._promises, delete t._redrawTimer, delete t._hmlumcount, delete t._hmpixcount, delete t._transitionData, delete t._transitioning, delete t._initialAutoSize, delete t._transitioningWithDuration, delete t._dragging, delete t._dragged, delete t._dragdata, delete t._hoverdata, delete t._snapshotInProgress, delete t._editing, delete t._mouseDownTime, delete t._legendMouseDownTime, t.removeAllListeners && t.removeAllListeners(); }), (b.style = function (t) { var e, r = t._fullLayout._visibleModules, n = []; for (e = 0; e < r.length; e++) { var i = r[e]; i.style && u.pushUnique(n, i.style); } for (e = 0; e < n.length; e++) n[e](t); }), (b.sanitizeMargins = function (t) { if (t && t.margin) { var e, r = t.width, n = t.height, i = t.margin, a = r - (i.l + i.r), o = n - (i.t + i.b); a < 0 && ((e = (r - 1) / (i.l + i.r)), (i.l = Math.floor(e * i.l)), (i.r = Math.floor(e * i.r))), o < 0 && ((e = (n - 1) / (i.t + i.b)), (i.t = Math.floor(e * i.t)), (i.b = Math.floor(e * i.b))); } }), (b.clearAutoMarginIds = function (t) { t._fullLayout._pushmarginIds = {}; }), (b.allowAutoMargin = function (t, e) { t._fullLayout._pushmarginIds[e] = 1; }); (b.autoMargin = function (t, e, r) { var n = t._fullLayout, i = n.width, a = n.height, o = n.margin, s = n.minreducedwidth, l = n.minreducedheight, c = u.constrain(i - o.l - o.r, 2, s), f = u.constrain(a - o.t - o.b, 2, l), h = Math.max(0, i - c), p = Math.max(0, a - f), d = n._pushmargin, m = n._pushmarginIds; if (!1 !== o.autoexpand) { if (r) { var g = r.pad; if ( (void 0 === g && (g = Math.min(12, o.l, o.r, o.t, o.b)), h) ) { var v = (r.l + r.r) / h; v > 1 && ((r.l /= v), (r.r /= v)); } if (p) { var y = (r.t + r.b) / p; y > 1 && ((r.t /= y), (r.b /= y)); } var x = void 0 !== r.xl ? r.xl : r.x, _ = void 0 !== r.xr ? r.xr : r.x, w = void 0 !== r.yt ? r.yt : r.y, T = void 0 !== r.yb ? r.yb : r.y; (d[e] = { l: { val: x, size: r.l + g }, r: { val: _, size: r.r + g }, b: { val: T, size: r.b + g }, t: { val: w, size: r.t + g }, }), (m[e] = 1); } else delete d[e], delete m[e]; if (!n._replotting) return b.doAutoMargin(t); } }), (b.doAutoMargin = function (t) { var e = t._fullLayout, r = e.width, n = e.height; e._size || (e._size = {}), C(e); var i = e._size, a = e.margin, l = u.extendFlat({}, i), c = a.l, f = a.r, h = a.t, d = a.b, m = e._pushmargin, g = e._pushmarginIds, v = e.minreducedwidth, y = e.minreducedheight; if (!1 !== e.margin.autoexpand) { for (var x in m) g[x] || delete m[x]; for (var _ in ((m.base = { l: { val: 0, size: c }, r: { val: 1, size: f }, t: { val: 1, size: h }, b: { val: 0, size: d }, }), m)) { var w = m[_].l || {}, T = m[_].b || {}, k = w.val, A = w.size, M = T.val, S = T.size; for (var E in m) { if (o(A) && m[E].r) { var L = m[E].r.val, P = m[E].r.size; if (L > k) { var I = (A * L + (P - r) * k) / (L - k), O = (P * (1 - k) + (A - r) * (1 - L)) / (L - k); I + O > c + f && ((c = I), (f = O)); } } if (o(S) && m[E].t) { var z = m[E].t.val, D = m[E].t.size; if (z > M) { var R = (S * z + (D - n) * M) / (z - M), F = (D * (1 - M) + (S - n) * (1 - z)) / (z - M); R + F > d + h && ((d = R), (h = F)); } } } } } var B = u.constrain(r - a.l - a.r, 2, v), N = u.constrain(n - a.t - a.b, 2, y), j = Math.max(0, r - B), U = Math.max(0, n - N); if (j) { var V = (c + f) / j; V > 1 && ((c /= V), (f /= V)); } if (U) { var H = (d + h) / U; H > 1 && ((d /= H), (h /= H)); } if ( ((i.l = Math.round(c)), (i.r = Math.round(f)), (i.t = Math.round(h)), (i.b = Math.round(d)), (i.p = Math.round(a.pad)), (i.w = Math.round(r) - i.l - i.r), (i.h = Math.round(n) - i.t - i.b), !e._replotting && b.didMarginChange(l, i)) ) { "_redrawFromAutoMarginCount" in e ? e._redrawFromAutoMarginCount++ : (e._redrawFromAutoMarginCount = 1); var q = 3 * (1 + Object.keys(g).length); if (e._redrawFromAutoMarginCount < q) return s.call("_doPlot", t); (e._size = l), u.warn("Too many auto-margin redraws."); } !(function (t) { var e = p.list(t, "", !0); [ "_adjustTickLabelsOverflow", "_hideCounterAxisInsideTickLabels", ].forEach(function (t) { for (var r = 0; r < e.length; r++) { var n = e[r][t]; n && n(); } }); })(t); }); var P = ["l", "r", "t", "b", "p", "w", "h"]; function I(t, e, r) { var n = !1; var i = [ b.previousPromises, function () { if (t._transitionData) return ( (t._transitioning = !1), (function (t) { var e = Promise.resolve(); if (!t) return e; for (; t.length; ) e = e.then(t.shift()); return e; })(t._transitionData._interruptCallbacks) ); }, r.prepareFn, b.rehover, b.reselect, function () { return ( t.emit("plotly_transitioning", []), new Promise(function (i) { (t._transitioning = !0), e.duration > 0 && (t._transitioningWithDuration = !0), t._transitionData._interruptCallbacks.push( function () { n = !0; }, ), r.redraw && t._transitionData._interruptCallbacks.push( function () { return s.call("redraw", t); }, ), t._transitionData._interruptCallbacks.push( function () { t.emit("plotly_transitioninterrupted", []); }, ); var a = 0, o = 0; function l() { return ( a++, function () { o++, n || o !== a || (function (e) { if (!t._transitionData) return; (function (t) { if (t) for (; t.length; ) t.shift(); })( t._transitionData ._interruptCallbacks, ), Promise.resolve() .then(function () { if (r.redraw) return s.call("redraw", t); }) .then(function () { (t._transitioning = !1), (t._transitioningWithDuration = !1), t.emit( "plotly_transitioned", [], ); }) .then(e); })(i); } ); } r.runFn(l), setTimeout(l()); }) ); }, ], a = u.syncOrAsync(i, t); return ( (a && a.then) || (a = Promise.resolve()), a.then(function () { return t; }) ); } (b.didMarginChange = function (t, e) { for (var r = 0; r < P.length; r++) { var n = P[r], i = t[n], a = e[n]; if (!o(i) || Math.abs(a - i) > 1) return !0; } return !1; }), (b.graphJson = function (t, e, r, n, i, a) { ((i && e && !t._fullData) || (i && !e && !t._fullLayout)) && b.supplyDefaults(t); var o = i ? t._fullData : t.data, s = i ? t._fullLayout : t.layout, l = (t._transitionData || {})._frames; function c(t, e) { if ("function" == typeof t) return e ? "_function_" : null; if (u.isPlainObject(t)) { var n, i = {}; return ( Object.keys(t) .sort() .forEach(function (a) { if (-1 === ["_", "["].indexOf(a.charAt(0))) if ("function" != typeof t[a]) { if ("keepdata" === r) { if ("src" === a.substr(a.length - 3)) return; } else if ("keepstream" === r) { if ( "string" == typeof (n = t[a + "src"]) && n.indexOf(":") > 0 && !u.isPlainObject(t.stream) ) return; } else if ( "keepall" !== r && "string" == typeof (n = t[a + "src"]) && n.indexOf(":") > 0 ) return; i[a] = c(t[a], e); } else e && (i[a] = "_function"); }), i ); } return Array.isArray(t) ? t.map(function (t) { return c(t, e); }) : u.isTypedArray(t) ? u.simpleMap(t, u.identity) : u.isJSDate(t) ? u.ms2DateTimeLocal(+t) : t; } var f = { data: (o || []).map(function (t) { var r = c(t); return e && delete r.fit, r; }), }; if (!e && ((f.layout = c(s)), i)) { var h = s._size; f.layout.computed = { margin: { b: h.b, l: h.l, r: h.r, t: h.t }, }; } return ( l && (f.frames = c(l)), a && (f.config = c(t._context, !0)), "object" === n ? f : JSON.stringify(f) ); }), (b.modifyFrames = function (t, e) { var r, n, i, a = t._transitionData._frames, o = t._transitionData._frameHash; for (r = 0; r < e.length; r++) switch ((n = e[r]).type) { case "replace": i = n.value; var s = (a[n.index] || {}).name, l = i.name; (a[n.index] = o[l] = i), l !== s && (delete o[s], (o[l] = i)); break; case "insert": (o[(i = n.value).name] = i), a.splice(n.index, 0, i); break; case "delete": delete o[(i = a[n.index]).name], a.splice(n.index, 1); } return Promise.resolve(); }), (b.computeFrame = function (t, e) { var r, n, i, a, o = t._transitionData._frameHash; if (!e) throw new Error( "computeFrame must be given a string frame name", ); var s = o[e.toString()]; if (!s) return !1; for ( var l = [s], c = [s.name]; s.baseframe && (s = o[s.baseframe.toString()]) && -1 === c.indexOf(s.name); ) l.push(s), c.push(s.name); for (var u = {}; (s = l.pop()); ) if ( (s.layout && (u.layout = b.extendLayout(u.layout, s.layout)), s.data) ) { if ((u.data || (u.data = []), !(n = s.traces))) for (n = [], r = 0; r < s.data.length; r++) n[r] = r; for ( u.traces || (u.traces = []), r = 0; r < s.data.length; r++ ) null != (i = n[r]) && (-1 === (a = u.traces.indexOf(i)) && ((a = u.data.length), (u.traces[a] = i)), (u.data[a] = b.extendTrace( u.data[a], s.data[r], ))); } return u; }), (b.recomputeFrameHash = function (t) { for ( var e = (t._transitionData._frameHash = {}), r = t._transitionData._frames, n = 0; n < r.length; n++ ) { var i = r[n]; i && i.name && (e[i.name] = i); } }), (b.extendObjectWithContainers = function (t, e, r) { var n, i, a, o, s, l, c, f = u.extendDeepNoArrays({}, e || {}), h = u.expandObjectPaths(f), p = {}; if (r && r.length) for (a = 0; a < r.length; a++) void 0 === (i = (n = u.nestedProperty(h, r[a])).get()) ? u.nestedProperty(p, r[a]).set(null) : (n.set(null), u.nestedProperty(p, r[a]).set(i)); if ( ((t = u.extendDeepNoArrays(t || {}, h)), r && r.length) ) for (a = 0; a < r.length; a++) if ((l = u.nestedProperty(p, r[a]).get())) { for ( c = (s = u.nestedProperty(t, r[a])).get(), Array.isArray(c) || ((c = []), s.set(c)), o = 0; o < l.length; o++ ) { var d = l[o]; c[o] = null === d ? null : b.extendObjectWithContainers(c[o], d); } s.set(c); } return t; }), (b.dataArrayContainers = ["transforms", "dimensions"]), (b.layoutArrayContainers = s.layoutArrayContainers), (b.extendTrace = function (t, e) { return b.extendObjectWithContainers( t, e, b.dataArrayContainers, ); }), (b.extendLayout = function (t, e) { return b.extendObjectWithContainers( t, e, b.layoutArrayContainers, ); }), (b.transition = function (t, e, r, n, i, a) { var o = { redraw: i.redraw }, s = {}, l = []; return ( (o.prepareFn = function () { for ( var i = Array.isArray(e) ? e.length : 0, a = n.slice(0, i), o = 0; o < a.length; o++ ) { var c = a[o], f = t._fullData[c]._module; if (f) { if (f.animatable) { var h = f.basePlotModule.name; s[h] || (s[h] = []), s[h].push(c); } t.data[a[o]] = b.extendTrace(t.data[a[o]], e[o]); } } var p = u.expandObjectPaths( u.extendDeepNoArrays({}, r), ), d = /^[xy]axis[0-9]*$/; for (var m in p) d.test(m) && delete p[m].range; b.extendLayout(t.layout, p), delete t.calcdata, b.supplyDefaults(t), b.doCalcdata(t); var g = u.expandObjectPaths(r); if (g) { var v = t._fullLayout._plots; for (var y in v) { var x = v[y], _ = x.xaxis, w = x.yaxis, T = _.range.slice(), k = w.range.slice(), A = null, M = null, S = null, E = null; Array.isArray(g[_._name + ".range"]) ? (A = g[_._name + ".range"].slice()) : Array.isArray((g[_._name] || {}).range) && (A = g[_._name].range.slice()), Array.isArray(g[w._name + ".range"]) ? (M = g[w._name + ".range"].slice()) : Array.isArray((g[w._name] || {}).range) && (M = g[w._name].range.slice()), T && A && (_.r2l(T[0]) !== _.r2l(A[0]) || _.r2l(T[1]) !== _.r2l(A[1])) && (S = { xr0: T, xr1: A }), k && M && (w.r2l(k[0]) !== w.r2l(M[0]) || w.r2l(k[1]) !== w.r2l(M[1])) && (E = { yr0: k, yr1: M }), (S || E) && l.push(u.extendFlat({ plotinfo: x }, S, E)); } } return Promise.resolve(); }), (o.runFn = function (e) { var n, i, o = t._fullLayout._basePlotModules, c = l.length; if (r) for (i = 0; i < o.length; i++) o[i].transitionAxes && o[i].transitionAxes(t, l, a, e); for (var f in (c ? (((n = u.extendFlat({}, a)).duration = 0), delete s.cartesian) : (n = a), s)) { var h = s[f]; t._fullData[h[0]]._module.basePlotModule.plot( t, h, n, e, ); } }), I(t, a, o) ); }), (b.transitionFromReact = function (t, e, r, n) { var i = t._fullLayout, a = i.transition, o = {}, s = []; return ( (o.prepareFn = function () { var t = i._plots; for (var a in ((o.redraw = !1), "some" === e.anim && (o.redraw = !0), "some" === r.anim && (o.redraw = !0), t)) { var l = t[a], c = l.xaxis, f = l.yaxis, h = n[c._name].range.slice(), p = n[f._name].range.slice(), d = c.range.slice(), m = f.range.slice(); c.setScale(), f.setScale(); var g = null, v = null; (c.r2l(h[0]) === c.r2l(d[0]) && c.r2l(h[1]) === c.r2l(d[1])) || (g = { xr0: h, xr1: d }), (f.r2l(p[0]) === f.r2l(m[0]) && f.r2l(p[1]) === f.r2l(m[1])) || (v = { yr0: p, yr1: m }), (g || v) && s.push(u.extendFlat({ plotinfo: l }, g, v)); } return Promise.resolve(); }), (o.runFn = function (r) { for ( var n, i, o, l = t._fullData, c = t._fullLayout._basePlotModules, f = [], h = 0; h < l.length; h++ ) f.push(h); function p() { if (t._fullLayout) for (var e = 0; e < c.length; e++) c[e].transitionAxes && c[e].transitionAxes(t, s, n, r); } function d() { if (t._fullLayout) for (var e = 0; e < c.length; e++) c[e].plot(t, o, i, r); } s.length && e.anim ? "traces first" === a.ordering ? ((n = u.extendFlat({}, a, { duration: 0 })), (o = f), (i = a), setTimeout(p, a.duration), d()) : ((n = a), (o = null), (i = u.extendFlat({}, a, { duration: 0 })), setTimeout(d, n.duration), p()) : s.length ? ((n = a), p()) : e.anim && ((o = f), (i = a), d()); }), I(t, a, o) ); }), (b.doCalcdata = function (t, e) { var r, n, i, a, o = p.list(t), c = t._fullData, f = t._fullLayout, d = new Array(c.length), m = (t.calcdata || []).slice(); for ( t.calcdata = d, f._numBoxes = 0, f._numViolins = 0, f._violinScaleGroupStats = {}, t._hmpixcount = 0, t._hmlumcount = 0, f._piecolormap = {}, f._sunburstcolormap = {}, f._treemapcolormap = {}, f._iciclecolormap = {}, f._funnelareacolormap = {}, i = 0; i < c.length; i++ ) Array.isArray(e) && -1 === e.indexOf(i) && (d[i] = m[i]); for (i = 0; i < c.length; i++) ((r = c[i])._arrayAttrs = l.findArrayAttributes(r)), (r._extremes = {}); var g = f._subplots.polar || []; for (i = 0; i < g.length; i++) o.push(f[g[i]].radialaxis, f[g[i]].angularaxis); for (var v in f._colorAxes) { var y = f[v]; !1 !== y.cauto && (delete y.cmin, delete y.cmax); } var x = !1; function b(e) { if ( ((r = c[e]), (n = r._module), !0 === r.visible && r.transforms) ) { if (n && n.calc) { var i = n.calc(t, r); i[0] && i[0].t && i[0].t._scene && delete i[0].t._scene.dirty; } for (a = 0; a < r.transforms.length; a++) { var o = r.transforms[a]; (n = _[o.type]) && n.calcTransform && ((r._hasCalcTransform = !0), (x = !0), n.calcTransform(t, r, o)); } } } function w(e, i) { if (((r = c[e]), !!(n = r._module).isContainer === i)) { var o = []; if (!0 === r.visible && 0 !== r._length) { delete r._indexToPoints; var s = r.transforms || []; for (a = s.length - 1; a >= 0; a--) if (s[a].enabled) { r._indexToPoints = s[a]._indexToPoints; break; } n && n.calc && (o = n.calc(t, r)); } (Array.isArray(o) && o[0]) || (o = [{ x: h, y: h }]), o[0].t || (o[0].t = {}), (o[0].trace = r), (d[e] = o); } } for (z(o, c, f), i = 0; i < c.length; i++) w(i, !0); for (i = 0; i < c.length; i++) b(i); for (x && z(o, c, f), i = 0; i < c.length; i++) w(i, !0); for (i = 0; i < c.length; i++) w(i, !1); D(t); var T = (function (t, e) { var r, n, i, a, o, l = []; function c(t, r, n) { var i = r._id.charAt(0); if ("histogram2dcontour" === t) { var a = r._counterAxes[0], o = p.getFromId(e, a), s = "x" === i || ("x" === a && "category" === o.type), l = "y" === i || ("y" === a && "category" === o.type); return function (t, e) { return 0 === t || 0 === e || (s && t === n[e].length - 1) || (l && e === n.length - 1) ? -1 : ("y" === i ? e : t) - 1; }; } return function (t, e) { return "y" === i ? e : t; }; } var f = { min: function (t) { return u.aggNums(Math.min, null, t); }, max: function (t) { return u.aggNums(Math.max, null, t); }, sum: function (t) { return u.aggNums( function (t, e) { return t + e; }, null, t, ); }, total: function (t) { return u.aggNums( function (t, e) { return t + e; }, null, t, ); }, mean: function (t) { return u.mean(t); }, median: function (t) { return u.median(t); }, }; for (r = 0; r < t.length; r++) { var h = t[r]; if ("category" === h.type) { var d = h.categoryorder.match(O); if (d) { var m = d[1], g = d[2], v = h._id.charAt(0), y = "x" === v, x = []; for (n = 0; n < h._categories.length; n++) x.push([h._categories[n], []]); for (n = 0; n < h._traceIndices.length; n++) { var b = h._traceIndices[n], _ = e._fullData[b]; if (!0 === _.visible) { var w = _.type; s.traceIs(_, "histogram") && (delete _._xautoBinFinished, delete _._yautoBinFinished); var T = "splom" === w, k = "scattergl" === w, A = e.calcdata[b]; for (i = 0; i < A.length; i++) { var M, S, E = A[i]; if (T) { var L = _._axesDim[h._id]; if (!y) { var C = _._diag[L][0]; C && (h = e._fullLayout[p.id2name(C)]); } var P = E.trace.dimensions[L].values; for (a = 0; a < P.length; a++) for ( M = h._categoriesMap[P[a]], o = 0; o < E.trace.dimensions.length; o++ ) if (o !== L) { var I = E.trace.dimensions[o]; x[M][1].push(I.values[a]); } } else if (k) { for (a = 0; a < E.t.x.length; a++) y ? ((M = E.t.x[a]), (S = E.t.y[a])) : ((M = E.t.y[a]), (S = E.t.x[a])), x[M][1].push(S); E.t && E.t._scene && delete E.t._scene.dirty; } else if (E.hasOwnProperty("z")) { S = E.z; var z = c(_.type, h, S); for (a = 0; a < S.length; a++) for (o = 0; o < S[a].length; o++) (M = z(o, a)) + 1 && x[M][1].push(S[a][o]); } else for ( void 0 === (M = E.p) && (M = E[v]), void 0 === (S = E.s) && (S = E.v), void 0 === S && (S = y ? E.y : E.x), Array.isArray(S) || (S = void 0 === S ? [] : [S]), a = 0; a < S.length; a++ ) x[M][1].push(S[a]); } } } h._categoriesValue = x; var D = []; for (n = 0; n < x.length; n++) D.push([x[n][0], f[m](x[n][1])]); D.sort(function (t, e) { return t[1] - e[1]; }), (h._categoriesAggregatedValue = D), (h._initialCategories = D.map(function (t) { return t[0]; })), "descending" === g && h._initialCategories.reverse(), (l = l.concat(h.sortByInitialCategories())); } } } return l; })(o, t); if (T.length) { for ( f._numBoxes = 0, f._numViolins = 0, i = 0; i < T.length; i++ ) w(T[i], !0); for (i = 0; i < T.length; i++) w(T[i], !1); D(t); } s.getComponentMethod("fx", "calc")(t), s.getComponentMethod("errorbars", "calc")(t); }); var O = /(total|sum|min|max|mean|median) (ascending|descending)/; function z(t, e, r) { var n = {}; function i(t) { t.clearCalc(), "multicategory" === t.type && t.setupMultiCategory(e), (n[t._id] = 1); } u.simpleMap(t, i); for ( var a = r._axisMatchGroups || [], o = 0; o < a.length; o++ ) for (var s in a[o]) n[s] || i(r[p.id2name(s)]); } function D(t) { var e, r, n, i = t._fullLayout, a = i._visibleModules, o = {}; for (r = 0; r < a.length; r++) { var s = a[r], l = s.crossTraceCalc; if (l) { var c = s.basePlotModule.name; o[c] ? u.pushUnique(o[c], l) : (o[c] = [l]); } } for (n in o) { var f = o[n], h = i._subplots[n]; if (Array.isArray(h)) for (e = 0; e < h.length; e++) { var p = h[e], d = "cartesian" === n ? i._plots[p] : i[p]; for (r = 0; r < f.length; r++) f[r](t, d, p); } else for (r = 0; r < f.length; r++) f[r](t); } } (b.rehover = function (t) { t._fullLayout._rehover && t._fullLayout._rehover(); }), (b.redrag = function (t) { t._fullLayout._redrag && t._fullLayout._redrag(); }), (b.reselect = function (t) { var e = t._fullLayout, r = (t.layout || {}).selections, n = e._previousSelections; e._previousSelections = r; var i = e._reselect || JSON.stringify(r) !== JSON.stringify(n); s.getComponentMethod("selections", "reselect")(t, i); }), (b.generalUpdatePerTraceModule = function (t, e, r, n) { var i, a = e.traceHash, o = {}; for (i = 0; i < r.length; i++) { var s = r[i], l = s[0].trace; l.visible && ((o[l.type] = o[l.type] || []), o[l.type].push(s)); } for (var c in a) if (!o[c]) { var f = a[c][0]; (f[0].trace.visible = !1), (o[c] = [f]); } for (var h in o) { var p = o[h]; p[0][0].trace._module.plot(t, e, u.filterVisible(p), n); } e.traceHash = o; }), (b.plotBasePlot = function (t, e, r, n, i) { var a = s.getModule(t), o = v(e.calcdata, a)[0]; a.plot(e, o, n, i); }), (b.cleanBasePlot = function (t, e, r, n, i) { var a = i._has && i._has(t), o = r._has && r._has(t); a && !o && i["_" + t + "layer"].selectAll("g.trace").remove(); }); }, { "../components/color": 367, "../components/shapes/handle_outline": 468, "../constants/numerical": 491, "../lib": 515, "../plot_api/plot_schema": 554, "../plot_api/plot_template": 555, "../plots/get_data": 602, "../registry": 647, "./animation_attributes": 560, "./attributes": 562, "./cartesian/axis_ids": 570, "./command": 592, "./font_attributes": 594, "./frame_attributes": 595, "./layout_attributes": 619, "@plotly/d3": 58, "d3-format": 112, "d3-time-format": 120, "fast-isnumeric": 190, }, ], 629: [ function (t, e, r) { "use strict"; e.exports = { attr: "subplot", name: "polar", axisNames: ["angularaxis", "radialaxis"], axisName2dataArray: { angularaxis: "theta", radialaxis: "r", }, layerNames: [ "draglayer", "plotbg", "backplot", "angular-grid", "radial-grid", "frontplot", "angular-line", "radial-line", "angular-axis", "radial-axis", ], radialDragBoxSize: 50, angularDragBoxSize: 30, cornerLen: 25, cornerHalfWidth: 2, MINDRAG: 8, MINZOOM: 20, OFFEDGE: 20, }; }, {}, ], 630: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../lib/polygon").tester, a = n.findIndexOfMin, o = n.isAngleInsideSector, s = n.angleDelta, l = n.angleDist; function c(t, e, r, n) { var i, a, o = n[0], s = n[1], l = f(Math.sin(e) - Math.sin(t)), c = f(Math.cos(e) - Math.cos(t)), u = Math.tan(r), h = f(1 / u), p = l / c, d = s - p * o; return ( h ? l && c ? (a = u * (i = d / (u - p))) : c ? ((i = s * h), (a = s)) : ((i = o), (a = o * u)) : l && c ? ((i = 0), (a = d)) : c ? ((i = 0), (a = s)) : (i = a = NaN), [i, a] ); } function u(t, e, r, i) { return n.isFullCircle([e, r]) ? (function (t, e) { var r, n = e.length, i = new Array(n + 1); for (r = 0; r < n; r++) { var a = e[r]; i[r] = [t * Math.cos(a), t * Math.sin(a)]; } return (i[r] = i[0].slice()), i; })(t, i) : (function (t, e, r, i) { var s, u, f = i.length, h = []; function p(e) { return [t * Math.cos(e), t * Math.sin(e)]; } function d(t, e, r) { return c(t, e, r, p(t)); } function m(t) { return n.mod(t, f); } function g(t) { return o(t, [e, r]); } var v = a(i, function (t) { return g(t) ? l(t, e) : 1 / 0; }), y = d(i[v], i[m(v - 1)], e); for (h.push(y), s = v, u = 0; u < f; s++, u++) { var x = i[m(s)]; if (!g(x)) break; h.push(p(x)); } var b = a(i, function (t) { return g(t) ? l(t, r) : 1 / 0; }), _ = d(i[b], i[m(b + 1)], r); return ( h.push(_), h.push([0, 0]), h.push(h[0].slice()), h ); })(t, e, r, i); } function f(t) { return Math.abs(t) > 1e-10 ? t : 0; } function h(t, e, r) { (e = e || 0), (r = r || 0); for ( var n = t.length, i = new Array(n), a = 0; a < n; a++ ) { var o = t[a]; i[a] = [e + o[0], r - o[1]]; } return i; } e.exports = { isPtInsidePolygon: function (t, e, r, n, a) { if (!o(e, n)) return !1; var s, l; r[0] < r[1] ? ((s = r[0]), (l = r[1])) : ((s = r[1]), (l = r[0])); var c = i(u(s, n[0], n[1], a)), f = i(u(l, n[0], n[1], a)), h = [t * Math.cos(e), t * Math.sin(e)]; return f.contains(h) && !c.contains(h); }, findPolygonOffset: function (t, e, r, n) { for ( var i = 1 / 0, a = 1 / 0, o = u(t, e, r, n), s = 0; s < o.length; s++ ) { var l = o[s]; (i = Math.min(i, l[0])), (a = Math.min(a, -l[1])); } return [i, a]; }, findEnclosingVertexAngles: function (t, e) { var r = a(e, function (e) { var r = s(e, t); return r > 0 ? r : 1 / 0; }), i = n.mod(r + 1, e.length); return [e[r], e[i]]; }, findIntersectionXY: c, findXYatLength: function (t, e, r, n) { var i = -e * r, a = e * e + 1, o = 2 * (e * i - r), s = i * i + r * r - t * t, l = Math.sqrt(o * o - 4 * a * s), c = (-o + l) / (2 * a), u = (-o - l) / (2 * a); return [ [c, e * c + i + n], [u, e * u + i + n], ]; }, clampTiny: f, pathPolygon: function (t, e, r, n, i, a) { return "M" + h(u(t, e, r, n), i, a).join("L"); }, pathPolygonAnnulus: function (t, e, r, n, i, a, o) { var s, l; t < e ? ((s = t), (l = e)) : ((s = e), (l = t)); var c = h(u(s, r, n, i), a, o); return ( "M" + h(u(l, r, n, i), a, o) .reverse() .join("L") + "M" + c.join("L") ); }, }; }, { "../../lib": 515, "../../lib/polygon": 527 }, ], 631: [ function (t, e, r) { "use strict"; var n = t("../get_data").getSubplotCalcData, i = t("../../lib").counterRegex, a = t("./polar"), o = t("./constants"), s = o.attr, l = o.name, c = i(l), u = {}; (u[s] = { valType: "subplotid", dflt: l, editType: "calc" }), (e.exports = { attr: s, name: l, idRoot: l, idRegex: c, attrRegex: c, attributes: u, layoutAttributes: t("./layout_attributes"), supplyLayoutDefaults: t("./layout_defaults"), plot: function (t) { for ( var e = t._fullLayout, r = t.calcdata, i = e._subplots[l], o = 0; o < i.length; o++ ) { var s = i[o], c = n(r, l, s), u = e[s]._subplot; u || ((u = a(t, s)), (e[s]._subplot = u)), u.plot(c, e, t._promises); } }, clean: function (t, e, r, n) { for ( var i = n._subplots[l] || [], a = n._has && n._has("gl"), o = e._has && e._has("gl"), s = a && !o, c = 0; c < i.length; c++ ) { var u = i[c], f = n[u]._subplot; if (!e[u] && f) for (var h in (f.framework.remove(), f.layers["radial-axis-title"].remove(), f.clipPaths)) f.clipPaths[h].remove(); s && f._scene && (f._scene.destroy(), (f._scene = null)); } }, toSVG: t("../cartesian").toSVG, }); }, { "../../lib": 515, "../cartesian": 578, "../get_data": 602, "./constants": 629, "./layout_attributes": 632, "./layout_defaults": 633, "./polar": 634, }, ], 632: [ function (t, e, r) { "use strict"; var n = t("../../components/color/attributes"), i = t("../cartesian/layout_attributes"), a = t("../domain").attributes, o = t("../../lib").extendFlat, s = t("../../plot_api/edit_types").overrideAll, l = s( { color: i.color, showline: o({}, i.showline, { dflt: !0 }), linecolor: i.linecolor, linewidth: i.linewidth, showgrid: o({}, i.showgrid, { dflt: !0 }), gridcolor: i.gridcolor, gridwidth: i.gridwidth, griddash: i.griddash, }, "plot", "from-root", ), c = s( { tickmode: i.tickmode, nticks: i.nticks, tick0: i.tick0, dtick: i.dtick, tickvals: i.tickvals, ticktext: i.ticktext, ticks: i.ticks, ticklen: i.ticklen, tickwidth: i.tickwidth, tickcolor: i.tickcolor, ticklabelstep: i.ticklabelstep, showticklabels: i.showticklabels, showtickprefix: i.showtickprefix, tickprefix: i.tickprefix, showticksuffix: i.showticksuffix, ticksuffix: i.ticksuffix, showexponent: i.showexponent, exponentformat: i.exponentformat, minexponent: i.minexponent, separatethousands: i.separatethousands, tickfont: i.tickfont, tickangle: i.tickangle, tickformat: i.tickformat, tickformatstops: i.tickformatstops, layer: i.layer, }, "plot", "from-root", ), u = { visible: o({}, i.visible, { dflt: !0 }), type: o({}, i.type, { values: ["-", "linear", "log", "date", "category"], }), autotypenumbers: i.autotypenumbers, autorange: o({}, i.autorange, { editType: "plot" }), rangemode: { valType: "enumerated", values: ["tozero", "nonnegative", "normal"], dflt: "tozero", editType: "calc", }, range: o({}, i.range, { items: [ { valType: "any", editType: "plot", impliedEdits: { "^autorange": !1 }, }, { valType: "any", editType: "plot", impliedEdits: { "^autorange": !1 }, }, ], editType: "plot", }), categoryorder: i.categoryorder, categoryarray: i.categoryarray, angle: { valType: "angle", editType: "plot" }, side: { valType: "enumerated", values: ["clockwise", "counterclockwise"], dflt: "clockwise", editType: "plot", }, title: { text: o({}, i.title.text, { editType: "plot", dflt: "", }), font: o({}, i.title.font, { editType: "plot" }), editType: "plot", }, hoverformat: i.hoverformat, uirevision: { valType: "any", editType: "none" }, editType: "calc", _deprecated: { title: i._deprecated.title, titlefont: i._deprecated.titlefont, }, }; o(u, l, c); var f = { visible: o({}, i.visible, { dflt: !0 }), type: { valType: "enumerated", values: ["-", "linear", "category"], dflt: "-", editType: "calc", _noTemplating: !0, }, autotypenumbers: i.autotypenumbers, categoryorder: i.categoryorder, categoryarray: i.categoryarray, thetaunit: { valType: "enumerated", values: ["radians", "degrees"], dflt: "degrees", editType: "calc", }, period: { valType: "number", editType: "calc", min: 0 }, direction: { valType: "enumerated", values: ["counterclockwise", "clockwise"], dflt: "counterclockwise", editType: "calc", }, rotation: { valType: "angle", editType: "calc" }, hoverformat: i.hoverformat, uirevision: { valType: "any", editType: "none" }, editType: "calc", }; o(f, l, c), (e.exports = { domain: a({ name: "polar", editType: "plot" }), sector: { valType: "info_array", items: [ { valType: "number", editType: "plot" }, { valType: "number", editType: "plot" }, ], dflt: [0, 360], editType: "plot", }, hole: { valType: "number", min: 0, max: 1, dflt: 0, editType: "plot", }, bgcolor: { valType: "color", editType: "plot", dflt: n.background, }, radialaxis: u, angularaxis: f, gridshape: { valType: "enumerated", values: ["circular", "linear"], dflt: "circular", editType: "plot", }, uirevision: { valType: "any", editType: "none" }, editType: "calc", }); }, { "../../components/color/attributes": 366, "../../lib": 515, "../../plot_api/edit_types": 548, "../cartesian/layout_attributes": 579, "../domain": 593, }, ], 633: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/color"), a = t("../../plot_api/plot_template"), o = t("../subplot_defaults"), s = t("../get_data").getSubplotData, l = t("../cartesian/tick_value_defaults"), c = t("../cartesian/tick_mark_defaults"), u = t("../cartesian/tick_label_defaults"), f = t("../cartesian/prefix_suffix_defaults"), h = t("../cartesian/category_order_defaults"), p = t("../cartesian/line_grid_defaults"), d = t("../cartesian/axis_autotype"), m = t("./layout_attributes"), g = t("./set_convert"), v = t("./constants"), y = v.axisNames; function x(t, e, r, o) { var d = r("bgcolor"); o.bgColor = i.combine(d, o.paper_bgcolor); var x = r("sector"); r("hole"); var _, w = s(o.fullData, v.name, o.id), T = o.layoutOut; function k(t, e) { return r(_ + "." + t, e); } for (var A = 0; A < y.length; A++) { (_ = y[A]), n.isPlainObject(t[_]) || (t[_] = {}); var M = t[_], S = a.newContainer(e, _); (S._id = S._name = _), (S._attr = o.id + "." + _), (S._traceIndices = w.map(function (t) { return t._expandedIndex; })); var E = v.axisName2dataArray[_], L = b(M, S, k, w, E, o); h(M, S, k, { axData: w, dataAttr: E }); var C = k("visible"); switch ( (g(S, e, T), k("uirevision", e.uirevision), (S._m = 1), _) ) { case "radialaxis": var P = k("autorange", !S.isValidRange(M.range)); (M.autorange = P), !P || ("linear" !== L && "-" !== L) || k("rangemode"), "reversed" === P && (S._m = -1), k("range"), S.cleanRange("range", { dfltRange: [0, 1] }); break; case "angularaxis": if ("date" === L) { n.log( "Polar plots do not support date angular axes yet.", ); for (var I = 0; I < w.length; I++) w[I].visible = !1; L = M.type = S.type = "linear"; } k("linear" === L ? "thetaunit" : "period"); var O = k("direction"); k( "rotation", { counterclockwise: 0, clockwise: 90 }[O], ); } if ( (f(M, S, k, S.type, { tickSuffixDflt: "degrees" === S.thetaunit ? "\xb0" : void 0, }), C) ) { var z, D, R, F, B = o.font || {}; (D = (z = k("color")) === M.color ? z : B.color), (R = B.size), (F = B.family), l(M, S, k, S.type), u(M, S, k, S.type, { font: { color: D, size: R, family: F }, }), c(M, S, k, { outerTicks: !0 }), p(M, S, k, { dfltColor: z, bgColor: o.bgColor, blend: 60, showLine: !0, showGrid: !0, noZeroLine: !0, attributes: m[_], }), k("layer"), "radialaxis" === _ && (k("side"), k("angle", x[0]), k("title.text"), n.coerceFont(k, "title.font", { color: D, size: n.bigFont(R), family: F, })); } "category" !== L && k("hoverformat"), (S._input = M); } "category" === e.angularaxis.type && r("gridshape"); } function b(t, e, r, n, i, a) { var o = r("autotypenumbers", a.autotypenumbersDflt); if ("-" === r("type")) { for (var s, l = 0; l < n.length; l++) if (n[l].visible) { s = n[l]; break; } s && s[i] && (e.type = d(s[i], "gregorian", { noMultiCategory: !0, autotypenumbers: o, })), "-" === e.type ? (e.type = "linear") : (t.type = e.type); } return e.type; } e.exports = function (t, e, r) { o(t, e, r, { type: v.name, attributes: m, handleDefaults: x, font: e.font, autotypenumbersDflt: e.autotypenumbers, paper_bgcolor: e.paper_bgcolor, fullData: r, layoutOut: e, }); }; }, { "../../components/color": 367, "../../lib": 515, "../../plot_api/plot_template": 555, "../cartesian/axis_autotype": 567, "../cartesian/category_order_defaults": 571, "../cartesian/line_grid_defaults": 581, "../cartesian/prefix_suffix_defaults": 583, "../cartesian/tick_label_defaults": 587, "../cartesian/tick_mark_defaults": 588, "../cartesian/tick_value_defaults": 589, "../get_data": 602, "../subplot_defaults": 641, "./constants": 629, "./layout_attributes": 632, "./set_convert": 635, }, ], 634: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("tinycolor2"), a = t("../../registry"), o = t("../../lib"), s = o.strRotate, l = o.strTranslate, c = t("../../components/color"), u = t("../../components/drawing"), f = t("../plots"), h = t("../../plots/cartesian/axes"), p = t("../cartesian/set_convert"), d = t("./set_convert"), m = t("../cartesian/autorange").doAutoRange, g = t("../cartesian/dragbox"), v = t("../../components/dragelement"), y = t("../../components/fx"), x = t("../../components/titles"), b = t("../../components/selections").prepSelect, _ = t("../../components/selections").selectOnClick, w = t("../../components/selections").clearOutline, T = t("../../lib/setcursor"), k = t("../../lib/clear_gl_canvases"), A = t("../../plot_api/subroutines").redrawReglTraces, M = t("../../constants/alignment").MID_SHIFT, S = t("./constants"), E = t("./helpers"), L = t("../smith/helpers"), C = L.smith, P = L.reactanceArc, I = L.resistanceArc, O = L.smithTransform, z = o._, D = o.mod, R = o.deg2rad, F = o.rad2deg; function B(t, e, r) { (this.isSmith = r || !1), (this.id = e), (this.gd = t), (this._hasClipOnAxisFalse = null), (this.vangles = null), (this.radialAxisAngle = null), (this.traceHash = {}), (this.layers = {}), (this.clipPaths = {}), (this.clipIds = {}), (this.viewInitial = {}); var n = t._fullLayout, i = "clip" + n._uid + e; (this.clipIds.forTraces = i + "-for-traces"), (this.clipPaths.forTraces = n._clips .append("clipPath") .attr("id", this.clipIds.forTraces)), this.clipPaths.forTraces.append("path"), (this.framework = n[ "_" + (r ? "smith" : "polar") + "layer" ] .append("g") .attr("class", e)), (this.getHole = function (t) { return this.isSmith ? 0 : t.hole; }), (this.getSector = function (t) { return this.isSmith ? [0, 360] : t.sector; }), (this.getRadial = function (t) { return this.isSmith ? t.realaxis : t.radialaxis; }), (this.getAngular = function (t) { return this.isSmith ? t.imaginaryaxis : t.angularaxis; }), r || ((this.radialTickLayout = null), (this.angularTickLayout = null)); } var N = B.prototype; function j(t) { var e = t.ticks + String(t.ticklen) + String(t.showticklabels); return "side" in t && (e += t.side), e; } function U(t, e) { return e[ o.findIndexOfMin(e, function (e) { return o.angleDist(t, e); }) ]; } function V(t, e, r) { return ( e ? (t.attr("display", null), t.attr(r)) : t && t.attr("display", "none"), t ); } (e.exports = function (t, e, r) { return new B(t, e, r); }), (N.plot = function (t, e) { for ( var r = e[this.id], n = !1, i = 0; i < t.length; i++ ) { if (!1 === t[i][0].trace.cliponaxis) { n = !0; break; } } (this._hasClipOnAxisFalse = n), this.updateLayers(e, r), this.updateLayout(e, r), f.generalUpdatePerTraceModule(this.gd, this, t, r), this.updateFx(e, r), this.isSmith && (delete r.realaxis.range, delete r.imaginaryaxis.range); }), (N.updateLayers = function (t, e) { var r = this.isSmith, i = this.layers, a = this.getRadial(e), o = this.getAngular(e), s = S.layerNames, l = s.indexOf("frontplot"), c = s.slice(0, l), u = "below traces" === o.layer, f = "below traces" === a.layer; u && c.push("angular-line"), f && c.push("radial-line"), u && c.push("angular-axis"), f && c.push("radial-axis"), c.push("frontplot"), u || c.push("angular-line"), f || c.push("radial-line"), u || c.push("angular-axis"), f || c.push("radial-axis"); var h = (r ? "smith" : "polar") + "sublayer", p = this.framework.selectAll("." + h).data(c, String); p .enter() .append("g") .attr("class", function (t) { return h + " " + t; }) .each(function (t) { var e = (i[t] = n.select(this)); switch (t) { case "frontplot": r || e.append("g").classed("barlayer", !0), e.append("g").classed("scatterlayer", !0); break; case "backplot": e.append("g").classed("maplayer", !0); break; case "plotbg": i.bg = e.append("path"); break; case "radial-grid": case "angular-grid": e.style("fill", "none"); break; case "radial-line": e.append("line").style("fill", "none"); break; case "angular-line": e.append("path").style("fill", "none"); } }), p.order(); }), (N.updateLayout = function (t, e) { var r = this.layers, n = t._size, i = this.getRadial(e), a = this.getAngular(e), o = e.domain.x, s = e.domain.y; (this.xOffset = n.l + n.w * o[0]), (this.yOffset = n.t + n.h * (1 - s[1])); var f = (this.xLength = n.w * (o[1] - o[0])), h = (this.yLength = n.h * (s[1] - s[0])), p = this.getSector(e); this.sectorInRad = p.map(R); var d, m, g, v, y, x = (this.sectorBBox = (function (t) { var e, r, n, i, a = t[0], o = t[1] - a, s = D(a, 360), l = s + o, c = Math.cos(R(s)), u = Math.sin(R(s)), f = Math.cos(R(l)), h = Math.sin(R(l)); i = (s <= 90 && l >= 90) || (s > 90 && l >= 450) ? 1 : u <= 0 && h <= 0 ? 0 : Math.max(u, h); e = (s <= 180 && l >= 180) || (s > 180 && l >= 540) ? -1 : c >= 0 && f >= 0 ? 0 : Math.min(c, f); r = (s <= 270 && l >= 270) || (s > 270 && l >= 630) ? -1 : u >= 0 && h >= 0 ? 0 : Math.min(u, h); n = l >= 360 ? 1 : c <= 0 && f <= 0 ? 0 : Math.max(c, f); return [e, r, n, i]; })(p)), b = x[2] - x[0], _ = x[3] - x[1], w = h / f, T = Math.abs(_ / b); w > T ? ((d = f), (y = (h - (m = f * T)) / n.h / 2), (g = [o[0], o[1]]), (v = [s[0] + y, s[1] - y])) : ((m = h), (y = (f - (d = h / T)) / n.w / 2), (g = [o[0] + y, o[1] - y]), (v = [s[0], s[1]])), (this.xLength2 = d), (this.yLength2 = m), (this.xDomain2 = g), (this.yDomain2 = v); var k, A = (this.xOffset2 = n.l + n.w * g[0]), M = (this.yOffset2 = n.t + n.h * (1 - v[1])), S = (this.radius = d / b), E = (this.innerRadius = this.getHole(e) * S), L = (this.cx = A - S * x[0]), C = (this.cy = M + S * x[3]), P = (this.cxx = L - A), I = (this.cyy = C - M), O = i.side; "counterclockwise" === O ? ((k = O), (O = "top")) : "clockwise" === O && ((k = O), (O = "bottom")), (this.radialAxis = this.mockAxis(t, e, i, { _id: "x", side: O, _trueSide: k, domain: [E / n.w, S / n.w], })), (this.angularAxis = this.mockAxis(t, e, a, { side: "right", domain: [0, Math.PI], autorange: !1, })), this.doAutoRange(t, e), this.updateAngularAxis(t, e), this.updateRadialAxis(t, e), this.updateRadialAxisTitle(t, e), (this.xaxis = this.mockCartesianAxis(t, e, { _id: "x", domain: g, })), (this.yaxis = this.mockCartesianAxis(t, e, { _id: "y", domain: v, })); var z = this.pathSubplot(); this.clipPaths.forTraces .select("path") .attr("d", z) .attr("transform", l(P, I)), r.frontplot .attr("transform", l(A, M)) .call( u.setClipUrl, this._hasClipOnAxisFalse ? null : this.clipIds.forTraces, this.gd, ), r.bg .attr("d", z) .attr("transform", l(L, C)) .call(c.fill, e.bgcolor); }), (N.mockAxis = function (t, e, r, n) { var i = o.extendFlat({}, r, n); return d(i, e, t), i; }), (N.mockCartesianAxis = function (t, e, r) { var n = this, i = n.isSmith, a = r._id, s = o.extendFlat({ type: "linear" }, r); p(s, t); var l = { x: [0, 2], y: [1, 3] }; return ( (s.setRange = function () { var t = n.sectorBBox, r = l[a], i = n.radialAxis._rl, o = (i[1] - i[0]) / (1 - n.getHole(e)); s.range = [t[r[0]] * o, t[r[1]] * o]; }), (s.isPtWithinRange = "x" !== a || i ? function () { return !0; } : function (t) { return n.isPtInside(t); }), s.setRange(), s.setScale(), s ); }), (N.doAutoRange = function (t, e) { var r = this.gd, n = this.radialAxis, i = this.getRadial(e); m(r, n); var a = n.range; (i.range = a.slice()), (i._input.range = a.slice()), (n._rl = [ n.r2l(a[0], null, "gregorian"), n.r2l(a[1], null, "gregorian"), ]); }), (N.updateRadialAxis = function (t, e) { var r = this, n = r.gd, i = r.layers, a = r.radius, u = r.innerRadius, f = r.cx, p = r.cy, d = r.getRadial(e), m = D(r.getSector(e)[0], 360), g = r.radialAxis, v = u < a, y = r.isSmith; y || (r.fillViewInitialKey("radialaxis.angle", d.angle), r.fillViewInitialKey( "radialaxis.range", g.range.slice(), ), g.setGeometry()), "auto" === g.tickangle && m > 90 && m <= 270 && (g.tickangle = 180); var x = y ? function (t) { var e = O(r, C([t.x, 0])); return l(e[0] - f, e[1] - p); } : function (t) { return l(g.l2p(t.x) + u, 0); }, b = y ? function (t) { return I(r, t.x, -1 / 0, 1 / 0); } : function (t) { return r.pathArc(g.r2p(t.x) + u); }, _ = j(d); if ( (r.radialTickLayout !== _ && (i["radial-axis"].selectAll(".xtick").remove(), (r.radialTickLayout = _)), v) ) { g.setScale(); var w = 0, T = y ? (g.tickvals || []) .filter(function (t) { return t >= 0; }) .map(function (t) { return h.tickText(g, t, !0, !1); }) : h.calcTicks(g), k = y ? T : h.clipEnds(g, T), A = h.getTickSigns(g)[2]; y && ((("top" === g.ticks && "bottom" === g.side) || ("bottom" === g.ticks && "top" === g.side)) && (A = -A), "top" === g.ticks && "top" === g.side && (w = -g.ticklen), "bottom" === g.ticks && "bottom" === g.side && (w = g.ticklen)), h.drawTicks(n, g, { vals: T, layer: i["radial-axis"], path: h.makeTickPath(g, 0, A), transFn: x, crisp: !1, }), h.drawGrid(n, g, { vals: k, layer: i["radial-grid"], path: b, transFn: o.noop, crisp: !1, }), h.drawLabels(n, g, { vals: T, layer: i["radial-axis"], transFn: x, labelFns: h.makeLabelFns(g, w), }); } var M = (r.radialAxisAngle = r.vangles ? F(U(R(d.angle), r.vangles)) : d.angle), S = l(f, p), E = S + s(-M); V(i["radial-axis"], v && (d.showticklabels || d.ticks), { transform: E, }), V(i["radial-grid"], v && d.showgrid, { transform: y ? "" : S, }), V(i["radial-line"].select("line"), v && d.showline, { x1: y ? -a : u, y1: 0, x2: a, y2: 0, transform: E, }) .attr("stroke-width", d.linewidth) .call(c.stroke, d.linecolor); }), (N.updateRadialAxisTitle = function (t, e, r) { if (!this.isSmith) { var n = this.gd, i = this.radius, a = this.cx, o = this.cy, s = this.getRadial(e), l = this.id + "title", c = 0; if (s.title) { var f = u.bBox( this.layers["radial-axis"].node(), ).height, h = s.title.font.size, p = s.side; c = "top" === p ? h : "counterclockwise" === p ? -(f + 0.4 * h) : f + 0.8 * h; } var d = void 0 !== r ? r : this.radialAxisAngle, m = R(d), g = Math.cos(m), v = Math.sin(m), y = a + (i / 2) * g + c * v, b = o - (i / 2) * v + c * g; this.layers["radial-axis-title"] = x.draw(n, l, { propContainer: s, propName: this.id + ".radialaxis.title", placeholder: z(n, "Click to enter radial axis title"), attributes: { x: y, y: b, "text-anchor": "middle" }, transform: { rotate: -d }, }); } }), (N.updateAngularAxis = function (t, e) { var r = this, n = r.gd, i = r.layers, a = r.radius, u = r.innerRadius, f = r.cx, p = r.cy, d = r.getAngular(e), m = r.angularAxis, g = r.isSmith; g || (r.fillViewInitialKey( "angularaxis.rotation", d.rotation, ), m.setGeometry(), m.setScale()); var v = g ? function (t) { var e = O(r, C([0, t.x])); return Math.atan2(e[0] - f, e[1] - p) - Math.PI / 2; } : function (t) { return m.t2g(t.x); }; "linear" === m.type && "radians" === m.thetaunit && ((m.tick0 = F(m.tick0)), (m.dtick = F(m.dtick))); var y = function (t) { return l(f + a * Math.cos(t), p - a * Math.sin(t)); }, x = g ? function (t) { var e = O(r, C([0, t.x])); return l(e[0], e[1]); } : function (t) { return y(v(t)); }, b = g ? function (t) { var e = O(r, C([0, t.x])), n = Math.atan2(e[0] - f, e[1] - p) - Math.PI / 2; return l(e[0], e[1]) + s(-F(n)); } : function (t) { var e = v(t); return y(e) + s(-F(e)); }, _ = g ? function (t) { return P(r, t.x, 0, 1 / 0); } : function (t) { var e = v(t), r = Math.cos(e), n = Math.sin(e); return ( "M" + [f + u * r, p - u * n] + "L" + [f + a * r, p - a * n] ); }, w = h.makeLabelFns(m, 0).labelStandoff, T = { xFn: function (t) { var e = v(t); return Math.cos(e) * w; }, yFn: function (t) { var e = v(t), r = Math.sin(e) > 0 ? 0.2 : 1; return ( -Math.sin(e) * (w + t.fontSize * r) + Math.abs(Math.cos(e)) * (t.fontSize * M) ); }, anchorFn: function (t) { var e = v(t), r = Math.cos(e); return Math.abs(r) < 0.1 ? "middle" : r > 0 ? "start" : "end"; }, heightFn: function (t, e, r) { var n = v(t); return -0.5 * (1 + Math.sin(n)) * r; }, }, k = j(d); r.angularTickLayout !== k && (i["angular-axis"] .selectAll("." + m._id + "tick") .remove(), (r.angularTickLayout = k)); var A, S = g ? [1 / 0].concat(m.tickvals || []).map(function (t) { return h.tickText(m, t, !0, !1); }) : h.calcTicks(m); if ( (g && ((S[0].text = "\u221e"), (S[0].fontSize *= 1.75)), "linear" === e.gridshape ? ((A = S.map(v)), o.angleDelta(A[0], A[1]) < 0 && (A = A.slice().reverse())) : (A = null), (r.vangles = A), "category" === m.type && (S = S.filter(function (t) { return o.isAngleInsideSector(v(t), r.sectorInRad); })), m.visible) ) { var E = "inside" === m.ticks ? -1 : 1, L = (m.linewidth || 1) / 2; h.drawTicks(n, m, { vals: S, layer: i["angular-axis"], path: "M" + E * L + ",0h" + E * m.ticklen, transFn: b, crisp: !1, }), h.drawGrid(n, m, { vals: S, layer: i["angular-grid"], path: _, transFn: o.noop, crisp: !1, }), h.drawLabels(n, m, { vals: S, layer: i["angular-axis"], repositionOnUpdate: !0, transFn: x, labelFns: T, }); } V(i["angular-line"].select("path"), d.showline, { d: r.pathSubplot(), transform: l(f, p), }) .attr("stroke-width", d.linewidth) .call(c.stroke, d.linecolor); }), (N.updateFx = function (t, e) { this.gd._context.staticPlot || (!this.isSmith && (this.updateAngularDrag(t), this.updateRadialDrag(t, e, 0), this.updateRadialDrag(t, e, 1)), this.updateHoverAndMainDrag(t)); }), (N.updateHoverAndMainDrag = function (t) { var e, r, s = this, c = s.isSmith, u = s.gd, f = s.layers, h = t._zoomlayer, p = S.MINZOOM, d = S.OFFEDGE, m = s.radius, x = s.innerRadius, T = s.cx, k = s.cy, A = s.cxx, M = s.cyy, L = s.sectorInRad, C = s.vangles, P = s.radialAxis, I = E.clampTiny, O = E.findXYatLength, z = E.findEnclosingVertexAngles, D = S.cornerHalfWidth, R = S.cornerLen / 2, F = g.makeDragger( f, "path", "maindrag", !1 === t.dragmode ? "none" : "crosshair", ); n .select(F) .attr("d", s.pathSubplot()) .attr("transform", l(T, k)), (F.onmousemove = function (t) { y.hover(u, t, s.id), (u._fullLayout._lasthover = F), (u._fullLayout._hoversubplot = s.id); }), (F.onmouseout = function (t) { u._dragging || v.unhover(u, t); }); var B, N, j, U, V, H, q, G, Y, W = { element: F, gd: u, subplot: s.id, plotinfo: { id: s.id, xaxis: s.xaxis, yaxis: s.yaxis, }, xaxes: [s.xaxis], yaxes: [s.yaxis], }; function Z(t, e) { return Math.sqrt(t * t + e * e); } function X(t, e) { return Z(t - A, e - M); } function J(t, e) { return Math.atan2(M - e, t - A); } function K(t, e) { return [t * Math.cos(e), t * Math.sin(-e)]; } function Q(t, e) { if (0 === t) return s.pathSector(2 * D); var r = R / t, n = e - r, i = e + r, a = Math.max(0, Math.min(t, m)), o = a - D, l = a + D; return ( "M" + K(o, n) + "A" + [o, o] + " 0,0,0 " + K(o, i) + "L" + K(l, i) + "A" + [l, l] + " 0,0,1 " + K(l, n) + "Z" ); } function $(t, e, r) { if (0 === t) return s.pathSector(2 * D); var n, i, a = K(t, e), o = K(t, r), l = I((a[0] + o[0]) / 2), c = I((a[1] + o[1]) / 2); if (l && c) { var u = c / l, f = -1 / u, h = O(D, u, l, c); (n = O(R, f, h[0][0], h[0][1])), (i = O(R, f, h[1][0], h[1][1])); } else { var p, d; c ? ((p = R), (d = D)) : ((p = D), (d = R)), (n = [ [l - p, c - d], [l + p, c - d], ]), (i = [ [l - p, c + d], [l + p, c + d], ]); } return ( "M" + n.join("L") + "L" + i.reverse().join("L") + "Z" ); } function tt(t, e) { return ( (e = Math.max(Math.min(e, m), x)), t < d ? (t = 0) : m - t < d ? (t = m) : e < d ? (e = 0) : m - e < d && (e = m), Math.abs(e - t) > p ? (t < e ? ((j = t), (U = e)) : ((j = e), (U = t)), !0) : ((j = null), (U = null), !1) ); } function et(t, e) { (t = t || V), (e = e || "M0,0Z"), G.attr("d", t), Y.attr("d", e), g.transitionZoombox(G, Y, H, q), (H = !0); var r = {}; ot(r), u.emit("plotly_relayouting", r); } function rt(t, n) { var i, a, o = B + (t *= e), l = N + (n *= r), c = X(B, N), u = Math.min(X(o, l), m), f = J(B, N); tt(c, u) && ((i = V + s.pathSector(U)), j && (i += s.pathSector(j)), (a = Q(j, f) + Q(U, f))), et(i, a); } function nt(t, e, r, n) { var i = E.findIntersectionXY(r, n, r, [t - A, M - e]); return Z(i[0], i[1]); } function it(t, e) { var r, n, i = B + t, a = N + e, o = J(B, N), l = J(i, a), c = z(o, C), u = z(l, C); tt( nt(B, N, c[0], c[1]), Math.min(nt(i, a, u[0], u[1]), m), ) && ((r = V + s.pathSector(U)), j && (r += s.pathSector(j)), (n = [$(j, c[0], c[1]), $(U, c[0], c[1])].join(" "))), et(r, n); } function at() { if ((g.removeZoombox(u), null !== j && null !== U)) { var t = {}; ot(t), g.showDoubleClickNotifier(u), a.call("_guiRelayout", u, t); } } function ot(t) { var e = P._rl, r = (e[1] - e[0]) / (1 - x / m) / m, n = [e[0] + (j - x) * r, e[0] + (U - x) * r]; t[s.id + ".radialaxis.range"] = n; } function st(t, e) { var r = u._fullLayout.clickmode; if ((g.removeZoombox(u), 2 === t)) { var n = {}; for (var i in s.viewInitial) n[s.id + "." + i] = s.viewInitial[i]; u.emit("plotly_doubleclick", null), a.call("_guiRelayout", u, n); } r.indexOf("select") > -1 && 1 === t && _(e, u, [s.xaxis], [s.yaxis], s.id, W), r.indexOf("event") > -1 && y.click(u, e, s.id); } (W.prepFn = function (t, n, a) { var l = u._fullLayout.dragmode, f = F.getBoundingClientRect(); u._fullLayout._calcInverseTransform(u); var p = u._fullLayout._invTransform; (e = u._fullLayout._invScaleX), (r = u._fullLayout._invScaleY); var d = o.apply3DTransform(p)(n - f.left, a - f.top); if (((B = d[0]), (N = d[1]), C)) { var v = E.findPolygonOffset(m, L[0], L[1], C); (B += A + v[0]), (N += M + v[1]); } switch (l) { case "zoom": (W.clickFn = st), c || ((W.moveFn = C ? it : rt), (W.doneFn = at), (function () { (j = null), (U = null), (V = s.pathSubplot()), (H = !1); var t = u._fullLayout[s.id]; (q = i(t.bgcolor).getLuminance()), (G = g.makeZoombox(h, q, T, k, V)).attr( "fill-rule", "evenodd", ), (Y = g.makeCorners(h, T, k)), w(u); })()); break; case "select": case "lasso": b(t, n, a, W, l); } }), v.init(W); }), (N.updateRadialDrag = function (t, e, r) { var i = this, c = i.gd, u = i.layers, f = i.radius, h = i.innerRadius, p = i.cx, d = i.cy, m = i.radialAxis, y = S.radialDragBoxSize, x = y / 2; if (m.visible) { var b, _, T, M = R(i.radialAxisAngle), E = m._rl, L = E[0], C = E[1], P = E[r], I = (0.75 * (E[1] - E[0])) / (1 - i.getHole(e)) / f; r ? ((b = p + (f + x) * Math.cos(M)), (_ = d - (f + x) * Math.sin(M)), (T = "radialdrag")) : ((b = p + (h - x) * Math.cos(M)), (_ = d - (h - x) * Math.sin(M)), (T = "radialdrag-inner")); var O, z, D, B = g.makeRectDragger( u, T, "crosshair", -x, -x, y, y, ), N = { element: B, gd: c }; !1 === t.dragmode && (N.dragmode = !1), V(n.select(B), m.visible && h < f, { transform: l(b, _), }), (N.prepFn = function () { (O = null), (z = null), (D = null), (N.moveFn = j), (N.doneFn = H), w(c); }), (N.clampFn = function (t, e) { return ( Math.sqrt(t * t + e * e) < S.MINDRAG && ((t = 0), (e = 0)), [t, e] ); }), v.init(N); } function j(t, e) { if (O) O(t, e); else { var n = [t, -e], a = [Math.cos(M), Math.sin(M)], s = Math.abs(o.dot(n, a) / Math.sqrt(o.dot(n, n))); isNaN(s) || (O = s < 0.5 ? q : G); } var l = {}; !(function (t) { null !== z ? (t[i.id + ".radialaxis.angle"] = z) : null !== D && (t[i.id + ".radialaxis.range[" + r + "]"] = D); })(l), c.emit("plotly_relayouting", l); } function H() { null !== z ? a.call( "_guiRelayout", c, i.id + ".radialaxis.angle", z, ) : null !== D && a.call( "_guiRelayout", c, i.id + ".radialaxis.range[" + r + "]", D, ); } function q(t, e) { if (0 !== r) { var n = b + t, a = _ + e; (z = Math.atan2(d - a, n - p)), i.vangles && (z = U(z, i.vangles)), (z = F(z)); var o = l(p, d) + s(-z); u["radial-axis"].attr("transform", o), u["radial-line"] .select("line") .attr("transform", o); var c = i.gd._fullLayout, f = c[i.id]; i.updateRadialAxisTitle(c, f, z); } } function G(t, e) { var n = o.dot([t, -e], [Math.cos(M), Math.sin(M)]); if (((D = P - I * n), I > 0 == (r ? D > L : D < C))) { var s = c._fullLayout, l = s[i.id]; (m.range[r] = D), (m._rl[r] = D), i.updateRadialAxis(s, l), i.xaxis.setRange(), i.xaxis.setScale(), i.yaxis.setRange(), i.yaxis.setScale(); var u = !1; for (var f in i.traceHash) { var h = i.traceHash[f], p = o.filterVisible(h); h[0][0].trace._module.plot(c, i, p, l), a.traceIs(f, "gl") && p.length && (u = !0); } u && (k(c), A(c)); } else D = null; } }), (N.updateAngularDrag = function (t) { var e = this, r = e.gd, i = e.layers, c = e.radius, f = e.angularAxis, h = e.cx, p = e.cy, d = e.cxx, m = e.cyy, y = S.angularDragBoxSize, x = g.makeDragger( i, "path", "angulardrag", !1 === t.dragmode ? "none" : "move", ), b = { element: x, gd: r }; function _(t, e) { return Math.atan2(m + y - e, t - d - y); } !1 === t.dragmode ? (b.dragmode = !1) : n .select(x) .attr("d", e.pathAnnulus(c, c + y)) .attr("transform", l(h, p)) .call(T, "move"); var M, E, L, C, P, I, O = i.frontplot .select(".scatterlayer") .selectAll(".trace"), z = O.selectAll(".point"), D = O.selectAll(".textpoint"); function R(c, g) { var v = e.gd._fullLayout, y = v[e.id], x = _(M + c * t._invScaleX, E + g * t._invScaleY), b = F(x - I); if ( ((C = L + b), i.frontplot.attr( "transform", l(e.xOffset2, e.yOffset2) + s([-b, d, m]), ), e.vangles) ) { P = e.radialAxisAngle + b; var w = l(h, p) + s(-b), T = l(h, p) + s(-P); i.bg.attr("transform", w), i["radial-grid"].attr("transform", w), i["radial-axis"].attr("transform", T), i["radial-line"] .select("line") .attr("transform", T), e.updateRadialAxisTitle(v, y, P); } else e.clipPaths.forTraces .select("path") .attr("transform", l(d, m) + s(b)); z.each(function () { var t = n.select(this), e = u.getTranslate(t); t.attr("transform", l(e.x, e.y) + s([b])); }), D.each(function () { var t = n.select(this), e = t.select("text"), r = u.getTranslate(t); t.attr( "transform", s([b, e.attr("x"), e.attr("y")]) + l(r.x, r.y), ); }), (f.rotation = o.modHalf(C, 360)), e.updateAngularAxis(v, y), e._hasClipOnAxisFalse && !o.isFullCircle(e.sectorInRad) && O.call(u.hideOutsideRangePoints, e); var S = !1; for (var R in e.traceHash) if (a.traceIs(R, "gl")) { var N = e.traceHash[R], j = o.filterVisible(N); N[0][0].trace._module.plot(r, e, j, y), j.length && (S = !0); } S && (k(r), A(r)); var U = {}; B(U), r.emit("plotly_relayouting", U); } function B(t) { (t[e.id + ".angularaxis.rotation"] = C), e.vangles && (t[e.id + ".radialaxis.angle"] = P); } function N() { D.select("text").attr("transform", null); var t = {}; B(t), a.call("_guiRelayout", r, t); } (b.prepFn = function (n, i, a) { var s = t[e.id]; L = s.angularaxis.rotation; var l = x.getBoundingClientRect(); (M = i - l.left), (E = a - l.top), r._fullLayout._calcInverseTransform(r); var c = o.apply3DTransform(t._invTransform)(M, E); (M = c[0]), (E = c[1]), (I = _(M, E)), (b.moveFn = R), (b.doneFn = N), w(r); }), e.vangles && !o.isFullCircle(e.sectorInRad) && ((b.prepFn = o.noop), T(n.select(x), null)), v.init(b); }), (N.isPtInside = function (t) { if (this.isSmith) return !0; var e = this.sectorInRad, r = this.vangles, n = this.angularAxis.c2g(t.theta), i = this.radialAxis, a = i.c2l(t.r), s = i._rl; return (r ? E.isPtInsidePolygon : o.isPtInsideSector)( a, n, s, e, r, ); }), (N.pathArc = function (t) { var e = this.sectorInRad, r = this.vangles; return (r ? E.pathPolygon : o.pathArc)(t, e[0], e[1], r); }), (N.pathSector = function (t) { var e = this.sectorInRad, r = this.vangles; return (r ? E.pathPolygon : o.pathSector)( t, e[0], e[1], r, ); }), (N.pathAnnulus = function (t, e) { var r = this.sectorInRad, n = this.vangles; return (n ? E.pathPolygonAnnulus : o.pathAnnulus)( t, e, r[0], r[1], n, ); }), (N.pathSubplot = function () { var t = this.innerRadius, e = this.radius; return t ? this.pathAnnulus(t, e) : this.pathSector(e); }), (N.fillViewInitialKey = function (t, e) { t in this.viewInitial || (this.viewInitial[t] = e); }); }, { "../../components/color": 367, "../../components/dragelement": 386, "../../components/drawing": 389, "../../components/fx": 407, "../../components/selections": 455, "../../components/titles": 476, "../../constants/alignment": 483, "../../lib": 515, "../../lib/clear_gl_canvases": 499, "../../lib/setcursor": 536, "../../plot_api/subroutines": 556, "../../plots/cartesian/axes": 566, "../../registry": 647, "../cartesian/autorange": 565, "../cartesian/dragbox": 575, "../cartesian/set_convert": 585, "../plots": 628, "../smith/helpers": 637, "./constants": 629, "./helpers": 630, "./set_convert": 635, "@plotly/d3": 58, tinycolor2: 313, }, ], 635: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../cartesian/set_convert"), a = n.deg2rad, o = n.rad2deg; e.exports = function (t, e, r) { switch ((i(t, r), t._id)) { case "x": case "radialaxis": !(function (t, e) { var r = e._subplot; t.setGeometry = function () { var e = t._rl[0], n = t._rl[1], i = r.innerRadius, a = (r.radius - i) / (n - e), o = i / a, s = e > n ? function (t) { return t <= 0; } : function (t) { return t >= 0; }; (t.c2g = function (r) { var n = t.c2l(r) - e; return (s(n) ? n : 0) + o; }), (t.g2c = function (r) { return t.l2c(r + e - o); }), (t.g2p = function (t) { return t * a; }), (t.c2p = function (e) { return t.g2p(t.c2g(e)); }); }; })(t, e); break; case "angularaxis": !(function (t, e) { var r = t.type; if ("linear" === r) { var i = t.d2c, s = t.c2d; (t.d2c = function (t, e) { return (function (t, e) { return "degrees" === e ? a(t) : t; })(i(t), e); }), (t.c2d = function (t, e) { return s( (function (t, e) { return "degrees" === e ? o(t) : t; })(t, e), ); }); } (t.makeCalcdata = function (e, i) { var a, o, s = e[i], l = e._length, c = function (r) { return t.d2c(r, e.thetaunit); }; if (s) { if (n.isTypedArray(s) && "linear" === r) { if (l === s.length) return s; if (s.subarray) return s.subarray(0, l); } for (a = new Array(l), o = 0; o < l; o++) a[o] = c(s[o]); } else { var u = i + "0", f = "d" + i, h = u in e ? c(e[u]) : 0, p = e[f] ? c(e[f]) : (t.period || 2 * Math.PI) / l; for (a = new Array(l), o = 0; o < l; o++) a[o] = h + o * p; } return a; }), (t.setGeometry = function () { var i, s, l, c, u = e.sector, f = u.map(a), h = { clockwise: -1, counterclockwise: 1 }[ t.direction ], p = a(t.rotation), d = function (t) { return h * t + p; }, m = function (t) { return (t - p) / h; }; switch (r) { case "linear": (s = i = n.identity), (c = a), (l = o), (t.range = n.isFullCircle(f) ? [u[0], u[0] + 360] : f.map(m).map(o)); break; case "category": var g = t._categories.length, v = t.period ? Math.max(t.period, g) : g; 0 === v && (v = 1), (s = c = function (t) { return (2 * t * Math.PI) / v; }), (i = l = function (t) { return (t * v) / Math.PI / 2; }), (t.range = [0, v]); } (t.c2g = function (t) { return d(s(t)); }), (t.g2c = function (t) { return i(m(t)); }), (t.t2g = function (t) { return d(c(t)); }), (t.g2t = function (t) { return l(m(t)); }); }); })(t, e); } }; }, { "../../lib": 515, "../cartesian/set_convert": 585 }, ], 636: [ function (t, e, r) { "use strict"; e.exports = { attr: "subplot", name: "smith", axisNames: ["realaxis", "imaginaryaxis"], axisName2dataArray: { imaginaryaxis: "imag", realaxis: "real", }, }; }, {}, ], 637: [ function (t, e, r) { "use strict"; function n(t) { return t < 0 ? -1 : t > 0 ? 1 : 0; } function i(t) { var e = t[0], r = t[1]; if (!isFinite(e) || !isFinite(r)) return [1, 0]; var n = (e + 1) * (e + 1) + r * r; return [(e * e + r * r - 1) / n, (2 * r) / n]; } function a(t, e) { var r = e[0], n = e[1]; return [r * t.radius + t.cx, -n * t.radius + t.cy]; } function o(t, e) { return e * t.radius; } e.exports = { smith: i, reactanceArc: function (t, e, r, n) { var s = a(t, i([r, e])), l = s[0], c = s[1], u = a(t, i([n, e])), f = u[0], h = u[1]; if (0 === e) return ["M" + l + "," + c, "L" + f + "," + h].join(" "); var p = o(t, 1 / Math.abs(e)); return [ "M" + l + "," + c, "A" + p + "," + p + " 0 0," + (e < 0 ? 1 : 0) + " " + f + "," + h, ].join(" "); }, resistanceArc: function (t, e, r, s) { var l = o(t, 1 / (e + 1)), c = a(t, i([e, r])), u = c[0], f = c[1], h = a(t, i([e, s])), p = h[0], d = h[1]; if (n(r) !== n(s)) { var m = a(t, i([e, 0])); return [ "M" + u + "," + f, "A" + l + "," + l + " 0 0," + (0 < r ? 0 : 1) + " " + m[0] + "," + m[1], "A" + l + "," + l + " 0 0," + (s < 0 ? 0 : 1) + p + "," + d, ].join(" "); } return [ "M" + u + "," + f, "A" + l + "," + l + " 0 0," + (s < r ? 0 : 1) + " " + p + "," + d, ].join(" "); }, smithTransform: a, }; }, {}, ], 638: [ function (t, e, r) { "use strict"; var n = t("../get_data").getSubplotCalcData, i = t("../../lib").counterRegex, a = t("../polar/polar"), o = t("./constants"), s = o.attr, l = o.name, c = i(l), u = {}; (u[s] = { valType: "subplotid", dflt: l, editType: "calc" }), (e.exports = { attr: s, name: l, idRoot: l, idRegex: c, attrRegex: c, attributes: u, layoutAttributes: t("./layout_attributes"), supplyLayoutDefaults: t("./layout_defaults"), plot: function (t) { for ( var e = t._fullLayout, r = t.calcdata, i = e._subplots[l], o = 0; o < i.length; o++ ) { var s = i[o], c = n(r, l, s), u = e[s]._subplot; u || ((u = a(t, s, !0)), (e[s]._subplot = u)), u.plot(c, e, t._promises); } }, clean: function (t, e, r, n) { for ( var i = n._subplots[l] || [], a = 0; a < i.length; a++ ) { var o = i[a], s = n[o]._subplot; if (!e[o] && s) for (var c in (s.framework.remove(), s.clipPaths)) s.clipPaths[c].remove(); } }, toSVG: t("../cartesian").toSVG, }); }, { "../../lib": 515, "../cartesian": 578, "../get_data": 602, "../polar/polar": 634, "./constants": 636, "./layout_attributes": 639, "./layout_defaults": 640, }, ], 639: [ function (t, e, r) { "use strict"; var n = t("../../components/color/attributes"), i = t("../cartesian/layout_attributes"), a = t("../domain").attributes, o = t("../../lib").extendFlat, s = t("../../plot_api/edit_types").overrideAll, l = s( { color: i.color, showline: o({}, i.showline, { dflt: !0 }), linecolor: i.linecolor, linewidth: i.linewidth, showgrid: o({}, i.showgrid, { dflt: !0 }), gridcolor: i.gridcolor, gridwidth: i.gridwidth, griddash: i.griddash, }, "plot", "from-root", ), c = s( { ticklen: i.ticklen, tickwidth: o({}, i.tickwidth, { dflt: 2 }), tickcolor: i.tickcolor, showticklabels: i.showticklabels, showtickprefix: i.showtickprefix, tickprefix: i.tickprefix, showticksuffix: i.showticksuffix, ticksuffix: i.ticksuffix, tickfont: i.tickfont, tickformat: i.tickformat, hoverformat: i.hoverformat, layer: i.layer, }, "plot", "from-root", ), u = o( { visible: o({}, i.visible, { dflt: !0 }), tickvals: { dflt: [0.2, 0.5, 1, 2, 5], valType: "data_array", editType: "plot", }, tickangle: o({}, i.tickangle, { dflt: 90 }), ticks: { valType: "enumerated", values: ["top", "bottom", ""], editType: "ticks", }, side: { valType: "enumerated", values: ["top", "bottom"], dflt: "top", editType: "plot", }, editType: "calc", }, l, c, ), f = o( { visible: o({}, i.visible, { dflt: !0 }), tickvals: { valType: "data_array", editType: "plot" }, ticks: i.ticks, editType: "calc", }, l, c, ); e.exports = { domain: a({ name: "smith", editType: "plot" }), bgcolor: { valType: "color", editType: "plot", dflt: n.background, }, realaxis: u, imaginaryaxis: f, editType: "calc", }; }, { "../../components/color/attributes": 366, "../../lib": 515, "../../plot_api/edit_types": 548, "../cartesian/layout_attributes": 579, "../domain": 593, }, ], 640: [ function (t, e, r) { "use strict"; var n, i, a, o = t("../../lib"), s = t("../../components/color"), l = t("../../plot_api/plot_template"), c = t("../subplot_defaults"), u = t("../get_data").getSubplotData, f = t("../cartesian/prefix_suffix_defaults"), h = t("../cartesian/tick_label_defaults"), p = t("../cartesian/line_grid_defaults"), d = t("../cartesian/set_convert"), m = t("./layout_attributes"), g = t("./constants"), v = g.axisNames, y = ((n = function (t) { return t .slice() .reverse() .map(function (t) { return -t; }) .concat([0]) .concat(t); }), (i = String), (a = {}), function (t) { var e = i ? i(t) : t; if (e in a) return a[e]; var r = n(t); return (a[e] = r), r; }); function x(t, e, r, n) { var i = r("bgcolor"); n.bgColor = s.combine(i, n.paper_bgcolor); var a, c = u(n.fullData, g.name, n.id), x = n.layoutOut; function b(t, e) { return r(a + "." + t, e); } for (var _ = 0; _ < v.length; _++) { (a = v[_]), o.isPlainObject(t[a]) || (t[a] = {}); var w = t[a], T = l.newContainer(e, a); (T._id = T._name = a), (T._attr = n.id + "." + a), (T._traceIndices = c.map(function (t) { return t._expandedIndex; })); var k = b("visible"); if ( ((T.type = "linear"), d(T, x), f(w, T, b, T.type), k) ) { var A, M, S, E, L = "realaxis" === a; if ((L && b("side"), L)) b("tickvals"); else b( "tickvals", y(e.realaxis.tickvals || m.realaxis.tickvals.dflt), ); var C = n.font || {}; k && ((M = (A = b("color")) === w.color ? A : C.color), (S = C.size), (E = C.family)), h(w, T, b, T.type, { noTicklabelstep: !0, noAng: !L, noExp: !0, font: { color: M, size: S, family: E }, }), o.coerce2(t, e, m, a + ".ticklen"), o.coerce2(t, e, m, a + ".tickwidth"), o.coerce2(t, e, m, a + ".tickcolor", e.color), b("ticks") || (delete e[a].ticklen, delete e[a].tickwidth, delete e[a].tickcolor), p(w, T, b, { dfltColor: A, bgColor: n.bgColor, blend: 60, showLine: !0, showGrid: !0, noZeroLine: !0, attributes: m[a], }), b("layer"); } b("hoverformat"), delete T.type, (T._input = w); } } e.exports = function (t, e, r) { c(t, e, r, { noUirevision: !0, type: g.name, attributes: m, handleDefaults: x, font: e.font, paper_bgcolor: e.paper_bgcolor, fullData: r, layoutOut: e, }); }; }, { "../../components/color": 367, "../../lib": 515, "../../plot_api/plot_template": 555, "../cartesian/line_grid_defaults": 581, "../cartesian/prefix_suffix_defaults": 583, "../cartesian/set_convert": 585, "../cartesian/tick_label_defaults": 587, "../get_data": 602, "../subplot_defaults": 641, "./constants": 636, "./layout_attributes": 639, }, ], 641: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("../plot_api/plot_template"), a = t("./domain").defaults; e.exports = function (t, e, r, o) { var s, l, c = o.type, u = o.attributes, f = o.handleDefaults, h = o.partition || "x", p = e._subplots[c], d = p.length, m = d && p[0].replace(/\d+$/, ""); function g(t, e) { return n.coerce(s, l, u, t, e); } for (var v = 0; v < d; v++) { var y = p[v]; (s = t[y] ? t[y] : (t[y] = {})), (l = i.newContainer(e, y, m)), o.noUirevision || g("uirevision", e.uirevision); var x = {}; (x[h] = [v / d, (v + 1) / d]), a(l, e, g, x), (o.id = y), f(s, l, g, o); } }; }, { "../lib": 515, "../plot_api/plot_template": 555, "./domain": 593, }, ], 642: [ function (t, e, r) { "use strict"; var n = t("../constants/docs"); n.FORMAT_LINK, n.DATE_FORMAT_LINK; function i(t) { var e = t.description ? " " + t.description : "", r = t.keys || []; if (r.length > 0) { for (var n = [], i = 0; i < r.length; i++) n[i] = "`" + r[i] + "`"; (e += "Finally, the template string has access to "), (e = 1 === r.length ? "variable " + n[0] : "variables " + n.slice(0, -1).join(", ") + " and " + n.slice(-1) + "."); } return e; } (r.hovertemplateAttrs = function (t, e) { t = t || {}; i((e = e || {})); var r = { valType: "string", dflt: "", editType: t.editType || "none", }; return !1 !== t.arrayOk && (r.arrayOk = !0), r; }), (r.texttemplateAttrs = function (t, e) { t = t || {}; i((e = e || {})); var r = { valType: "string", dflt: "", editType: t.editType || "calc", }; return !1 !== t.arrayOk && (r.arrayOk = !0), r; }); }, { "../constants/docs": 486 }, ], 643: [ function (t, e, r) { "use strict"; var n = t("./ternary"), i = t("../../plots/get_data").getSubplotCalcData, a = t("../../lib").counterRegex; r.name = "ternary"; var o = (r.attr = "subplot"); (r.idRoot = "ternary"), (r.idRegex = r.attrRegex = a("ternary")), ((r.attributes = {})[o] = { valType: "subplotid", dflt: "ternary", editType: "calc", }), (r.layoutAttributes = t("./layout_attributes")), (r.supplyLayoutDefaults = t("./layout_defaults")), (r.plot = function (t) { for ( var e = t._fullLayout, r = t.calcdata, a = e._subplots.ternary, o = 0; o < a.length; o++ ) { var s = a[o], l = i(r, "ternary", s), c = e[s]._subplot; c || ((c = new n( { id: s, graphDiv: t, container: e._ternarylayer.node(), }, e, )), (e[s]._subplot = c)), c.plot(l, e, t._promises); } }), (r.clean = function (t, e, r, n) { for ( var i = n._subplots.ternary || [], a = 0; a < i.length; a++ ) { var o = i[a], s = n[o]._subplot; !e[o] && s && (s.plotContainer.remove(), s.clipDef.remove(), s.clipDefRelative.remove(), s.layers["a-title"].remove(), s.layers["b-title"].remove(), s.layers["c-title"].remove()); } }); }, { "../../lib": 515, "../../plots/get_data": 602, "./layout_attributes": 644, "./layout_defaults": 645, "./ternary": 646, }, ], 644: [ function (t, e, r) { "use strict"; var n = t("../../components/color/attributes"), i = t("../domain").attributes, a = t("../cartesian/layout_attributes"), o = t("../../plot_api/edit_types").overrideAll, s = t("../../lib/extend").extendFlat, l = { title: { text: a.title.text, font: a.title.font }, color: a.color, tickmode: a.tickmode, nticks: s({}, a.nticks, { dflt: 6, min: 1 }), tick0: a.tick0, dtick: a.dtick, tickvals: a.tickvals, ticktext: a.ticktext, ticks: a.ticks, ticklen: a.ticklen, tickwidth: a.tickwidth, tickcolor: a.tickcolor, ticklabelstep: a.ticklabelstep, showticklabels: a.showticklabels, showtickprefix: a.showtickprefix, tickprefix: a.tickprefix, showticksuffix: a.showticksuffix, ticksuffix: a.ticksuffix, showexponent: a.showexponent, exponentformat: a.exponentformat, minexponent: a.minexponent, separatethousands: a.separatethousands, tickfont: a.tickfont, tickangle: a.tickangle, tickformat: a.tickformat, tickformatstops: a.tickformatstops, hoverformat: a.hoverformat, showline: s({}, a.showline, { dflt: !0 }), linecolor: a.linecolor, linewidth: a.linewidth, showgrid: s({}, a.showgrid, { dflt: !0 }), gridcolor: a.gridcolor, gridwidth: a.gridwidth, griddash: a.griddash, layer: a.layer, min: { valType: "number", dflt: 0, min: 0 }, _deprecated: { title: a._deprecated.title, titlefont: a._deprecated.titlefont, }, }, c = (e.exports = o( { domain: i({ name: "ternary" }), bgcolor: { valType: "color", dflt: n.background }, sum: { valType: "number", dflt: 1, min: 0 }, aaxis: l, baxis: l, caxis: l, }, "plot", "from-root", )); (c.uirevision = { valType: "any", editType: "none" }), (c.aaxis.uirevision = c.baxis.uirevision = c.caxis.uirevision = { valType: "any", editType: "none" }); }, { "../../components/color/attributes": 366, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../cartesian/layout_attributes": 579, "../domain": 593, }, ], 645: [ function (t, e, r) { "use strict"; var n = t("../../components/color"), i = t("../../plot_api/plot_template"), a = t("../../lib"), o = t("../subplot_defaults"), s = t("../cartesian/tick_label_defaults"), l = t("../cartesian/prefix_suffix_defaults"), c = t("../cartesian/tick_mark_defaults"), u = t("../cartesian/tick_value_defaults"), f = t("../cartesian/line_grid_defaults"), h = t("./layout_attributes"), p = ["aaxis", "baxis", "caxis"]; function d(t, e, r, a) { var o, s, l, c = r("bgcolor"), u = r("sum"); a.bgColor = n.combine(c, a.paper_bgcolor); for (var f = 0; f < p.length; f++) (s = t[(o = p[f])] || {}), ((l = i.newContainer(e, o))._name = o), m(s, l, a, e); var h = e.aaxis, d = e.baxis, g = e.caxis; h.min + d.min + g.min >= u && ((h.min = 0), (d.min = 0), (g.min = 0), t.aaxis && delete t.aaxis.min, t.baxis && delete t.baxis.min, t.caxis && delete t.caxis.min); } function m(t, e, r, n) { var i = h[e._name]; function o(r, n) { return a.coerce(t, e, i, r, n); } o("uirevision", n.uirevision), (e.type = "linear"); var p = o("color"), d = p !== i.color.dflt ? p : r.font.color, m = e._name.charAt(0).toUpperCase(), g = "Component " + m, v = o("title.text", g); (e._hovertitle = v === g ? v : m), a.coerceFont(o, "title.font", { family: r.font.family, size: a.bigFont(r.font.size), color: d, }), o("min"), u(t, e, o, "linear"), l(t, e, o, "linear"), s(t, e, o, "linear"), c(t, e, o, { outerTicks: !0 }), o("showticklabels") && (a.coerceFont(o, "tickfont", { family: r.font.family, size: r.font.size, color: d, }), o("tickangle"), o("tickformat")), f(t, e, o, { dfltColor: p, bgColor: r.bgColor, blend: 60, showLine: !0, showGrid: !0, noZeroLine: !0, attributes: i, }), o("hoverformat"), o("layer"); } e.exports = function (t, e, r) { o(t, e, r, { type: "ternary", attributes: h, handleDefaults: d, font: e.font, paper_bgcolor: e.paper_bgcolor, }); }; }, { "../../components/color": 367, "../../lib": 515, "../../plot_api/plot_template": 555, "../cartesian/line_grid_defaults": 581, "../cartesian/prefix_suffix_defaults": 583, "../cartesian/tick_label_defaults": 587, "../cartesian/tick_mark_defaults": 588, "../cartesian/tick_value_defaults": 589, "../subplot_defaults": 641, "./layout_attributes": 644, }, ], 646: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("tinycolor2"), a = t("../../registry"), o = t("../../lib"), s = o.strTranslate, l = o._, c = t("../../components/color"), u = t("../../components/drawing"), f = t("../cartesian/set_convert"), h = t("../../lib/extend").extendFlat, p = t("../plots"), d = t("../cartesian/axes"), m = t("../../components/dragelement"), g = t("../../components/fx"), v = t("../../components/dragelement/helpers"), y = v.freeMode, x = v.rectMode, b = t("../../components/titles"), _ = t("../../components/selections").prepSelect, w = t("../../components/selections").selectOnClick, T = t("../../components/selections").clearOutline, k = t("../../components/selections").clearSelectionsCache, A = t("../cartesian/constants"); function M(t, e) { (this.id = t.id), (this.graphDiv = t.graphDiv), this.init(e), this.makeFramework(e), (this.aTickLayout = null), (this.bTickLayout = null), (this.cTickLayout = null); } e.exports = M; var S = M.prototype; (S.init = function (t) { (this.container = t._ternarylayer), (this.defs = t._defs), (this.layoutId = t._uid), (this.traceHash = {}), (this.layers = {}); }), (S.plot = function (t, e) { var r = e[this.id], n = e._size; this._hasClipOnAxisFalse = !1; for (var i = 0; i < t.length; i++) { if (!1 === t[i][0].trace.cliponaxis) { this._hasClipOnAxisFalse = !0; break; } } this.updateLayers(r), this.adjustLayout(r, n), p.generalUpdatePerTraceModule( this.graphDiv, this, t, r, ), this.layers.plotbg .select("path") .call(c.fill, r.bgcolor); }), (S.makeFramework = function (t) { var e = this.graphDiv, r = t[this.id], n = (this.clipId = "clip" + this.layoutId + this.id), i = (this.clipIdRelative = "clip-relative" + this.layoutId + this.id); (this.clipDef = o.ensureSingleById( t._clips, "clipPath", n, function (t) { t.append("path").attr("d", "M0,0Z"); }, )), (this.clipDefRelative = o.ensureSingleById( t._clips, "clipPath", i, function (t) { t.append("path").attr("d", "M0,0Z"); }, )), (this.plotContainer = o.ensureSingle( this.container, "g", this.id, )), this.updateLayers(r), u.setClipUrl(this.layers.backplot, n, e), u.setClipUrl(this.layers.grids, n, e); }), (S.updateLayers = function (t) { var e = this.layers, r = ["draglayer", "plotbg", "backplot", "grids"]; "below traces" === t.aaxis.layer && r.push("aaxis", "aline"), "below traces" === t.baxis.layer && r.push("baxis", "bline"), "below traces" === t.caxis.layer && r.push("caxis", "cline"), r.push("frontplot"), "above traces" === t.aaxis.layer && r.push("aaxis", "aline"), "above traces" === t.baxis.layer && r.push("baxis", "bline"), "above traces" === t.caxis.layer && r.push("caxis", "cline"); var i = this.plotContainer .selectAll("g.toplevel") .data(r, String), a = ["agrid", "bgrid", "cgrid"]; i .enter() .append("g") .attr("class", function (t) { return "toplevel " + t; }) .each(function (t) { var r = n.select(this); (e[t] = r), "frontplot" === t ? r.append("g").classed("scatterlayer", !0) : "backplot" === t ? r.append("g").classed("maplayer", !0) : "plotbg" === t ? r.append("path").attr("d", "M0,0Z") : "aline" === t || "bline" === t || "cline" === t ? r.append("path") : "grids" === t && a.forEach(function (t) { e[t] = r .append("g") .classed("grid " + t, !0); }); }), i.order(); }); var E = Math.sqrt(4 / 3); (S.adjustLayout = function (t, e) { var r, n, i, a, o, l, p = this, d = t.domain, m = (d.x[0] + d.x[1]) / 2, g = (d.y[0] + d.y[1]) / 2, v = d.x[1] - d.x[0], y = d.y[1] - d.y[0], x = v * e.w, b = y * e.h, _ = t.sum, w = t.aaxis.min, T = t.baxis.min, k = t.caxis.min; x > E * b ? (i = (a = b) * E) : (a = (i = x) / E), (o = (v * i) / x), (l = (y * a) / b), (r = e.l + e.w * m - i / 2), (n = e.t + e.h * (1 - g) - a / 2), (p.x0 = r), (p.y0 = n), (p.w = i), (p.h = a), (p.sum = _), (p.xaxis = { type: "linear", range: [w + 2 * k - _, _ - w - 2 * T], domain: [m - o / 2, m + o / 2], _id: "x", }), f(p.xaxis, p.graphDiv._fullLayout), p.xaxis.setScale(), (p.xaxis.isPtWithinRange = function (t) { return ( t.a >= p.aaxis.range[0] && t.a <= p.aaxis.range[1] && t.b >= p.baxis.range[1] && t.b <= p.baxis.range[0] && t.c >= p.caxis.range[1] && t.c <= p.caxis.range[0] ); }), (p.yaxis = { type: "linear", range: [w, _ - T - k], domain: [g - l / 2, g + l / 2], _id: "y", }), f(p.yaxis, p.graphDiv._fullLayout), p.yaxis.setScale(), (p.yaxis.isPtWithinRange = function () { return !0; }); var A = p.yaxis.domain[0], M = (p.aaxis = h({}, t.aaxis, { range: [w, _ - T - k], side: "left", tickangle: (+t.aaxis.tickangle || 0) - 30, domain: [A, A + l * E], anchor: "free", position: 0, _id: "y", _length: i, })); f(M, p.graphDiv._fullLayout), M.setScale(); var S = (p.baxis = h({}, t.baxis, { range: [_ - w - k, T], side: "bottom", domain: p.xaxis.domain, anchor: "free", position: 0, _id: "x", _length: i, })); f(S, p.graphDiv._fullLayout), S.setScale(); var L = (p.caxis = h({}, t.caxis, { range: [_ - w - T, k], side: "right", tickangle: (+t.caxis.tickangle || 0) + 30, domain: [A, A + l * E], anchor: "free", position: 0, _id: "y", _length: i, })); f(L, p.graphDiv._fullLayout), L.setScale(); var C = "M" + r + "," + (n + a) + "h" + i + "l-" + i / 2 + ",-" + a + "Z"; p.clipDef.select("path").attr("d", C), p.layers.plotbg.select("path").attr("d", C); var P = "M0," + a + "h" + i + "l-" + i / 2 + ",-" + a + "Z"; p.clipDefRelative.select("path").attr("d", P); var I = s(r, n); p.plotContainer .selectAll(".scatterlayer,.maplayer") .attr("transform", I), p.clipDefRelative.select("path").attr("transform", null); var O = s(r - S._offset, n + a); p.layers.baxis.attr("transform", O), p.layers.bgrid.attr("transform", O); var z = s(r + i / 2, n) + "rotate(30)" + s(0, -M._offset); p.layers.aaxis.attr("transform", z), p.layers.agrid.attr("transform", z); var D = s(r + i / 2, n) + "rotate(-30)" + s(0, -L._offset); p.layers.caxis.attr("transform", D), p.layers.cgrid.attr("transform", D), p.drawAxes(!0), p.layers.aline .select("path") .attr( "d", M.showline ? "M" + r + "," + (n + a) + "l" + i / 2 + ",-" + a : "M0,0", ) .call(c.stroke, M.linecolor || "#000") .style("stroke-width", (M.linewidth || 0) + "px"), p.layers.bline .select("path") .attr( "d", S.showline ? "M" + r + "," + (n + a) + "h" + i : "M0,0", ) .call(c.stroke, S.linecolor || "#000") .style("stroke-width", (S.linewidth || 0) + "px"), p.layers.cline .select("path") .attr( "d", L.showline ? "M" + (r + i / 2) + "," + n + "l" + i / 2 + "," + a : "M0,0", ) .call(c.stroke, L.linecolor || "#000") .style("stroke-width", (L.linewidth || 0) + "px"), p.graphDiv._context.staticPlot || p.initInteractions(), u.setClipUrl( p.layers.frontplot, p._hasClipOnAxisFalse ? null : p.clipId, p.graphDiv, ); }), (S.drawAxes = function (t) { var e = this.graphDiv, r = this.id.substr(7) + "title", n = this.layers, i = this.aaxis, a = this.baxis, o = this.caxis; if ((this.drawAx(i), this.drawAx(a), this.drawAx(o), t)) { var s = Math.max( i.showticklabels ? i.tickfont.size / 2 : 0, (o.showticklabels ? 0.75 * o.tickfont.size : 0) + ("outside" === o.ticks ? 0.87 * o.ticklen : 0), ), c = (a.showticklabels ? a.tickfont.size : 0) + ("outside" === a.ticks ? a.ticklen : 0) + 3; (n["a-title"] = b.draw(e, "a" + r, { propContainer: i, propName: this.id + ".aaxis.title", placeholder: l(e, "Click to enter Component A title"), attributes: { x: this.x0 + this.w / 2, y: this.y0 - i.title.font.size / 3 - s, "text-anchor": "middle", }, })), (n["b-title"] = b.draw(e, "b" + r, { propContainer: a, propName: this.id + ".baxis.title", placeholder: l( e, "Click to enter Component B title", ), attributes: { x: this.x0 - c, y: this.y0 + this.h + 0.83 * a.title.font.size + c, "text-anchor": "middle", }, })), (n["c-title"] = b.draw(e, "c" + r, { propContainer: o, propName: this.id + ".caxis.title", placeholder: l( e, "Click to enter Component C title", ), attributes: { x: this.x0 + this.w + c, y: this.y0 + this.h + 0.83 * o.title.font.size + c, "text-anchor": "middle", }, })); } }), (S.drawAx = function (t) { var e, r = this.graphDiv, n = t._name, i = n.charAt(0), a = t._id, s = this.layers[n], l = i + "tickLayout", c = (e = t).ticks + String(e.ticklen) + String(e.showticklabels); this[l] !== c && (s.selectAll("." + a + "tick").remove(), (this[l] = c)), t.setScale(); var u = d.calcTicks(t), f = d.clipEnds(t, u), h = d.makeTransTickFn(t), p = d.getTickSigns(t)[2], m = o.deg2rad(30), g = (p * (t.linewidth || 1)) / 2, v = p * t.ticklen, y = this.w, x = this.h, b = "b" === i ? "M0," + g + "l" + Math.sin(m) * v + "," + Math.cos(m) * v : "M" + g + ",0l" + Math.cos(m) * v + "," + -Math.sin(m) * v, _ = { a: "M0,0l" + x + ",-" + y / 2, b: "M0,0l-" + y / 2 + ",-" + x, c: "M0,0l-" + x + "," + y / 2, }[i]; d.drawTicks(r, t, { vals: "inside" === t.ticks ? f : u, layer: s, path: b, transFn: h, crisp: !1, }), d.drawGrid(r, t, { vals: f, layer: this.layers[i + "grid"], path: _, transFn: h, crisp: !1, }), d.drawLabels(r, t, { vals: u, layer: s, transFn: h, labelFns: d.makeLabelFns(t, 0, 30), }); }); var L = A.MINZOOM / 2 + 0.87, C = "m-0.87,.5h" + L + "v3h-" + (L + 5.2) + "l" + (L / 2 + 2.6) + ",-" + (0.87 * L + 4.5) + "l2.6,1.5l-" + L / 2 + "," + 0.87 * L + "Z", P = "m0.87,.5h-" + L + "v3h" + (L + 5.2) + "l-" + (L / 2 + 2.6) + ",-" + (0.87 * L + 4.5) + "l-2.6,1.5l" + L / 2 + "," + 0.87 * L + "Z", I = "m0,1l" + L / 2 + "," + 0.87 * L + "l2.6,-1.5l-" + (L / 2 + 2.6) + ",-" + (0.87 * L + 4.5) + "l-" + (L / 2 + 2.6) + "," + (0.87 * L + 4.5) + "l2.6,1.5l" + L / 2 + ",-" + 0.87 * L + "Z", O = !0; function z(t) { n.select(t) .selectAll( ".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners", ) .remove(); } (S.clearOutline = function () { k(this.dragOptions), T(this.dragOptions.gd); }), (S.initInteractions = function () { var t, e, r, n, f, h, p, d, v, b, T, k, M = this, S = M.layers.plotbg.select("path").node(), L = M.graphDiv, D = L._fullLayout._zoomlayer; function R(t) { var e = {}; return ( (e[M.id + ".aaxis.min"] = t.a), (e[M.id + ".baxis.min"] = t.b), (e[M.id + ".caxis.min"] = t.c), e ); } function F(t, e) { var r = L._fullLayout.clickmode; z(L), 2 === t && (L.emit("plotly_doubleclick", null), a.call("_guiRelayout", L, R({ a: 0, b: 0, c: 0 }))), r.indexOf("select") > -1 && 1 === t && w(e, L, [M.xaxis], [M.yaxis], M.id, M.dragOptions), r.indexOf("event") > -1 && g.click(L, e, M.id); } function B(t, e) { return 1 - e / M.h; } function N(t, e) { return 1 - (t + (M.h - e) / Math.sqrt(3)) / M.w; } function j(t, e) { return (t - (M.h - e) / Math.sqrt(3)) / M.w; } function U(i, a) { var o = r + i * t, s = n + a * e, l = Math.max(0, Math.min(1, B(0, n), B(0, s))), c = Math.max(0, Math.min(1, N(r, n), N(o, s))), u = Math.max(0, Math.min(1, j(r, n), j(o, s))), m = (l / 2 + u) * M.w, g = (1 - l / 2 - c) * M.w, y = (m + g) / 2, x = g - m, _ = (1 - l) * M.h, w = _ - x / E; x < A.MINZOOM ? ((p = f), T.attr("d", v), k.attr("d", "M0,0Z")) : ((p = { a: f.a + l * h, b: f.b + c * h, c: f.c + u * h, }), T.attr( "d", v + "M" + m + "," + _ + "H" + g + "L" + y + "," + w + "L" + m + "," + _ + "Z", ), k.attr( "d", "M" + r + "," + n + "m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2ZM" + m + "," + _ + C + "M" + g + "," + _ + P + "M" + y + "," + w + I, )), b || (T.transition() .style( "fill", d > 0.2 ? "rgba(0,0,0,0.4)" : "rgba(255,255,255,0.3)", ) .duration(200), k.transition().style("opacity", 1).duration(200), (b = !0)), L.emit("plotly_relayouting", R(p)); } function V() { z(L), p !== f && (a.call("_guiRelayout", L, R(p)), O && L.data && L._context.showTips && (o.notifier( l(L, "Double-click to zoom back out"), "long", ), (O = !1))); } function H(t, e) { var r = t / M.xaxis._m, n = e / M.yaxis._m, i = [ (p = { a: f.a - n, b: f.b + (r + n) / 2, c: f.c - (r - n) / 2, }).a, p.b, p.c, ].sort(o.sorterAsc), a = i.indexOf(p.a), l = i.indexOf(p.b), c = i.indexOf(p.c); i[0] < 0 && (i[1] + i[0] / 2 < 0 ? ((i[2] += i[0] + i[1]), (i[0] = i[1] = 0)) : ((i[2] += i[0] / 2), (i[1] += i[0] / 2), (i[0] = 0)), (p = { a: i[a], b: i[l], c: i[c] }), (e = (f.a - p.a) * M.yaxis._m), (t = (f.c - p.c - f.b + p.b) * M.xaxis._m)); var h = s(M.x0 + t, M.y0 + e); M.plotContainer .selectAll(".scatterlayer,.maplayer") .attr("transform", h); var d = s(-t, -e); M.clipDefRelative.select("path").attr("transform", d), (M.aaxis.range = [p.a, M.sum - p.b - p.c]), (M.baxis.range = [M.sum - p.a - p.c, p.b]), (M.caxis.range = [M.sum - p.a - p.b, p.c]), M.drawAxes(!1), M._hasClipOnAxisFalse && M.plotContainer .select(".scatterlayer") .selectAll(".trace") .call(u.hideOutsideRangePoints, M), L.emit("plotly_relayouting", R(p)); } function q() { a.call("_guiRelayout", L, R(p)); } (this.dragOptions = { element: S, gd: L, plotinfo: { id: M.id, domain: L._fullLayout[M.id].domain, xaxis: M.xaxis, yaxis: M.yaxis, }, subplot: M.id, prepFn: function (a, l, u) { (M.dragOptions.xaxes = [M.xaxis]), (M.dragOptions.yaxes = [M.yaxis]), (t = L._fullLayout._invScaleX), (e = L._fullLayout._invScaleY); var m = (M.dragOptions.dragmode = L._fullLayout.dragmode); y(m) ? (M.dragOptions.minDrag = 1) : (M.dragOptions.minDrag = void 0), "zoom" === m ? ((M.dragOptions.moveFn = U), (M.dragOptions.clickFn = F), (M.dragOptions.doneFn = V), (function (t, e, a) { var l = S.getBoundingClientRect(); (r = e - l.left), (n = a - l.top), L._fullLayout._calcInverseTransform(L); var u = L._fullLayout._invTransform, m = o.apply3DTransform(u)(r, n); (r = m[0]), (n = m[1]), (f = { a: M.aaxis.range[0], b: M.baxis.range[1], c: M.caxis.range[1], }), (p = f), (h = M.aaxis.range[1] - f.a), (d = i( M.graphDiv._fullLayout[M.id].bgcolor, ).getLuminance()), (v = "M0," + M.h + "L" + M.w / 2 + ", 0L" + M.w + "," + M.h + "Z"), (b = !1), (T = D.append("path") .attr("class", "zoombox") .attr("transform", s(M.x0, M.y0)) .style({ fill: d > 0.2 ? "rgba(0,0,0,0)" : "rgba(255,255,255,0)", "stroke-width": 0, }) .attr("d", v)), (k = D.append("path") .attr("class", "zoombox-corners") .attr("transform", s(M.x0, M.y0)) .style({ fill: c.background, stroke: c.defaultLine, "stroke-width": 1, opacity: 0, }) .attr("d", "M0,0Z")), M.clearOutline(L); })(0, l, u)) : "pan" === m ? ((M.dragOptions.moveFn = H), (M.dragOptions.clickFn = F), (M.dragOptions.doneFn = q), (f = { a: M.aaxis.range[0], b: M.baxis.range[1], c: M.caxis.range[1], }), (p = f), M.clearOutline(L)) : (x(m) || y(m)) && _(a, l, u, M.dragOptions, m); }, }), (S.onmousemove = function (t) { g.hover(L, t, M.id), (L._fullLayout._lasthover = S), (L._fullLayout._hoversubplot = M.id); }), (S.onmouseout = function (t) { L._dragging || m.unhover(L, t); }), m.init(this.dragOptions); }); }, { "../../components/color": 367, "../../components/dragelement": 386, "../../components/dragelement/helpers": 385, "../../components/drawing": 389, "../../components/fx": 407, "../../components/selections": 455, "../../components/titles": 476, "../../lib": 515, "../../lib/extend": 505, "../../registry": 647, "../cartesian/axes": 566, "../cartesian/constants": 573, "../cartesian/set_convert": 585, "../plots": 628, "@plotly/d3": 58, tinycolor2: 313, }, ], 647: [ function (t, e, r) { "use strict"; var n = t("./lib/loggers"), i = t("./lib/noop"), a = t("./lib/push_unique"), o = t("./lib/is_plain_object"), s = t("./lib/dom").addStyleRule, l = t("./lib/extend"), c = t("./plots/attributes"), u = t("./plots/layout_attributes"), f = l.extendFlat, h = l.extendDeepAll; function p(t) { var e = t.name, i = t.categories, a = t.meta; if (r.modules[e]) n.log("Type " + e + " already registered"); else { r.subplotsRegistry[t.basePlotModule.name] || (function (t) { var e = t.name; if (r.subplotsRegistry[e]) return void n.log( "Plot type " + e + " already registered.", ); for (var i in (v(t), (r.subplotsRegistry[e] = t), r.componentsRegistry)) b(i, t.name); })(t.basePlotModule); for (var o = {}, l = 0; l < i.length; l++) (o[i[l]] = !0), (r.allCategories[i[l]] = !0); for (var c in ((r.modules[e] = { _module: t, categories: o, }), a && Object.keys(a).length && (r.modules[e].meta = a), r.allTypes.push(e), r.componentsRegistry)) y(c, e); t.layoutAttributes && f(r.traceLayoutAttributes, t.layoutAttributes); var u = t.basePlotModule, h = u.name; if ("mapbox" === h) { var p = u.constants.styleRules; for (var d in p) s(".js-plotly-plot .plotly .mapboxgl-" + d, p[d]); } ("geo" !== h && "mapbox" !== h) || void 0 !== window.PlotlyGeoAssets || (window.PlotlyGeoAssets = { topojson: {} }); } } function d(t) { if ("string" != typeof t.name) throw new Error( "Component module *name* must be a string.", ); var e = t.name; for (var n in ((r.componentsRegistry[e] = t), t.layoutAttributes && (t.layoutAttributes._isLinkedToArray && a(r.layoutArrayContainers, e), v(t)), r.modules)) y(e, n); for (var i in r.subplotsRegistry) b(e, i); for (var o in r.transformsRegistry) x(e, o); t.schema && t.schema.layout && h(u, t.schema.layout); } function m(t) { if ("string" != typeof t.name) throw new Error( "Transform module *name* must be a string.", ); var e = "Transform module " + t.name, i = "function" == typeof t.transform, a = "function" == typeof t.calcTransform; if (!i && !a) throw new Error( e + " is missing a *transform* or *calcTransform* method.", ); for (var s in (i && a && n.log( [ e + " has both a *transform* and *calcTransform* methods.", "Please note that all *transform* methods are executed", "before all *calcTransform* methods.", ].join(" "), ), o(t.attributes) || n.log(e + " registered without an *attributes* object."), "function" != typeof t.supplyDefaults && n.log( e + " registered without a *supplyDefaults* method.", ), (r.transformsRegistry[t.name] = t), r.componentsRegistry)) x(s, t.name); } function g(t) { var e = t.name, n = e.split("-")[0], i = t.dictionary, a = t.format, o = i && Object.keys(i).length, s = a && Object.keys(a).length, l = r.localeRegistry, c = l[e]; if ((c || (l[e] = c = {}), n !== e)) { var u = l[n]; u || (l[n] = u = {}), o && u.dictionary === c.dictionary && (u.dictionary = i), s && u.format === c.format && (u.format = a); } o && (c.dictionary = i), s && (c.format = a); } function v(t) { if (t.layoutAttributes) { var e = t.layoutAttributes._arrayAttrRegexps; if (e) for (var n = 0; n < e.length; n++) a(r.layoutArrayRegexes, e[n]); } } function y(t, e) { var n = r.componentsRegistry[t].schema; if (n && n.traces) { var i = n.traces[e]; i && h(r.modules[e]._module.attributes, i); } } function x(t, e) { var n = r.componentsRegistry[t].schema; if (n && n.transforms) { var i = n.transforms[e]; i && h(r.transformsRegistry[e].attributes, i); } } function b(t, e) { var n = r.componentsRegistry[t].schema; if (n && n.subplots) { var i = r.subplotsRegistry[e], a = i.layoutAttributes, o = "subplot" === i.attr ? i.name : i.attr; Array.isArray(o) && (o = o[0]); var s = n.subplots[o]; a && s && h(a, s); } } function _(t) { return "object" == typeof t && (t = t.type), t; } (r.modules = {}), (r.allCategories = {}), (r.allTypes = []), (r.subplotsRegistry = {}), (r.transformsRegistry = {}), (r.componentsRegistry = {}), (r.layoutArrayContainers = []), (r.layoutArrayRegexes = []), (r.traceLayoutAttributes = {}), (r.localeRegistry = {}), (r.apiMethodRegistry = {}), (r.collectableSubplotTypes = null), (r.register = function (t) { if (((r.collectableSubplotTypes = null), !t)) throw new Error( "No argument passed to Plotly.register.", ); t && !Array.isArray(t) && (t = [t]); for (var e = 0; e < t.length; e++) { var n = t[e]; if (!n) throw new Error( "Invalid module was attempted to be registered!", ); switch (n.moduleType) { case "trace": p(n); break; case "transform": m(n); break; case "component": d(n); break; case "locale": g(n); break; case "apiMethod": var i = n.name; r.apiMethodRegistry[i] = n.fn; break; default: throw new Error( "Invalid module was attempted to be registered!", ); } } }), (r.getModule = function (t) { var e = r.modules[_(t)]; return !!e && e._module; }), (r.traceIs = function (t, e) { if ("various" === (t = _(t))) return !1; var i = r.modules[t]; return ( i || (t && n.log("Unrecognized trace type " + t + "."), (i = r.modules[c.type.dflt])), !!i.categories[e] ); }), (r.getTransformIndices = function (t, e) { for ( var r = [], n = t.transforms || [], i = 0; i < n.length; i++ ) n[i].type === e && r.push(i); return r; }), (r.hasTransform = function (t, e) { for (var r = t.transforms || [], n = 0; n < r.length; n++) if (r[n].type === e) return !0; return !1; }), (r.getComponentMethod = function (t, e) { var n = r.componentsRegistry[t]; return (n && n[e]) || i; }), (r.call = function () { var t = arguments[0], e = [].slice.call(arguments, 1); return r.apiMethodRegistry[t].apply(null, e); }); }, { "./lib/dom": 503, "./lib/extend": 505, "./lib/is_plain_object": 516, "./lib/loggers": 519, "./lib/noop": 524, "./lib/push_unique": 530, "./plots/attributes": 562, "./plots/layout_attributes": 619, }, ], 648: [ function (t, e, r) { "use strict"; var n = t("../registry"), i = t("../lib"), a = i.extendFlat, o = i.extendDeep; function s(t) { var e; switch (t) { case "themes__thumb": e = { autosize: !0, width: 150, height: 150, title: { text: "" }, showlegend: !1, margin: { l: 5, r: 5, t: 5, b: 5, pad: 0 }, annotations: [], }; break; case "thumbnail": e = { title: { text: "" }, hidesources: !0, showlegend: !1, borderwidth: 0, bordercolor: "", margin: { l: 1, r: 1, t: 1, b: 1, pad: 0 }, annotations: [], }; break; default: e = {}; } return e; } e.exports = function (t, e) { var r, i, l = t.data, c = t.layout, u = o([], l), f = o({}, c, s(e.tileClass)), h = t._context || {}; if ( (e.width && (f.width = e.width), e.height && (f.height = e.height), "thumbnail" === e.tileClass || "themes__thumb" === e.tileClass) ) { f.annotations = []; var p = Object.keys(f); for (r = 0; r < p.length; r++) (i = p[r]), ["xaxis", "yaxis", "zaxis"].indexOf(i.slice(0, 5)) > -1 && (f[p[r]].title = { text: "" }); for (r = 0; r < u.length; r++) { var d = u[r]; (d.showscale = !1), d.marker && (d.marker.showscale = !1), n.traceIs(d, "pie-like") && (d.textposition = "none"); } } if (Array.isArray(e.annotations)) for (r = 0; r < e.annotations.length; r++) f.annotations.push(e.annotations[r]); var m = Object.keys(f).filter(function (t) { return t.match(/^scene\d*$/); }); if (m.length) { var g = {}; for ( "thumbnail" === e.tileClass && (g = { title: { text: "" }, showaxeslabels: !1, showticklabels: !1, linetickenable: !1, }), r = 0; r < m.length; r++ ) { var v = f[m[r]]; v.xaxis || (v.xaxis = {}), v.yaxis || (v.yaxis = {}), v.zaxis || (v.zaxis = {}), a(v.xaxis, g), a(v.yaxis, g), a(v.zaxis, g), (v._scene = null); } } var y = document.createElement("div"); e.tileClass && (y.className = e.tileClass); var x = { gd: y, td: y, layout: f, data: u, config: { staticPlot: void 0 === e.staticPlot || e.staticPlot, plotGlPixelRatio: void 0 === e.plotGlPixelRatio ? 2 : e.plotGlPixelRatio, displaylogo: e.displaylogo || !1, showLink: e.showLink || !1, showTips: e.showTips || !1, mapboxAccessToken: h.mapboxAccessToken, }, }; return ( "transparent" !== e.setBackground && (x.config.setBackground = e.setBackground || "opaque"), (x.gd.defaultLayout = s(e.tileClass)), x ); }; }, { "../lib": 515, "../registry": 647 }, ], 649: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("../plot_api/to_image"), a = t("./filesaver"), o = t("./helpers"); e.exports = function (t, e) { var r; return ( n.isPlainObject(t) || (r = n.getGraphDiv(t)), ((e = e || {}).format = e.format || "png"), (e.width = e.width || null), (e.height = e.height || null), (e.imageDataOnly = !0), new Promise(function (s, l) { r && r._snapshotInProgress && l(new Error("Snapshotting already in progress.")), n.isIE() && "svg" !== e.format && l(new Error(o.MSG_IE_BAD_FORMAT)), r && (r._snapshotInProgress = !0); var c = i(t, e), u = e.filename || t.fn || "newplot"; (u += "." + e.format.replace("-", ".")), c .then(function (t) { return ( r && (r._snapshotInProgress = !1), a(t, u, e.format) ); }) .then(function (t) { s(t); }) .catch(function (t) { r && (r._snapshotInProgress = !1), l(t); }); }) ); }; }, { "../lib": 515, "../plot_api/to_image": 558, "./filesaver": 650, "./helpers": 651, }, ], 650: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("./helpers"); e.exports = function (t, e, r) { var a = document.createElement("a"), o = "download" in a; return new Promise(function (s, l) { var c, u; if (n.isIE()) return ( (c = i.createBlob(t, "svg")), window.navigator.msSaveBlob(c, e), (c = null), s(e) ); if (o) return ( (c = i.createBlob(t, r)), (u = i.createObjectURL(c)), (a.href = u), (a.download = e), document.body.appendChild(a), a.click(), document.body.removeChild(a), i.revokeObjectURL(u), (c = null), s(e) ); if (n.isSafari()) { var f = "svg" === r ? "," : ";base64,"; return i.octetStream(f + encodeURIComponent(t)), s(e); } l(new Error("download error")); }); }; }, { "../lib": 515, "./helpers": 651 }, ], 651: [ function (t, e, r) { "use strict"; var n = t("../registry"); (r.getDelay = function (t) { return t._has && (t._has("gl3d") || t._has("gl2d") || t._has("mapbox")) ? 500 : 0; }), (r.getRedrawFunc = function (t) { return function () { n.getComponentMethod("colorbar", "draw")(t); }; }), (r.encodeSVG = function (t) { return "data:image/svg+xml," + encodeURIComponent(t); }), (r.encodeJSON = function (t) { return "data:application/json," + encodeURIComponent(t); }); var i = window.URL || window.webkitURL; (r.createObjectURL = function (t) { return i.createObjectURL(t); }), (r.revokeObjectURL = function (t) { return i.revokeObjectURL(t); }), (r.createBlob = function (t, e) { if ("svg" === e) return new window.Blob([t], { type: "image/svg+xml;charset=utf-8", }); if ("full-json" === e) return new window.Blob([t], { type: "application/json;charset=utf-8", }); var r = (function (t) { for ( var e = t.length, r = new ArrayBuffer(e), n = new Uint8Array(r), i = 0; i < e; i++ ) n[i] = t.charCodeAt(i); return r; })(window.atob(t)); return new window.Blob([r], { type: "image/" + e }); }), (r.octetStream = function (t) { document.location.href = "data:application/octet-stream" + t; }), (r.IMAGE_URL_PREFIX = /^data:image\/\w+;base64,/), (r.MSG_IE_BAD_FORMAT = "Sorry IE does not support downloading from canvas. Try {format:'svg'} instead."); }, { "../registry": 647 }, ], 652: [ function (t, e, r) { "use strict"; var n = t("./helpers"), i = { getDelay: n.getDelay, getRedrawFunc: n.getRedrawFunc, clone: t("./cloneplot"), toSVG: t("./tosvg"), svgToImg: t("./svgtoimg"), toImage: t("./toimage"), downloadImage: t("./download"), }; e.exports = i; }, { "./cloneplot": 648, "./download": 649, "./helpers": 651, "./svgtoimg": 653, "./toimage": 654, "./tosvg": 655, }, ], 653: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("events").EventEmitter, a = t("./helpers"); e.exports = function (t) { var e = t.emitter || new i(), r = new Promise(function (i, o) { var s = window.Image, l = t.svg, c = t.format || "png"; if (n.isIE() && "svg" !== c) { var u = new Error(a.MSG_IE_BAD_FORMAT); return o(u), t.promise ? r : e.emit("error", u); } var f, h, p = t.canvas, d = t.scale || 1, m = t.width || 300, g = t.height || 150, v = d * m, y = d * g, x = p.getContext("2d", { willReadFrequently: !0 }), b = new s(); "svg" === c || n.isSafari() ? (h = a.encodeSVG(l)) : ((f = a.createBlob(l, "svg")), (h = a.createObjectURL(f))), (p.width = v), (p.height = y), (b.onload = function () { var r; switch ( ((f = null), a.revokeObjectURL(h), "svg" !== c && x.drawImage(b, 0, 0, v, y), c) ) { case "jpeg": r = p.toDataURL("image/jpeg"); break; case "png": r = p.toDataURL("image/png"); break; case "webp": r = p.toDataURL("image/webp"); break; case "svg": r = h; break; default: var n = "Image format is not jpeg, png, svg or webp."; if ((o(new Error(n)), !t.promise)) return e.emit("error", n); } i(r), t.promise || e.emit("success", r); }), (b.onerror = function (r) { if ( ((f = null), a.revokeObjectURL(h), o(r), !t.promise) ) return e.emit("error", r); }), (b.src = h); }); return t.promise ? r : e; }; }, { "../lib": 515, "./helpers": 651, events: 84 }, ], 654: [ function (t, e, r) { "use strict"; var n = t("events").EventEmitter, i = t("../registry"), a = t("../lib"), o = t("./helpers"), s = t("./cloneplot"), l = t("./tosvg"), c = t("./svgtoimg"); e.exports = function (t, e) { var r = new n(), u = s(t, { format: "png" }), f = u.gd; (f.style.position = "absolute"), (f.style.left = "-5000px"), document.body.appendChild(f); var h = o.getRedrawFunc(f); return ( i .call("_doPlot", f, u.data, u.layout, u.config) .then(h) .then(function () { var t = o.getDelay(f._fullLayout); setTimeout(function () { var t = l(f), n = document.createElement("canvas"); (n.id = a.randstr()), ((r = c({ format: e.format, width: f._fullLayout.width, height: f._fullLayout.height, canvas: n, emitter: r, svg: t, })).clean = function () { f && document.body.removeChild(f); }); }, t); }) .catch(function (t) { r.emit("error", t); }), r ); }; }, { "../lib": 515, "../registry": 647, "./cloneplot": 648, "./helpers": 651, "./svgtoimg": 653, "./tosvg": 655, events: 84, }, ], 655: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../lib"), a = t("../components/drawing"), o = t("../components/color"), s = t("../constants/xmlns_namespaces"), l = /"/g, c = new RegExp('("TOBESTRIPPED)|(TOBESTRIPPED")', "g"); e.exports = function (t, e, r) { var u, f = t._fullLayout, h = f._paper, p = f._toppaper, d = f.width, m = f.height; h.insert("rect", ":first-child") .call(a.setRect, 0, 0, d, m) .call(o.fill, f.paper_bgcolor); var g = f._basePlotModules || []; for (u = 0; u < g.length; u++) { var v = g[u]; v.toSVG && v.toSVG(t); } if (p) { var y = p.node().childNodes, x = Array.prototype.slice.call(y); for (u = 0; u < x.length; u++) { var b = x[u]; b.childNodes.length && h.node().appendChild(b); } } f._draggers && f._draggers.remove(), (h.node().style.background = ""), h .selectAll("text") .attr({ "data-unformatted": null, "data-math": null }) .each(function () { var t = n.select(this); if ( "hidden" !== this.style.visibility && "none" !== this.style.display ) { t.style({ visibility: null, display: null }); var e = this.style.fontFamily; e && -1 !== e.indexOf('"') && t.style( "font-family", e.replace(l, "TOBESTRIPPED"), ); } else t.remove(); }), h .selectAll(".gradient_filled,.pattern_filled") .each(function () { var t = n.select(this), e = this.style.fill; e && -1 !== e.indexOf("url(") && t.style("fill", e.replace(l, "TOBESTRIPPED")); var r = this.style.stroke; r && -1 !== r.indexOf("url(") && t.style("stroke", r.replace(l, "TOBESTRIPPED")); }), ("pdf" !== e && "eps" !== e) || h .selectAll("#MathJax_SVG_glyphs path") .attr("stroke-width", 0), h.node().setAttributeNS(s.xmlns, "xmlns", s.svg), h.node().setAttributeNS(s.xmlns, "xmlns:xlink", s.xlink), "svg" === e && r && (h.attr("width", r * d), h.attr("height", r * m), h.attr("viewBox", "0 0 " + d + " " + m)); var _ = new window.XMLSerializer().serializeToString( h.node(), ); return ( (_ = (function (t) { var e = n .select("body") .append("div") .style({ display: "none" }) .html(""), r = t.replace(/(&[^;]*;)/gi, function (t) { return "<" === t ? "<" : "&rt;" === t ? ">" : -1 !== t.indexOf("<") || -1 !== t.indexOf(">") ? "" : e.html(t).text(); }); return e.remove(), r; })(_)), (_ = (_ = _.replace( /&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g, "&", )).replace(c, "'")), i.isIE() && (_ = (_ = (_ = _.replace(/"/gi, "'")).replace( /(\('#)([^']*)('\))/gi, '("#$2")', )).replace(/(\\')/gi, '"')), _ ); }; }, { "../components/color": 367, "../components/drawing": 389, "../constants/xmlns_namespaces": 492, "../lib": 515, "@plotly/d3": 58, }, ], 656: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e) { for (var r = 0; r < t.length; r++) t[r].i = r; n.mergeArray(e.text, t, "tx"), n.mergeArray(e.hovertext, t, "htx"); var i = e.marker; if (i) { n.mergeArray(i.opacity, t, "mo", !0), n.mergeArray(i.color, t, "mc"); var a = i.line; a && (n.mergeArray(a.color, t, "mlc"), n.mergeArrayCastPositive(a.width, t, "mlw")); } }; }, { "../../lib": 515 }, ], 657: [ function (t, e, r) { "use strict"; var n = t("../scatter/attributes"), i = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, a = t("../../plots/template_attributes").hovertemplateAttrs, o = t("../../plots/template_attributes").texttemplateAttrs, s = t("../../components/colorscale/attributes"), l = t("../../plots/font_attributes"), c = t("./constants"), u = t("../../components/drawing/attributes").pattern, f = t("../../lib/extend").extendFlat, h = l({ editType: "calc", arrayOk: !0, colorEditType: "style", }), p = f({}, n.marker.line.width, { dflt: 0 }), d = f({ width: p, editType: "calc" }, s("marker.line")), m = f({ line: d, editType: "calc" }, s("marker"), { opacity: { valType: "number", arrayOk: !0, dflt: 1, min: 0, max: 1, editType: "style", }, pattern: u, }); e.exports = { x: n.x, x0: n.x0, dx: n.dx, y: n.y, y0: n.y0, dy: n.dy, xperiod: n.xperiod, yperiod: n.yperiod, xperiod0: n.xperiod0, yperiod0: n.yperiod0, xperiodalignment: n.xperiodalignment, yperiodalignment: n.yperiodalignment, xhoverformat: i("x"), yhoverformat: i("y"), text: n.text, texttemplate: o( { editType: "plot" }, { keys: c.eventDataKeys }, ), hovertext: n.hovertext, hovertemplate: a({}, { keys: c.eventDataKeys }), textposition: { valType: "enumerated", values: ["inside", "outside", "auto", "none"], dflt: "auto", arrayOk: !0, editType: "calc", }, insidetextanchor: { valType: "enumerated", values: ["end", "middle", "start"], dflt: "end", editType: "plot", }, textangle: { valType: "angle", dflt: "auto", editType: "plot", }, textfont: f({}, h, {}), insidetextfont: f({}, h, {}), outsidetextfont: f({}, h, {}), constraintext: { valType: "enumerated", values: ["inside", "outside", "both", "none"], dflt: "both", editType: "calc", }, cliponaxis: f({}, n.cliponaxis, {}), orientation: { valType: "enumerated", values: ["v", "h"], editType: "calc+clearAxisTypes", }, base: { valType: "any", dflt: null, arrayOk: !0, editType: "calc", }, offset: { valType: "number", dflt: null, arrayOk: !0, editType: "calc", }, width: { valType: "number", dflt: null, min: 0, arrayOk: !0, editType: "calc", }, marker: m, offsetgroup: { valType: "string", dflt: "", editType: "calc", }, alignmentgroup: { valType: "string", dflt: "", editType: "calc", }, selected: { marker: { opacity: n.selected.marker.opacity, color: n.selected.marker.color, editType: "style", }, textfont: n.selected.textfont, editType: "style", }, unselected: { marker: { opacity: n.unselected.marker.opacity, color: n.unselected.marker.color, editType: "style", }, textfont: n.unselected.textfont, editType: "style", }, _deprecated: { bardir: { valType: "enumerated", editType: "calc", values: ["v", "h"], }, }, }; }, { "../../components/colorscale/attributes": 374, "../../components/drawing/attributes": 388, "../../lib/extend": 505, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/font_attributes": 594, "../../plots/template_attributes": 642, "../scatter/attributes": 936, "./constants": 659, }, ], 658: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../../plots/cartesian/align_period"), a = t("../../components/colorscale/helpers").hasColorscale, o = t("../../components/colorscale/calc"), s = t("./arrays_to_calcdata"), l = t("../scatter/calc_selection"); e.exports = function (t, e) { var r, c, u, f, h, p, d = n.getFromId(t, e.xaxis || "x"), m = n.getFromId(t, e.yaxis || "y"), g = { msUTC: !(!e.base && 0 !== e.base) }; "h" === e.orientation ? ((r = d.makeCalcdata(e, "x", g)), (u = m.makeCalcdata(e, "y")), (f = i(e, m, "y", u)), (h = !!e.yperiodalignment), (p = "y")) : ((r = m.makeCalcdata(e, "y", g)), (u = d.makeCalcdata(e, "x")), (f = i(e, d, "x", u)), (h = !!e.xperiodalignment), (p = "x")), (c = f.vals); for ( var v = Math.min(c.length, r.length), y = new Array(v), x = 0; x < v; x++ ) (y[x] = { p: c[x], s: r[x] }), h && ((y[x].orig_p = u[x]), (y[x][p + "End"] = f.ends[x]), (y[x][p + "Start"] = f.starts[x])), e.ids && (y[x].id = String(e.ids[x])); return ( a(e, "marker") && o(t, e, { vals: e.marker.color, containerStr: "marker", cLetter: "c", }), a(e, "marker.line") && o(t, e, { vals: e.marker.line.color, containerStr: "marker.line", cLetter: "c", }), s(y, e), l(y, e), y ); }; }, { "../../components/colorscale/calc": 375, "../../components/colorscale/helpers": 378, "../../plots/cartesian/align_period": 563, "../../plots/cartesian/axes": 566, "../scatter/calc_selection": 938, "./arrays_to_calcdata": 656, }, ], 659: [ function (t, e, r) { "use strict"; e.exports = { TEXTPAD: 3, eventDataKeys: ["value", "label"] }; }, {}, ], 660: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib").isArrayOrTypedArray, a = t("../../constants/numerical").BADNUM, o = t("../../registry"), s = t("../../plots/cartesian/axes"), l = t("../../plots/cartesian/constraints").getAxisGroup, c = t("./sieve.js"); function u(t, e, r, o, u) { if (o.length) { var b, _, w, T; switch ( ((function (t, e) { var r, a; for (r = 0; r < e.length; r++) { var o, s = e[r], l = s[0].trace, c = "funnel" === l.type ? l._base : l.base, u = "h" === l.orientation ? l.xcalendar : l.ycalendar, f = "category" === t.type || "multicategory" === t.type ? function () { return null; } : t.d2c; if (i(c)) { for (a = 0; a < Math.min(c.length, s.length); a++) (o = f(c[a], 0, u)), n(o) ? ((s[a].b = +o), (s[a].hasB = 1)) : (s[a].b = 0); for (; a < s.length; a++) s[a].b = 0; } else { o = f(c, 0, u); var h = n(o); for (o = h ? o : 0, a = 0; a < s.length; a++) (s[a].b = o), h && (s[a].hasB = 1); } } })(r, o), u.mode) ) { case "overlay": f(e, r, o, u); break; case "group": for (b = [], _ = [], w = 0; w < o.length; w++) void 0 === (T = o[w])[0].trace.offset ? _.push(T) : b.push(T); _.length && (function (t, e, r, n, i) { var o = new c(n, { posAxis: e, sepNegVal: !1, overlapNoMerge: !i.norm, }); (function (t, e, r, n) { for ( var i = t._fullLayout, a = r.positions, o = r.distinctPositions, s = r.minDiff, c = r.traces, u = c.length, f = a.length !== o.length, h = s * (1 - n.gap), g = l(i, e._id) + c[0][0].trace.orientation, v = i._alignmentOpts[g] || {}, y = 0; y < u; y++ ) { var x, b, _ = c[y], w = _[0].trace, T = v[w.alignmentgroup] || {}, k = Object.keys( T.offsetGroups || {}, ).length, A = (x = k ? h / k : f ? h / u : h) * (1 - (n.groupgap || 0)); b = k ? ((2 * w._offsetIndex + 1 - k) * x - A) / 2 : f ? ((2 * y + 1 - u) * x - A) / 2 : -A / 2; var M = _[0].t; (M.barwidth = A), (M.poffset = b), (M.bargroupwidth = h), (M.bardelta = s); } (r.binWidth = c[0][0].t.barwidth / 100), p(r), d(e, r), m(e, r, f); })(t, e, o, i), (function (t, e) { for ( var r = t.traces, n = 0; n < r.length; n++ ) { var i = r[n]; if (void 0 === i[0].trace.base) for ( var o = new c([i], { posAxis: e, sepNegVal: !0, overlapNoMerge: !0, }), s = 0; s < i.length; s++ ) { var l = i[s]; if (l.p !== a) { var u = o.put(l.p, l.b + l.s); u && (l.b = u); } } } })(o, e), i.norm ? (v(o), y(r, o, i)) : g(r, o); })(t, e, r, _, u), b.length && f(e, r, b, u); break; case "stack": case "relative": for (b = [], _ = [], w = 0; w < o.length; w++) void 0 === (T = o[w])[0].trace.base ? _.push(T) : b.push(T); _.length && (function (t, e, r, n, i) { var o = new c(n, { posAxis: e, sepNegVal: "relative" === i.mode, overlapNoMerge: !( i.norm || "stack" === i.mode || "relative" === i.mode ), }); h(e, o, i), (function (t, e, r) { var n, i, o, l, c, u, f = x(t), h = e.traces; for (l = 0; l < h.length; l++) if ( ((n = h[l]), "funnel" === (i = n[0].trace).type) ) for (c = 0; c < n.length; c++) (u = n[c]).s !== a && e.put(u.p, -0.5 * u.s); for (l = 0; l < h.length; l++) { (n = h[l]), (i = n[0].trace), (o = "funnel" === i.type); var p = []; for (c = 0; c < n.length; c++) if ((u = n[c]).s !== a) { var d; d = o ? u.s : u.s + u.b; var m = e.put(u.p, d), g = m + d; (u.b = m), (u[f] = g), r.norm || (p.push(g), u.hasB && p.push(m)); } r.norm || (i._extremes[t._id] = s.findExtremes( t, p, { tozero: !0, padded: !0 }, )); } })(r, o, i); for (var l = 0; l < n.length; l++) for (var u = n[l], f = 0; f < u.length; f++) { var p = u[f]; if (p.s !== a) p.b + p.s === o.get(p.p, p.s) && (p._outmost = !0); } i.norm && y(r, o, i); })(0, e, r, _, u), b.length && f(e, r, b, u); } !(function (t, e) { var r, i, a, o = x(e), s = {}, l = 1 / 0, c = -1 / 0; for (r = 0; r < t.length; r++) for (a = t[r], i = 0; i < a.length; i++) { var u = a[i].p; n(u) && ((l = Math.min(l, u)), (c = Math.max(c, u))); } var f = 1e4 / (c - l), h = (s.round = function (t) { return String(Math.round(f * (t - l))); }); for (r = 0; r < t.length; r++) { (a = t[r])[0].t.extents = s; var p = a[0].t.poffset, d = Array.isArray(p); for (i = 0; i < a.length; i++) { var m = a[i], g = m[o] - m.w / 2; if (n(g)) { var v = m[o] + m.w / 2, y = h(m.p); s[y] ? (s[y] = [ Math.min(g, s[y][0]), Math.max(v, s[y][1]), ]) : (s[y] = [g, v]); } (m.p0 = m.p + (d ? p[i] : p)), (m.p1 = m.p0 + m.w), (m.s0 = m.b), (m.s1 = m.s0 + m.s); } } })(o, e); } } function f(t, e, r, n) { for (var i = 0; i < r.length; i++) { var a = r[i], o = new c([a], { posAxis: t, sepNegVal: !1, overlapNoMerge: !n.norm, }); h(t, o, n), n.norm ? (v(o), y(e, o, n)) : g(e, o); } } function h(t, e, r) { for ( var n = e.minDiff, i = e.traces, a = n * (1 - r.gap), o = a * (1 - (r.groupgap || 0)), s = -o / 2, l = 0; l < i.length; l++ ) { var c = i[l][0].t; (c.barwidth = o), (c.poffset = s), (c.bargroupwidth = a), (c.bardelta = n); } (e.binWidth = i[0][0].t.barwidth / 100), p(e), d(t, e), m(t, e); } function p(t) { var e, r, a = t.traces; for (e = 0; e < a.length; e++) { var o, s = a[e], l = s[0], c = l.trace, u = l.t, f = c._offset || c.offset, h = u.poffset; if (i(f)) { for ( o = Array.prototype.slice.call(f, 0, s.length), r = 0; r < o.length; r++ ) n(o[r]) || (o[r] = h); for (r = o.length; r < s.length; r++) o.push(h); u.poffset = o; } else void 0 !== f && (u.poffset = f); var p = c._width || c.width, d = u.barwidth; if (i(p)) { var m = Array.prototype.slice.call(p, 0, s.length); for (r = 0; r < m.length; r++) n(m[r]) || (m[r] = d); for (r = m.length; r < s.length; r++) m.push(d); if (((u.barwidth = m), void 0 === f)) { for (o = [], r = 0; r < s.length; r++) o.push(h + (d - m[r]) / 2); u.poffset = o; } } else void 0 !== p && ((u.barwidth = p), void 0 === f && (u.poffset = h + (d - p) / 2)); } } function d(t, e) { for (var r = e.traces, n = x(t), i = 0; i < r.length; i++) for ( var a = r[i], o = a[0].t, s = o.poffset, l = Array.isArray(s), c = o.barwidth, u = Array.isArray(c), f = 0; f < a.length; f++ ) { var h = a[f], p = (h.w = u ? c[f] : c); h[n] = h.p + (l ? s[f] : s) + p / 2; } } function m(t, e, r) { var n = e.traces, i = e.minDiff / 2; s.minDtick(t, e.minDiff, e.distinctPositions[0], r); for (var a = 0; a < n.length; a++) { var o, l, c, u, f = n[a], h = f[0], p = h.trace, d = []; for (u = 0; u < f.length; u++) (l = (o = f[u]).p - i), (c = o.p + i), d.push(l, c); if (p.width || p.offset) { var m = h.t, g = m.poffset, v = m.barwidth, y = Array.isArray(g), x = Array.isArray(v); for (u = 0; u < f.length; u++) { o = f[u]; var b = y ? g[u] : g, _ = x ? v[u] : v; (c = (l = o.p + b) + _), d.push(l, c); } } p._extremes[t._id] = s.findExtremes(t, d, { padded: !1 }); } } function g(t, e) { for (var r = e.traces, n = x(t), i = 0; i < r.length; i++) { for ( var a = r[i], o = a[0].trace, l = [], c = !1, u = 0; u < a.length; u++ ) { var f = a[u], h = f.b, p = h + f.s; (f[n] = p), l.push(p), f.hasB && l.push(h), (f.hasB && f.b) || (c = !0); } o._extremes[t._id] = s.findExtremes(t, l, { tozero: c, padded: !0, }); } } function v(t) { for (var e = t.traces, r = 0; r < e.length; r++) for (var n = e[r], i = 0; i < n.length; i++) { var o = n[i]; o.s !== a && t.put(o.p, o.b + o.s); } } function y(t, e, r) { var i = e.traces, o = x(t), l = "fraction" === r.norm ? 1 : 100, c = l / 1e9, u = t.l2c(t.c2l(0)), f = "stack" === r.mode ? l : u; function h(e) { return n(t.c2l(e)) && (e < u - c || e > f + c || !n(u)); } for (var p = 0; p < i.length; p++) { for ( var d = i[p], m = d[0].trace, g = [], v = !1, y = !1, b = 0; b < d.length; b++ ) { var _ = d[b]; if (_.s !== a) { var w = Math.abs(l / e.get(_.p, _.s)); (_.b *= w), (_.s *= w); var T = _.b, k = T + _.s; (_[o] = k), g.push(k), (y = y || h(k)), _.hasB && (g.push(T), (y = y || h(T))), (_.hasB && _.b) || (v = !0); } } m._extremes[t._id] = s.findExtremes(t, g, { tozero: v, padded: y, }); } } function x(t) { return t._id.charAt(0); } e.exports = { crossTraceCalc: function (t, e) { for ( var r = e.xaxis, n = e.yaxis, i = t._fullLayout, a = t._fullData, s = t.calcdata, l = [], c = [], f = 0; f < a.length; f++ ) { var h = a[f]; if ( !0 === h.visible && o.traceIs(h, "bar") && h.xaxis === r._id && h.yaxis === n._id && ("h" === h.orientation ? l.push(s[f]) : c.push(s[f]), h._computePh) ) for (var p = t.calcdata[f], d = 0; d < p.length; d++) "function" == typeof p[d].ph0 && (p[d].ph0 = p[d].ph0()), "function" == typeof p[d].ph1 && (p[d].ph1 = p[d].ph1()); } var m = { xCat: "category" === r.type || "multicategory" === r.type, yCat: "category" === n.type || "multicategory" === n.type, mode: i.barmode, norm: i.barnorm, gap: i.bargap, groupgap: i.bargroupgap, }; u(t, r, n, c, m), u(t, n, r, l, m); }, setGroupPositions: u, }; }, { "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/axes": 566, "../../plots/cartesian/constraints": 574, "../../registry": 647, "./sieve.js": 670, "fast-isnumeric": 190, }, ], 661: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/color"), a = t("../../registry"), o = t("../scatter/xy_defaults"), s = t("../scatter/period_defaults"), l = t("./style_defaults"), c = t("../../plots/cartesian/constraints").getAxisGroup, u = t("./attributes"), f = n.coerceFont; function h(t, e, r, n) { var i = e.orientation, a = e[{ v: "x", h: "y" }[i] + "axis"], o = c(r, a) + i, s = r._alignmentOpts || {}, l = n("alignmentgroup"), u = s[o]; u || (u = s[o] = {}); var f = u[l]; f ? f.traces.push(e) : (f = u[l] = { traces: [e], alignmentIndex: Object.keys(u).length, offsetGroups: {}, }); var h = n("offsetgroup"), p = f.offsetGroups, d = p[h]; h && (d || (d = p[h] = { offsetIndex: Object.keys(p).length }), (e._offsetIndex = d.offsetIndex)); } function p(t, e, r, i, a, o) { var s = !(!1 === (o = o || {}).moduleHasSelected), l = !(!1 === o.moduleHasUnselected), c = !(!1 === o.moduleHasConstrain), u = !(!1 === o.moduleHasCliponaxis), h = !(!1 === o.moduleHasTextangle), p = !(!1 === o.moduleHasInsideanchor), d = !!o.hasPathbar, m = Array.isArray(a) || "auto" === a, g = m || "inside" === a, v = m || "outside" === a; if (g || v) { var y = f(i, "textfont", r.font), x = n.extendFlat({}, y), b = !(t.textfont && t.textfont.color); if ((b && delete x.color, f(i, "insidetextfont", x), d)) { var _ = n.extendFlat({}, y); b && delete _.color, f(i, "pathbar.textfont", _); } v && f(i, "outsidetextfont", y), s && i("selected.textfont.color"), l && i("unselected.textfont.color"), c && i("constraintext"), u && i("cliponaxis"), h && i("textangle"), i("texttemplate"); } g && p && i("insidetextanchor"); } e.exports = { supplyDefaults: function (t, e, r, c) { function f(r, i) { return n.coerce(t, e, u, r, i); } if (o(t, e, c, f)) { s(t, e, c, f), f("xhoverformat"), f("yhoverformat"), f("orientation", e.x && !e.y ? "h" : "v"), f("base"), f("offset"), f("width"), f("text"), f("hovertext"), f("hovertemplate"); var h = f("textposition"); p(t, e, c, f, h, { moduleHasSelected: !0, moduleHasUnselected: !0, moduleHasConstrain: !0, moduleHasCliponaxis: !0, moduleHasTextangle: !0, moduleHasInsideanchor: !0, }), l(t, e, f, r, c); var d = (e.marker.line || {}).color, m = a.getComponentMethod( "errorbars", "supplyDefaults", ); m(t, e, d || i.defaultLine, { axis: "y" }), m(t, e, d || i.defaultLine, { axis: "x", inherit: "y", }), n.coerceSelectionMarkerOpacity(e, f); } else e.visible = !1; }, crossTraceDefaults: function (t, e) { var r; function i(t) { return n.coerce(r._input, r, u, t); } if ("group" === e.barmode) for (var a = 0; a < t.length; a++) "bar" === (r = t[a]).type && (r._input, h(0, r, e, i)); }, handleGroupingDefaults: h, handleText: p, }; }, { "../../components/color": 367, "../../lib": 515, "../../plots/cartesian/constraints": 574, "../../registry": 647, "../scatter/period_defaults": 956, "../scatter/xy_defaults": 963, "./attributes": 657, "./style_defaults": 672, }, ], 662: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { return ( (t.x = "xVal" in e ? e.xVal : e.x), (t.y = "yVal" in e ? e.yVal : e.y), e.xa && (t.xaxis = e.xa), e.ya && (t.yaxis = e.ya), "h" === r.orientation ? ((t.label = t.y), (t.value = t.x)) : ((t.label = t.x), (t.value = t.y)), t ); }; }, {}, ], 663: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("tinycolor2"), a = t("../../lib").isArrayOrTypedArray; (r.coerceString = function (t, e, r) { if ("string" == typeof e) { if (e || !t.noBlank) return e; } else if (("number" == typeof e || !0 === e) && !t.strict) return String(e); return void 0 !== r ? r : t.dflt; }), (r.coerceNumber = function (t, e, r) { if (n(e)) { e = +e; var i = t.min, a = t.max; if ( !((void 0 !== i && e < i) || (void 0 !== a && e > a)) ) return e; } return void 0 !== r ? r : t.dflt; }), (r.coerceColor = function (t, e, r) { return i(e).isValid() ? e : void 0 !== r ? r : t.dflt; }), (r.coerceEnumerated = function (t, e, r) { return ( t.coerceNumber && (e = +e), -1 !== t.values.indexOf(e) ? e : void 0 !== r ? r : t.dflt ); }), (r.getValue = function (t, e) { var r; return ( Array.isArray(t) ? e < t.length && (r = t[e]) : (r = t), r ); }), (r.getLineWidth = function (t, e) { return 0 < e.mlw ? e.mlw : a(t.marker.line.width) ? 0 : t.marker.line.width; }); }, { "../../lib": 515, "fast-isnumeric": 190, tinycolor2: 313 }, ], 664: [ function (t, e, r) { "use strict"; var n = t("../../components/fx"), i = t("../../registry"), a = t("../../components/color"), o = t("../../lib").fillText, s = t("./helpers").getLineWidth, l = t("../../plots/cartesian/axes").hoverLabelText, c = t("../../constants/numerical").BADNUM; function u(t, e, r, i, a) { var s, u, f, h, p, d, m, g = t.cd, v = g[0].trace, y = g[0].t, x = "closest" === i, b = "waterfall" === v.type, _ = t.maxHoverDistance, w = t.maxSpikeDistance; "h" === v.orientation ? ((s = r), (u = e), (f = "y"), (h = "x"), (p = z), (d = I)) : ((s = e), (u = r), (f = "x"), (h = "y"), (d = z), (p = I)); var T = v[f + "period"], k = x || T; function A(t) { return S(t, -1); } function M(t) { return S(t, 1); } function S(t, e) { var r = t.w; return t[f] + (e * r) / 2; } function E(t) { return t[f + "End"] - t[f + "Start"]; } var L = x ? A : T ? function (t) { return t.p - E(t) / 2; } : function (t) { return Math.min(A(t), t.p - y.bardelta / 2); }, C = x ? M : T ? function (t) { return t.p + E(t) / 2; } : function (t) { return Math.max(M(t), t.p + y.bardelta / 2); }; function P(t, e, r) { return ( a.finiteRange && (r = 0), n.inbox( t - s, e - s, r + Math.min(1, Math.abs(e - t) / m) - 1, ) ); } function I(t) { return P(L(t), C(t), _); } function O(t) { var e = t[h]; if (b) { var r = Math.abs(t.rawS) || 0; u > 0 ? (e += r) : u < 0 && (e -= r); } return e; } function z(t) { var e = u, r = t.b, i = O(t); return n.inbox(r - e, i - e, _ + (i - e) / (i - r) - 1); } var D = t[f + "a"], R = t[h + "a"]; m = Math.abs(D.r2c(D.range[1]) - D.r2c(D.range[0])); var F = n.getDistanceFunction(i, p, d, function (t) { return (p(t) + d(t)) / 2; }); if ( (n.getClosest(g, F, t), !1 !== t.index && g[t.index].p !== c) ) { k || ((L = function (t) { return Math.min(A(t), t.p - y.bargroupwidth / 2); }), (C = function (t) { return Math.max(M(t), t.p + y.bargroupwidth / 2); })); var B = g[t.index], N = v.base ? B.b + B.s : B.s; (t[h + "0"] = t[h + "1"] = R.c2p(B[h], !0)), (t[h + "LabelVal"] = N); var j = y.extents[y.extents.round(B.p)]; (t[f + "0"] = D.c2p(x ? L(B) : j[0], !0)), (t[f + "1"] = D.c2p(x ? C(B) : j[1], !0)); var U = void 0 !== B.orig_p; return ( (t[f + "LabelVal"] = U ? B.orig_p : B.p), (t.labelLabel = l( D, t[f + "LabelVal"], v[f + "hoverformat"], )), (t.valueLabel = l( R, t[h + "LabelVal"], v[h + "hoverformat"], )), (t.baseLabel = l(R, B.b, v[h + "hoverformat"])), (t.spikeDistance = ((function (t) { var e = u, r = t.b, i = O(t); return n.inbox( r - e, i - e, w + (i - e) / (i - r) - 1, ); })(B) + (function (t) { return P(A(t), M(t), w); })(B)) / 2), (t[f + "Spike"] = D.c2p(B.p, !0)), o(B, v, t), (t.hovertemplate = v.hovertemplate), t ); } } function f(t, e) { var r = e.mcc || t.marker.color, n = e.mlcc || t.marker.line.color, i = s(t, e); return a.opacity(r) ? r : a.opacity(n) && i ? n : void 0; } e.exports = { hoverPoints: function (t, e, r, n, a) { var o = u(t, e, r, n, a); if (o) { var s = o.cd, l = s[0].trace, c = s[o.index]; return ( (o.color = f(l, c)), i.getComponentMethod("errorbars", "hoverInfo")( c, l, o, ), [o] ); } }, hoverOnBars: u, getTraceColor: f, }; }, { "../../components/color": 367, "../../components/fx": 407, "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/axes": 566, "../../registry": 647, "./helpers": 663, }, ], 665: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyDefaults: t("./defaults").supplyDefaults, crossTraceDefaults: t("./defaults").crossTraceDefaults, supplyLayoutDefaults: t("./layout_defaults"), calc: t("./calc"), crossTraceCalc: t("./cross_trace_calc").crossTraceCalc, colorbar: t("../scatter/marker_colorbar"), arraysToCalcdata: t("./arrays_to_calcdata"), plot: t("./plot").plot, style: t("./style").style, styleOnSelect: t("./style").styleOnSelect, hoverPoints: t("./hover").hoverPoints, eventData: t("./event_data"), selectPoints: t("./select"), moduleType: "trace", name: "bar", basePlotModule: t("../../plots/cartesian"), categories: [ "bar-like", "cartesian", "svg", "bar", "oriented", "errorBarsOK", "showLegend", "zoomScale", ], animatable: !0, meta: {}, }; }, { "../../plots/cartesian": 578, "../scatter/marker_colorbar": 954, "./arrays_to_calcdata": 656, "./attributes": 657, "./calc": 658, "./cross_trace_calc": 660, "./defaults": 661, "./event_data": 662, "./hover": 664, "./layout_attributes": 666, "./layout_defaults": 667, "./plot": 668, "./select": 669, "./style": 671, }, ], 666: [ function (t, e, r) { "use strict"; e.exports = { barmode: { valType: "enumerated", values: ["stack", "group", "overlay", "relative"], dflt: "group", editType: "calc", }, barnorm: { valType: "enumerated", values: ["", "fraction", "percent"], dflt: "", editType: "calc", }, bargap: { valType: "number", min: 0, max: 1, editType: "calc", }, bargroupgap: { valType: "number", min: 0, max: 1, dflt: 0, editType: "calc", }, }; }, {}, ], 667: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../plots/cartesian/axes"), a = t("../../lib"), o = t("./layout_attributes"); e.exports = function (t, e, r) { function s(r, n) { return a.coerce(t, e, o, r, n); } for ( var l = !1, c = !1, u = !1, f = {}, h = s("barmode"), p = 0; p < r.length; p++ ) { var d = r[p]; if (n.traceIs(d, "bar") && d.visible) { if (((l = !0), "group" === h)) { var m = d.xaxis + d.yaxis; f[m] && (u = !0), (f[m] = !0); } if (d.visible && "histogram" === d.type) "category" !== i.getFromId( { _fullLayout: e }, d["v" === d.orientation ? "xaxis" : "yaxis"], ).type && (c = !0); } } l ? ("overlay" !== h && s("barnorm"), s("bargap", c && !u ? 0 : 0.2), s("bargroupgap")) : delete e.barmode; }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "../../registry": 647, "./layout_attributes": 666, }, ], 668: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("fast-isnumeric"), a = t("../../lib"), o = t("../../lib/svg_text_utils"), s = t("../../components/color"), l = t("../../components/drawing"), c = t("../../registry"), u = t("../../plots/cartesian/axes").tickText, f = t("./uniform_text"), h = f.recordMinTextSize, p = f.clearMinTextSize, d = t("./style"), m = t("./helpers"), g = t("./constants"), v = t("./attributes"), y = v.text, x = v.textposition, b = t("../../components/fx/helpers").appendArrayPointValue, _ = g.TEXTPAD; function w(t) { return t.id; } function T(t) { if (t.ids) return w; } function k(t, e) { return t < e ? 1 : -1; } function A(t, e, r, n) { var i; return !e.uniformtext.mode && M(r) ? (n && (i = n()), t .transition() .duration(r.duration) .ease(r.easing) .each("end", function () { i && i(); }) .each("interrupt", function () { i && i(); })) : t; } function M(t) { return t && t.duration > 0; } function S(t) { return "auto" === t ? 0 : t; } function E(t, e) { var r = (Math.PI / 180) * e, n = Math.abs(Math.sin(r)), i = Math.abs(Math.cos(r)); return { x: t.width * i + t.height * n, y: t.width * n + t.height * i, }; } function L(t, e, r, n, i, a) { var o = !!a.isHorizontal, s = !!a.constrained, l = a.angle || 0, c = a.anchor || "end", u = "end" === c, f = "start" === c, h = ((a.leftToRight || 0) + 1) / 2, p = 1 - h, d = i.width, m = i.height, g = Math.abs(e - t), v = Math.abs(n - r), y = g > 2 * _ && v > 2 * _ ? _ : 0; (g -= 2 * y), (v -= 2 * y); var x = S(l); "auto" !== l || (d <= g && m <= v) || !(d > g || m > v) || ((d > v || m > g) && d < m == g < v) || (x += 90); var b = E(i, x), w = 1; s && (w = Math.min(1, g / b.x, v / b.y)); var T = i.left * p + i.right * h, A = (i.top + i.bottom) / 2, M = (t + _) * p + (e - _) * h, L = (r + n) / 2, C = 0, P = 0; if (f || u) { var I = (o ? b.x : b.y) / 2, O = o ? k(t, e) : k(r, n); o ? f ? ((M = t + O * y), (C = -O * I)) : ((M = e - O * y), (C = O * I)) : f ? ((L = r + O * y), (P = -O * I)) : ((L = n - O * y), (P = O * I)); } return { textX: T, textY: A, targetX: M, targetY: L, anchorX: C, anchorY: P, scale: w, rotate: x, }; } e.exports = { plot: function (t, e, r, f, g, v) { var w = e.xaxis, C = e.yaxis, P = t._fullLayout; g || ((g = { mode: P.barmode, norm: P.barmode, gap: P.bargap, groupgap: P.bargroupgap, }), p("bar", P)); var I = a .makeTraceGroups(f, r, "trace bars") .each(function (r) { var c = n.select(this), f = r[0].trace, p = "waterfall" === f.type, I = "funnel" === f.type, O = "bar" === f.type || I, z = 0; p && f.connector.visible && "between" === f.connector.mode && (z = f.connector.line.width / 2); var D = "h" === f.orientation, R = M(g), F = a.ensureSingle(c, "g", "points"), B = T(f), N = F.selectAll("g.point").data(a.identity, B); N.enter().append("g").classed("point", !0), N.exit().remove(), N.each(function (c, p) { var T, M, I = n.select(this), F = (function (t, e, r, n) { var i = [], a = [], o = n ? e : r, s = n ? r : e; return ( (i[0] = o.c2p(t.s0, !0)), (a[0] = s.c2p(t.p0, !0)), (i[1] = o.c2p(t.s1, !0)), (a[1] = s.c2p(t.p1, !0)), n ? [i, a] : [a, i] ); })(c, w, C, D), B = F[0][0], N = F[0][1], j = F[1][0], U = F[1][1], V = 0 == (D ? N - B : U - j); if ( (V && O && m.getLineWidth(f, c) && (V = !1), V || (V = !(i(B) && i(N) && i(j) && i(U))), (c.isBlank = V), V && (D ? (N = B) : (U = j)), z && !V && (D ? ((B -= k(B, N) * z), (N += k(B, N) * z)) : ((j -= k(j, U) * z), (U += k(j, U) * z))), "waterfall" === f.type) ) { if (!V) { var H = f[c.dir].marker; (T = H.line.width), (M = H.color); } } else (T = m.getLineWidth(f, c)), (M = c.mc || f.marker.color); function q(t) { var e = n.round((T / 2) % 1, 2); return 0 === g.gap && 0 === g.groupgap ? n.round(Math.round(t) - e, 2) : t; } if (!t._context.staticPlot) { var G = s.opacity(M) < 1 || T > 0.01 ? q : function (t, e, r) { return r && t === e ? t : Math.abs(t - e) >= 2 ? q(t) : t > e ? Math.ceil(t) : Math.floor(t); }; (B = G(B, N, D)), (N = G(N, B, D)), (j = G(j, U, !D)), (U = G(U, j, !D)); } var Y = A(a.ensureSingle(I, "path"), P, g, v); if ( (Y.style("vector-effect", "non-scaling-stroke") .attr( "d", isNaN((N - B) * (U - j)) || (V && t._context.staticPlot) ? "M0,0Z" : "M" + B + "," + j + "V" + U + "H" + N + "V" + j + "Z", ) .call(l.setClipUrl, e.layerClipId, t), !P.uniformtext.mode && R) ) { var W = l.makePointStyleFns(f); l.singlePointStyle(c, Y, f, W, t); } !(function (t, e, r, n, i, s, c, f, p, g, v) { var w, T = e.xaxis, M = e.yaxis, C = t._fullLayout; function P(e, r, n) { return a .ensureSingle(e, "text") .text(r) .attr({ class: "bartext bartext-" + w, "text-anchor": "middle", "data-notex": 1, }) .call(l.font, n) .call(o.convertToTspans, t); } var I = n[0].trace, O = "h" === I.orientation, z = (function (t, e, r, n, i) { var o, s = e[0].trace; o = s.texttemplate ? (function (t, e, r, n, i) { var o = e[0].trace, s = a.castOption( o, r, "texttemplate", ); if (!s) return ""; var l, c, f, h, p = "histogram" === o.type, d = "waterfall" === o.type, m = "funnel" === o.type, g = "h" === o.orientation; g ? ((l = "y"), (c = i), (f = "x"), (h = n)) : ((l = "x"), (c = n), (f = "y"), (h = i)); function v(t) { return u(h, h.c2l(t), !0).text; } var y = e[r], x = {}; (x.label = y.p), (x.labelLabel = x[l + "Label"] = ((_ = y.p), u(c, c.c2l(_), !0).text)); var _; var w = a.castOption(o, y.i, "text"); (0 === w || w) && (x.text = w); (x.value = y.s), (x.valueLabel = x[f + "Label"] = v(y.s)); var T = {}; b(T, o, y.i), (p || void 0 === T.x) && (T.x = g ? x.value : x.label); (p || void 0 === T.y) && (T.y = g ? x.label : x.value); (p || void 0 === T.xLabel) && (T.xLabel = g ? x.valueLabel : x.labelLabel); (p || void 0 === T.yLabel) && (T.yLabel = g ? x.labelLabel : x.valueLabel); d && ((x.delta = +y.rawS || y.s), (x.deltaLabel = v(x.delta)), (x.final = y.v), (x.finalLabel = v(x.final)), (x.initial = x.final - x.delta), (x.initialLabel = v(x.initial))); m && ((x.value = y.s), (x.valueLabel = v(x.value)), (x.percentInitial = y.begR), (x.percentInitialLabel = a.formatPercent(y.begR)), (x.percentPrevious = y.difR), (x.percentPreviousLabel = a.formatPercent(y.difR)), (x.percentTotal = y.sumR), (x.percenTotalLabel = a.formatPercent(y.sumR))); var k = a.castOption( o, y.i, "customdata", ); k && (x.customdata = k); return a.texttemplateString( s, x, t._d3locale, T, x, o._meta || {}, ); })(t, e, r, n, i) : s.textinfo ? (function (t, e, r, n) { var i = t[0].trace, o = "h" === i.orientation, s = "waterfall" === i.type, l = "funnel" === i.type; function c(t) { return u(o ? r : n, +t, !0).text; } var f, h = i.textinfo, p = t[e], d = h.split("+"), m = [], g = function (t) { return -1 !== d.indexOf(t); }; g("label") && m.push( ((v = t[e].p), u(o ? n : r, v, !0).text), ); var v; g("text") && (0 === (f = a.castOption( i, p.i, "text", )) || f) && m.push(f); if (s) { var y = +p.rawS || p.s, x = p.v, b = x - y; g("initial") && m.push(c(b)), g("delta") && m.push(c(y)), g("final") && m.push(c(x)); } if (l) { g("value") && m.push(c(p.s)); var _ = 0; g("percent initial") && _++, g("percent previous") && _++, g("percent total") && _++; var w = _ > 1; g("percent initial") && ((f = a.formatPercent(p.begR)), w && (f += " of initial"), m.push(f)), g("percent previous") && ((f = a.formatPercent( p.difR, )), w && (f += " of previous"), m.push(f)), g("percent total") && ((f = a.formatPercent( p.sumR, )), w && (f += " of total"), m.push(f)); } return m.join("
"); })(e, r, n, i) : m.getValue(s.text, r); return m.coerceString(y, o); })(C, n, i, T, M); w = (function (t, e) { var r = m.getValue(t.textposition, e); return m.coerceEnumerated(x, r); })(I, i); var D = "stack" === g.mode || "relative" === g.mode, R = n[i], F = !D || R._outmost; if ( !z || "none" === w || ((R.isBlank || s === c || f === p) && ("auto" === w || "inside" === w)) ) return void r.select("text").remove(); var B = C.font, N = d.getBarColor(n[i], I), j = d.getInsideTextFont(I, i, B, N), U = d.getOutsideTextFont(I, i, B), V = r.datum(); O ? "log" === T.type && V.s0 <= 0 && (s = T.range[0] < T.range[1] ? 0 : T._length) : "log" === M.type && V.s0 <= 0 && (f = M.range[0] < M.range[1] ? M._length : 0); var H, q, G, Y, W, Z = Math.abs(c - s) - 2 * _, X = Math.abs(p - f) - 2 * _; "outside" === w && (F || R.hasB || (w = "inside")); if ("auto" === w) if (F) { (w = "inside"), (W = a.ensureUniformFontSize(t, j)), (H = P(r, z, W)), (q = l.bBox(H.node())), (G = q.width), (Y = q.height); var J = G <= Z && Y <= X, K = G <= X && Y <= Z, Q = O ? Z >= G * (X / Y) : X >= Y * (Z / G); G > 0 && Y > 0 && (J || K || Q) ? (w = "inside") : ((w = "outside"), H.remove(), (H = null)); } else w = "inside"; if (!H) { W = a.ensureUniformFontSize( t, "outside" === w ? U : j, ); var $ = (H = P(r, z, W)).attr("transform"); if ( (H.attr("transform", ""), (q = l.bBox(H.node())), (G = q.width), (Y = q.height), H.attr("transform", $), G <= 0 || Y <= 0) ) return void H.remove(); } var tt, et, rt = I.textangle; "outside" === w ? ((et = "both" === I.constraintext || "outside" === I.constraintext), (tt = (function (t, e, r, n, i, a) { var o, s = !!a.isHorizontal, l = !!a.constrained, c = a.angle || 0, u = i.width, f = i.height, h = Math.abs(e - t), p = Math.abs(n - r); o = s ? p > 2 * _ ? _ : 0 : h > 2 * _ ? _ : 0; var d = 1; l && (d = s ? Math.min(1, p / f) : Math.min(1, h / u)); var m = S(c), g = E(i, m), v = (s ? g.x : g.y) / 2, y = (i.left + i.right) / 2, x = (i.top + i.bottom) / 2, b = (t + e) / 2, w = (r + n) / 2, T = 0, A = 0, M = s ? k(e, t) : k(r, n); s ? ((b = e - M * o), (T = M * v)) : ((w = n + M * o), (A = -M * v)); return { textX: y, textY: x, targetX: b, targetY: w, anchorX: T, anchorY: A, scale: d, rotate: m, }; })(s, c, f, p, q, { isHorizontal: O, constrained: et, angle: rt, }))) : ((et = "both" === I.constraintext || "inside" === I.constraintext), (tt = L(s, c, f, p, q, { isHorizontal: O, constrained: et, angle: rt, anchor: I.insidetextanchor, }))); (tt.fontSize = W.size), h( "histogram" === I.type ? "bar" : I.type, tt, C, ), (R.transform = tt); var nt = A(H, C, g, v); a.setTransormAndDisplay(nt, tt); })(t, e, I, r, p, B, N, j, U, g, v), e.layerClipId && l.hideOutsideRangePoint( c, I.select("text"), w, C, f.xcalendar, f.ycalendar, ); }); var j = !1 === f.cliponaxis; l.setClipUrl(c, j ? null : e.layerClipId, t); }); c.getComponentMethod("errorbars", "plot")(t, I, e, g); }, toMoveInsideBar: L, }; }, { "../../components/color": 367, "../../components/drawing": 389, "../../components/fx/helpers": 403, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plots/cartesian/axes": 566, "../../registry": 647, "./attributes": 657, "./constants": 659, "./helpers": 663, "./style": 671, "./uniform_text": 673, "@plotly/d3": 58, "fast-isnumeric": 190, }, ], 669: [ function (t, e, r) { "use strict"; function n(t, e, r, n, i) { var a = e.c2p(n ? t.s0 : t.p0, !0), o = e.c2p(n ? t.s1 : t.p1, !0), s = r.c2p(n ? t.p0 : t.s0, !0), l = r.c2p(n ? t.p1 : t.s1, !0); return i ? [(a + o) / 2, (s + l) / 2] : n ? [o, (s + l) / 2] : [(a + o) / 2, l]; } e.exports = function (t, e) { var r, i = t.cd, a = t.xaxis, o = t.yaxis, s = i[0].trace, l = "funnel" === s.type, c = "h" === s.orientation, u = []; if (!1 === e) for (r = 0; r < i.length; r++) i[r].selected = 0; else for (r = 0; r < i.length; r++) { var f = i[r], h = "ct" in f ? f.ct : n(f, a, o, c, l); e.contains(h, !1, r, t) ? (u.push({ pointNumber: r, x: a.c2d(f.x), y: o.c2d(f.y), }), (f.selected = 1)) : (f.selected = 0); } return u; }; }, {}, ], 670: [ function (t, e, r) { "use strict"; e.exports = a; var n = t("../../lib").distinctVals, i = t("../../constants/numerical").BADNUM; function a(t, e) { (this.traces = t), (this.sepNegVal = e.sepNegVal), (this.overlapNoMerge = e.overlapNoMerge); for (var r = 1 / 0, a = [], o = 0; o < t.length; o++) { for (var s = t[o], l = 0; l < s.length; l++) { var c = s[l]; c.p !== i && a.push(c.p); } s[0] && s[0].width1 && (r = Math.min(s[0].width1, r)); } this.positions = a; var u = n(a); (this.distinctPositions = u.vals), 1 === u.vals.length && r !== 1 / 0 ? (this.minDiff = r) : (this.minDiff = Math.min(u.minDiff, r)); var f = (e.posAxis || {}).type; ("category" !== f && "multicategory" !== f) || (this.minDiff = 1), (this.binWidth = this.minDiff), (this.bins = {}); } (a.prototype.put = function (t, e) { var r = this.getLabel(t, e), n = this.bins[r] || 0; return (this.bins[r] = n + e), n; }), (a.prototype.get = function (t, e) { var r = this.getLabel(t, e); return this.bins[r] || 0; }), (a.prototype.getLabel = function (t, e) { return ( (e < 0 && this.sepNegVal ? "v" : "^") + (this.overlapNoMerge ? t : Math.round(t / this.binWidth)) ); }); }, { "../../constants/numerical": 491, "../../lib": 515 }, ], 671: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/color"), a = t("../../components/drawing"), o = t("../../lib"), s = t("../../registry"), l = t("./uniform_text").resizeText, c = t("./attributes"), u = c.textfont, f = c.insidetextfont, h = c.outsidetextfont, p = t("./helpers"); function d(t, e, r) { a.pointStyle(t.selectAll("path"), e, r), m(t, e, r); } function m(t, e, r) { t.selectAll("text").each(function (t) { var i = n.select(this), s = o.ensureUniformFontSize(r, g(i, t, e, r)); a.font(i, s); }); } function g(t, e, r, n) { var i = n._fullLayout.font, a = r.textfont; if (t.classed("bartext-inside")) { var o = _(e, r); a = y(r, e.i, i, o); } else t.classed("bartext-outside") && (a = x(r, e.i, i)); return a; } function v(t, e, r) { return b(u, t.textfont, e, r); } function y(t, e, r, n) { var a = v(t, e, r); return ( (void 0 === t._input.textfont || void 0 === t._input.textfont.color || (Array.isArray(t.textfont.color) && void 0 === t.textfont.color[e])) && (a = { color: i.contrast(n), family: a.family, size: a.size, }), b(f, t.insidetextfont, e, a) ); } function x(t, e, r) { var n = v(t, e, r); return b(h, t.outsidetextfont, e, n); } function b(t, e, r, n) { e = e || {}; var i = p.getValue(e.family, r), a = p.getValue(e.size, r), o = p.getValue(e.color, r); return { family: p.coerceString(t.family, i, n.family), size: p.coerceNumber(t.size, a, n.size), color: p.coerceColor(t.color, o, n.color), }; } function _(t, e) { return "waterfall" === e.type ? e[t.dir].marker.color : t.mcc || t.mc || e.marker.color; } e.exports = { style: function (t) { var e = n .select(t) .selectAll("g.barlayer") .selectAll("g.trace"); l(t, e, "bar"); var r = e.size(), i = t._fullLayout; e .style("opacity", function (t) { return t[0].trace.opacity; }) .each(function (t) { (("stack" === i.barmode && r > 1) || (0 === i.bargap && 0 === i.bargroupgap && !t[0].trace.marker.line.width)) && n .select(this) .attr("shape-rendering", "crispEdges"); }), e.selectAll("g.points").each(function (e) { d(n.select(this), e[0].trace, t); }), s.getComponentMethod("errorbars", "style")(e); }, styleTextPoints: m, styleOnSelect: function (t, e, r) { var i = e[0].trace; i.selectedpoints ? (function (t, e, r) { a.selectedPointStyle(t.selectAll("path"), e), (function (t, e, r) { t.each(function (t) { var i, s = n.select(this); if (t.selected) { i = o.ensureUniformFontSize( r, g(s, t, e, r), ); var l = e.selected.textfont && e.selected.textfont.color; l && (i.color = l), a.font(s, i); } else a.selectedTextStyle(s, e); }); })(t.selectAll("text"), e, r); })(r, i, t) : (d(r, i, t), s.getComponentMethod("errorbars", "style")(r)); }, getInsideTextFont: y, getOutsideTextFont: x, getBarColor: _, resizeText: l, }; }, { "../../components/color": 367, "../../components/drawing": 389, "../../lib": 515, "../../registry": 647, "./attributes": 657, "./helpers": 663, "./uniform_text": 673, "@plotly/d3": 58, }, ], 672: [ function (t, e, r) { "use strict"; var n = t("../../components/color"), i = t("../../components/colorscale/helpers").hasColorscale, a = t("../../components/colorscale/defaults"), o = t("../../lib").coercePattern; e.exports = function (t, e, r, s, l) { var c = r("marker.color", s), u = i(t, "marker"); u && a(t, e, l, r, { prefix: "marker.", cLetter: "c" }), r("marker.line.color", n.defaultLine), i(t, "marker.line") && a(t, e, l, r, { prefix: "marker.line.", cLetter: "c" }), r("marker.line.width"), r("marker.opacity"), o(r, "marker.pattern", c, u), r("selected.marker.color"), r("unselected.marker.color"); }; }, { "../../components/color": 367, "../../components/colorscale/defaults": 377, "../../components/colorscale/helpers": 378, "../../lib": 515, }, ], 673: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"); function a(t) { return "_" + t + "Text_minsize"; } e.exports = { recordMinTextSize: function (t, e, r) { if (r.uniformtext.mode) { var n = a(t), i = r.uniformtext.minsize, o = e.scale * e.fontSize; (e.hide = o < i), (r[n] = r[n] || 1 / 0), e.hide || (r[n] = Math.min(r[n], Math.max(o, i))); } }, clearMinTextSize: function (t, e) { e[a(t)] = void 0; }, resizeText: function (t, e, r) { var a = t._fullLayout, o = a["_" + r + "Text_minsize"]; if (o) { var s, l = "hide" === a.uniformtext.mode; switch (r) { case "funnelarea": case "pie": case "sunburst": s = "g.slice"; break; case "treemap": case "icicle": s = "g.slice, g.pathbar"; break; default: s = "g.points > g.point"; } e.selectAll(s).each(function (t) { var e = t.transform; if (e) { e.scale = l && e.hide ? 0 : o / e.fontSize; var r = n.select(this).select("text"); i.setTransormAndDisplay(r, e); } }); } }, }; }, { "../../lib": 515, "@plotly/d3": 58 }, ], 674: [ function (t, e, r) { "use strict"; var n = t( "../../plots/template_attributes", ).hovertemplateAttrs, i = t("../../lib/extend").extendFlat, a = t("../scatterpolar/attributes"), o = t("../bar/attributes"); e.exports = { r: a.r, theta: a.theta, r0: a.r0, dr: a.dr, theta0: a.theta0, dtheta: a.dtheta, thetaunit: a.thetaunit, base: i({}, o.base, {}), offset: i({}, o.offset, {}), width: i({}, o.width, {}), text: i({}, o.text, {}), hovertext: i({}, o.hovertext, {}), marker: o.marker, hoverinfo: a.hoverinfo, hovertemplate: n(), selected: o.selected, unselected: o.unselected, }; }, { "../../lib/extend": 505, "../../plots/template_attributes": 642, "../bar/attributes": 657, "../scatterpolar/attributes": 1011, }, ], 675: [ function (t, e, r) { "use strict"; var n = t( "../../components/colorscale/helpers", ).hasColorscale, i = t("../../components/colorscale/calc"), a = t("../bar/arrays_to_calcdata"), o = t("../bar/cross_trace_calc").setGroupPositions, s = t("../scatter/calc_selection"), l = t("../../registry").traceIs, c = t("../../lib").extendFlat; e.exports = { calc: function (t, e) { for ( var r = t._fullLayout, o = e.subplot, l = r[o].radialaxis, c = r[o].angularaxis, u = l.makeCalcdata(e, "r"), f = c.makeCalcdata(e, "theta"), h = e._length, p = new Array(h), d = u, m = f, g = 0; g < h; g++ ) p[g] = { p: m[g], s: d[g] }; function v(t) { var r = e[t]; void 0 !== r && (e["_" + t] = Array.isArray(r) ? c.makeCalcdata(e, t) : c.d2c(r, e.thetaunit)); } return ( "linear" === c.type && (v("width"), v("offset")), n(e, "marker") && i(t, e, { vals: e.marker.color, containerStr: "marker", cLetter: "c", }), n(e, "marker.line") && i(t, e, { vals: e.marker.line.color, containerStr: "marker.line", cLetter: "c", }), a(p, e), s(p, e), p ); }, crossTraceCalc: function (t, e, r) { for ( var n = t.calcdata, i = [], a = 0; a < n.length; a++ ) { var s = n[a], u = s[0].trace; !0 === u.visible && l(u, "bar") && u.subplot === r && i.push(s); } var f = c({}, e.radialaxis, { _id: "x" }), h = e.angularaxis; o(t, h, f, i, { mode: e.barmode, norm: e.barnorm, gap: e.bargap, groupgap: e.bargroupgap, }); }, }; }, { "../../components/colorscale/calc": 375, "../../components/colorscale/helpers": 378, "../../lib": 515, "../../registry": 647, "../bar/arrays_to_calcdata": 656, "../bar/cross_trace_calc": 660, "../scatter/calc_selection": 938, }, ], 676: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../scatterpolar/defaults").handleRThetaDefaults, a = t("../bar/style_defaults"), o = t("./attributes"); e.exports = function (t, e, r, s) { function l(r, i) { return n.coerce(t, e, o, r, i); } i(t, e, s, l) ? (l("thetaunit"), l("base"), l("offset"), l("width"), l("text"), l("hovertext"), l("hovertemplate"), a(t, e, l, r, s), n.coerceSelectionMarkerOpacity(e, l)) : (e.visible = !1); }; }, { "../../lib": 515, "../bar/style_defaults": 672, "../scatterpolar/defaults": 1013, "./attributes": 674, }, ], 677: [ function (t, e, r) { "use strict"; var n = t("../../components/fx"), i = t("../../lib"), a = t("../bar/hover").getTraceColor, o = i.fillText, s = t("../scatterpolar/hover").makeHoverPointText, l = t("../../plots/polar/helpers").isPtInsidePolygon; e.exports = function (t, e, r) { var c = t.cd, u = c[0].trace, f = t.subplot, h = f.radialAxis, p = f.angularAxis, d = f.vangles, m = d ? l : i.isPtInsideSector, g = t.maxHoverDistance, v = p._period || 2 * Math.PI, y = Math.abs(h.g2p(Math.sqrt(e * e + r * r))), x = Math.atan2(r, e); h.range[0] > h.range[1] && (x += Math.PI); if ( (n.getClosest( c, function (t) { return m( y, x, [t.rp0, t.rp1], [t.thetag0, t.thetag1], d, ) ? g + Math.min( 1, Math.abs(t.thetag1 - t.thetag0) / v, ) - 1 + (t.rp1 - y) / (t.rp1 - t.rp0) - 1 : 1 / 0; }, t, ), !1 !== t.index) ) { var b = c[t.index]; (t.x0 = t.x1 = b.ct[0]), (t.y0 = t.y1 = b.ct[1]); var _ = i.extendFlat({}, b, { r: b.s, theta: b.p }); return ( o(b, u, t), s(_, u, f, t), (t.hovertemplate = u.hovertemplate), (t.color = a(u, b)), (t.xLabelVal = t.yLabelVal = void 0), b.s < 0 && (t.idealAlign = "left"), [t] ); } }; }, { "../../components/fx": 407, "../../lib": 515, "../../plots/polar/helpers": 630, "../bar/hover": 664, "../scatterpolar/hover": 1015, }, ], 678: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "barpolar", basePlotModule: t("../../plots/polar"), categories: ["polar", "bar", "showLegend"], attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyDefaults: t("./defaults"), supplyLayoutDefaults: t("./layout_defaults"), calc: t("./calc").calc, crossTraceCalc: t("./calc").crossTraceCalc, plot: t("./plot"), colorbar: t("../scatter/marker_colorbar"), formatLabels: t("../scatterpolar/format_labels"), style: t("../bar/style").style, styleOnSelect: t("../bar/style").styleOnSelect, hoverPoints: t("./hover"), selectPoints: t("../bar/select"), meta: {}, }; }, { "../../plots/polar": 631, "../bar/select": 669, "../bar/style": 671, "../scatter/marker_colorbar": 954, "../scatterpolar/format_labels": 1014, "./attributes": 674, "./calc": 675, "./defaults": 676, "./hover": 677, "./layout_attributes": 679, "./layout_defaults": 680, "./plot": 681, }, ], 679: [ function (t, e, r) { "use strict"; e.exports = { barmode: { valType: "enumerated", values: ["stack", "overlay"], dflt: "stack", editType: "calc", }, bargap: { valType: "number", dflt: 0.1, min: 0, max: 1, editType: "calc", }, }; }, {}, ], 680: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"); e.exports = function (t, e, r) { var a, o = {}; function s(r, o) { return n.coerce(t[a] || {}, e[a], i, r, o); } for (var l = 0; l < r.length; l++) { var c = r[l]; "barpolar" === c.type && !0 === c.visible && (o[(a = c.subplot)] || (s("barmode"), s("bargap"), (o[a] = 1))); } }; }, { "../../lib": 515, "./layout_attributes": 679 }, ], 681: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("fast-isnumeric"), a = t("../../lib"), o = t("../../components/drawing"), s = t("../../plots/polar/helpers"); e.exports = function (t, e, r) { var l = e.xaxis, c = e.yaxis, u = e.radialAxis, f = e.angularAxis, h = (function (t) { var e = t.cxx, r = t.cyy; if (t.vangles) return function (n, i, o, l) { var c, u; a.angleDelta(o, l) > 0 ? ((c = o), (u = l)) : ((c = l), (u = o)); var f = [ s.findEnclosingVertexAngles(c, t.vangles)[0], (c + u) / 2, s.findEnclosingVertexAngles(u, t.vangles)[1], ]; return s.pathPolygonAnnulus(n, i, c, u, f, e, r); }; return function (t, n, i, o) { return a.pathAnnulus(t, n, i, o, e, r); }; })(e), p = e.layers.frontplot.select("g.barlayer"); a.makeTraceGroups(p, r, "trace bars").each(function () { var r = n.select(this), s = a .ensureSingle(r, "g", "points") .selectAll("g.point") .data(a.identity); s .enter() .append("g") .style("vector-effect", "non-scaling-stroke") .style("stroke-miterlimit", 2) .classed("point", !0), s.exit().remove(), s.each(function (t) { var e, r = n.select(this), o = (t.rp0 = u.c2p(t.s0)), s = (t.rp1 = u.c2p(t.s1)), p = (t.thetag0 = f.c2g(t.p0)), d = (t.thetag1 = f.c2g(t.p1)); if ( i(o) && i(s) && i(p) && i(d) && o !== s && p !== d ) { var m = u.c2g(t.s1), g = (p + d) / 2; (t.ct = [ l.c2p(m * Math.cos(g)), c.c2p(m * Math.sin(g)), ]), (e = h(o, s, p, d)); } else e = "M0,0Z"; a.ensureSingle(r, "path").attr("d", e); }), o.setClipUrl( r, e._hasClipOnAxisFalse ? e.clipIds.forTraces : null, t, ); }); }; }, { "../../components/drawing": 389, "../../lib": 515, "../../plots/polar/helpers": 630, "@plotly/d3": 58, "fast-isnumeric": 190, }, ], 682: [ function (t, e, r) { "use strict"; var n = t("../scatter/attributes"), i = t("../bar/attributes"), a = t("../../components/color/attributes"), o = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, s = t("../../plots/template_attributes").hovertemplateAttrs, l = t("../../lib/extend").extendFlat, c = n.marker, u = c.line; e.exports = { y: { valType: "data_array", editType: "calc+clearAxisTypes", }, x: { valType: "data_array", editType: "calc+clearAxisTypes", }, x0: { valType: "any", editType: "calc+clearAxisTypes" }, y0: { valType: "any", editType: "calc+clearAxisTypes" }, dx: { valType: "number", editType: "calc" }, dy: { valType: "number", editType: "calc" }, xperiod: n.xperiod, yperiod: n.yperiod, xperiod0: n.xperiod0, yperiod0: n.yperiod0, xperiodalignment: n.xperiodalignment, yperiodalignment: n.yperiodalignment, xhoverformat: o("x"), yhoverformat: o("y"), name: { valType: "string", editType: "calc+clearAxisTypes", }, q1: { valType: "data_array", editType: "calc+clearAxisTypes", }, median: { valType: "data_array", editType: "calc+clearAxisTypes", }, q3: { valType: "data_array", editType: "calc+clearAxisTypes", }, lowerfence: { valType: "data_array", editType: "calc" }, upperfence: { valType: "data_array", editType: "calc" }, notched: { valType: "boolean", editType: "calc" }, notchwidth: { valType: "number", min: 0, max: 0.5, dflt: 0.25, editType: "calc", }, notchspan: { valType: "data_array", editType: "calc" }, boxpoints: { valType: "enumerated", values: ["all", "outliers", "suspectedoutliers", !1], editType: "calc", }, jitter: { valType: "number", min: 0, max: 1, editType: "calc", }, pointpos: { valType: "number", min: -2, max: 2, editType: "calc", }, boxmean: { valType: "enumerated", values: [!0, "sd", !1], editType: "calc", }, mean: { valType: "data_array", editType: "calc" }, sd: { valType: "data_array", editType: "calc" }, orientation: { valType: "enumerated", values: ["v", "h"], editType: "calc+clearAxisTypes", }, quartilemethod: { valType: "enumerated", values: ["linear", "exclusive", "inclusive"], dflt: "linear", editType: "calc", }, width: { valType: "number", min: 0, dflt: 0, editType: "calc", }, marker: { outliercolor: { valType: "color", dflt: "rgba(0, 0, 0, 0)", editType: "style", }, symbol: l({}, c.symbol, { arrayOk: !1, editType: "plot", }), opacity: l({}, c.opacity, { arrayOk: !1, dflt: 1, editType: "style", }), angle: l({}, c.angle, { arrayOk: !1, editType: "calc" }), size: l({}, c.size, { arrayOk: !1, editType: "calc" }), color: l({}, c.color, { arrayOk: !1, editType: "style" }), line: { color: l({}, u.color, { arrayOk: !1, dflt: a.defaultLine, editType: "style", }), width: l({}, u.width, { arrayOk: !1, dflt: 0, editType: "style", }), outliercolor: { valType: "color", editType: "style" }, outlierwidth: { valType: "number", min: 0, dflt: 1, editType: "style", }, editType: "style", }, editType: "plot", }, line: { color: { valType: "color", editType: "style" }, width: { valType: "number", min: 0, dflt: 2, editType: "style", }, editType: "plot", }, fillcolor: n.fillcolor, whiskerwidth: { valType: "number", min: 0, max: 1, dflt: 0.5, editType: "calc", }, offsetgroup: i.offsetgroup, alignmentgroup: i.alignmentgroup, selected: { marker: n.selected.marker, editType: "style" }, unselected: { marker: n.unselected.marker, editType: "style", }, text: l({}, n.text, {}), hovertext: l({}, n.hovertext, {}), hovertemplate: s({}), hoveron: { valType: "flaglist", flags: ["boxes", "points"], dflt: "boxes+points", editType: "style", }, }; }, { "../../components/color/attributes": 366, "../../lib/extend": 505, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/template_attributes": 642, "../bar/attributes": 657, "../scatter/attributes": 936, }, ], 683: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../plots/cartesian/axes"), a = t("../../plots/cartesian/align_period"), o = t("../../lib"), s = t("../../constants/numerical").BADNUM, l = o._; e.exports = function (t, e) { var r, c, y, x, b, _, w, T = t._fullLayout, k = i.getFromId(t, e.xaxis || "x"), A = i.getFromId(t, e.yaxis || "y"), M = [], S = "violin" === e.type ? "_numViolins" : "_numBoxes"; "h" === e.orientation ? ((y = k), (x = "x"), (b = A), (_ = "y"), (w = !!e.yperiodalignment)) : ((y = A), (x = "y"), (b = k), (_ = "x"), (w = !!e.xperiodalignment)); var E, L, C, P, I, O, z = (function (t, e, r, i) { var s, l = e + "0" in t, c = "d" + e in t; if (e in t || (l && c)) { var u = r.makeCalcdata(t, e); return [a(t, r, e, u).vals, u]; } s = l ? t[e + "0"] : "name" in t && ("category" === r.type || (n(t.name) && -1 !== ["linear", "log"].indexOf(r.type)) || (o.isDateTime(t.name) && "date" === r.type)) ? t.name : i; for ( var f = "multicategory" === r.type ? r.r2c_just_indices(s) : r.d2c(s, 0, t[e + "calendar"]), h = t._length, p = new Array(h), d = 0; d < h; d++ ) p[d] = f; return [p]; })(e, _, b, T[S]), D = z[0], R = z[1], F = o.distinctVals(D, b), B = F.vals, N = F.minDiff / 2, j = "all" === (e.boxpoints || e.points) ? o.identity : function (t) { return t.v < E.lf || t.v > E.uf; }; if (e._hasPreCompStats) { var U = e[x], V = function (t) { return y.d2c((e[t] || [])[r]); }, H = 1 / 0, q = -1 / 0; for (r = 0; r < e._length; r++) { var G = D[r]; if (n(G)) { if ( (((E = {}).pos = E[_] = G), w && R && (E.orig_p = R[r]), (E.q1 = V("q1")), (E.med = V("median")), (E.q3 = V("q3")), (L = []), U && o.isArrayOrTypedArray(U[r])) ) for (c = 0; c < U[r].length; c++) (O = y.d2c(U[r][c])) !== s && (u((I = { v: O, i: [r, c] }), e, [r, c]), L.push(I)); if ( ((E.pts = L.sort(f)), (P = (C = E[x] = L.map(h)).length), E.med !== s && E.q1 !== s && E.q3 !== s && E.med >= E.q1 && E.q3 >= E.med) ) { var Y = V("lowerfence"); E.lf = Y !== s && Y <= E.q1 ? Y : p(E, C, P); var W = V("upperfence"); E.uf = W !== s && W >= E.q3 ? W : d(E, C, P); var Z = V("mean"); E.mean = Z !== s ? Z : P ? o.mean(C, P) : (E.q1 + E.q3) / 2; var X = V("sd"); (E.sd = Z !== s && X >= 0 ? X : P ? o.stdev(C, P, E.mean) : E.q3 - E.q1), (E.lo = m(E)), (E.uo = g(E)); var J = V("notchspan"); (J = J !== s && J > 0 ? J : v(E, P)), (E.ln = E.med - J), (E.un = E.med + J); var K = E.lf, Q = E.uf; e.boxpoints && C.length && ((K = Math.min(K, C[0])), (Q = Math.max(Q, C[P - 1]))), e.notched && ((K = Math.min(K, E.ln)), (Q = Math.max(Q, E.un))), (E.min = K), (E.max = Q); } else { var $; o.warn( [ "Invalid input - make sure that q1 <= median <= q3", "q1 = " + E.q1, "median = " + E.med, "q3 = " + E.q3, ].join("\n"), ), ($ = E.med !== s ? E.med : E.q1 !== s ? E.q3 !== s ? (E.q1 + E.q3) / 2 : E.q1 : E.q3 !== s ? E.q3 : 0), (E.med = $), (E.q1 = E.q3 = $), (E.lf = E.uf = $), (E.mean = E.sd = $), (E.ln = E.un = $), (E.min = E.max = $); } (H = Math.min(H, E.min)), (q = Math.max(q, E.max)), (E.pts2 = L.filter(j)), M.push(E); } } e._extremes[y._id] = i.findExtremes(y, [H, q], { padded: !0, }); } else { var tt = y.makeCalcdata(e, x), et = (function (t, e) { for ( var r = t.length, n = new Array(r + 1), i = 0; i < r; i++ ) n[i] = t[i] - e; return (n[r] = t[r - 1] + e), n; })(B, N), rt = B.length, nt = (function (t) { for (var e = new Array(t), r = 0; r < t; r++) e[r] = []; return e; })(rt); for (r = 0; r < e._length; r++) if (((O = tt[r]), n(O))) { var it = o.findBin(D[r], et); it >= 0 && it < rt && (u((I = { v: O, i: r }), e, r), nt[it].push(I)); } var at = 1 / 0, ot = -1 / 0, st = e.quartilemethod, lt = "exclusive" === st, ct = "inclusive" === st; for (r = 0; r < rt; r++) if (nt[r].length > 0) { var ut, ft; if ( (((E = {}).pos = E[_] = B[r]), (L = E.pts = nt[r].sort(f)), (P = (C = E[x] = L.map(h)).length), (E.min = C[0]), (E.max = C[P - 1]), (E.mean = o.mean(C, P)), (E.sd = o.stdev(C, P, E.mean)), (E.med = o.interp(C, 0.5)), P % 2 && (lt || ct)) ) lt ? ((ut = C.slice(0, P / 2)), (ft = C.slice(P / 2 + 1))) : ct && ((ut = C.slice(0, P / 2 + 1)), (ft = C.slice(P / 2))), (E.q1 = o.interp(ut, 0.5)), (E.q3 = o.interp(ft, 0.5)); else (E.q1 = o.interp(C, 0.25)), (E.q3 = o.interp(C, 0.75)); (E.lf = p(E, C, P)), (E.uf = d(E, C, P)), (E.lo = m(E)), (E.uo = g(E)); var ht = v(E, P); (E.ln = E.med - ht), (E.un = E.med + ht), (at = Math.min(at, E.ln)), (ot = Math.max(ot, E.un)), (E.pts2 = L.filter(j)), M.push(E); } e._extremes[y._id] = i.findExtremes( y, e.notched ? tt.concat([at, ot]) : tt, { padded: !0 }, ); } return ( (function (t, e) { if (o.isArrayOrTypedArray(e.selectedpoints)) for (var r = 0; r < t.length; r++) { for ( var n = t[r].pts || [], i = {}, a = 0; a < n.length; a++ ) i[n[a].i] = a; o.tagSelected(n, e, i); } })(M, e), M.length > 0 ? ((M[0].t = { num: T[S], dPos: N, posLetter: _, valLetter: x, labels: { med: l(t, "median:"), min: l(t, "min:"), q1: l(t, "q1:"), q3: l(t, "q3:"), max: l(t, "max:"), mean: "sd" === e.boxmean ? l(t, "mean \xb1 \u03c3:") : l(t, "mean:"), lf: l(t, "lower fence:"), uf: l(t, "upper fence:"), }, }), T[S]++, M) : [{ t: { empty: !0 } }] ); }; var c = { text: "tx", hovertext: "htx" }; function u(t, e, r) { for (var n in c) o.isArrayOrTypedArray(e[n]) && (Array.isArray(r) ? o.isArrayOrTypedArray(e[n][r[0]]) && (t[c[n]] = e[n][r[0]][r[1]]) : (t[c[n]] = e[n][r])); } function f(t, e) { return t.v - e.v; } function h(t) { return t.v; } function p(t, e, r) { return 0 === r ? t.q1 : Math.min( t.q1, e[ Math.min( o.findBin(2.5 * t.q1 - 1.5 * t.q3, e, !0) + 1, r - 1, ) ], ); } function d(t, e, r) { return 0 === r ? t.q3 : Math.max( t.q3, e[Math.max(o.findBin(2.5 * t.q3 - 1.5 * t.q1, e), 0)], ); } function m(t) { return 4 * t.q1 - 3 * t.q3; } function g(t) { return 4 * t.q3 - 3 * t.q1; } function v(t, e) { return 0 === e ? 0 : (1.57 * (t.q3 - t.q1)) / Math.sqrt(e); } }, { "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/align_period": 563, "../../plots/cartesian/axes": 566, "fast-isnumeric": 190, }, ], 684: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../../lib"), a = t("../../plots/cartesian/constraints").getAxisGroup, o = ["v", "h"]; function s(t, e, r, o) { var s, l, c, u = e.calcdata, f = e._fullLayout, h = o._id, p = h.charAt(0), d = [], m = 0; for (s = 0; s < r.length; s++) for (c = u[r[s]], l = 0; l < c.length; l++) d.push(o.c2l(c[l].pos, !0)), (m += (c[l].pts2 || []).length); if (d.length) { var g = i.distinctVals(d); ("category" !== o.type && "multicategory" !== o.type) || (g.minDiff = 1); var v = g.minDiff / 2; n.minDtick(o, g.minDiff, g.vals[0], !0); var y = f["violin" === t ? "_numViolins" : "_numBoxes"], x = "group" === f[t + "mode"] && y > 1, b = 1 - f[t + "gap"], _ = 1 - f[t + "groupgap"]; for (s = 0; s < r.length; s++) { var w, T, k, A, M, S, E = (c = u[r[s]])[0].trace, L = c[0].t, C = E.width, P = E.side; if (C) (w = T = A = C / 2), (k = 0); else if (((w = v), x)) { var I = a(f, o._id) + E.orientation, O = (f._alignmentOpts[I] || {})[E.alignmentgroup] || {}, z = Object.keys(O.offsetGroups || {}).length, D = z || y; (T = (w * b * _) / D), (k = 2 * w * (((z ? E._offsetIndex : L.num) + 0.5) / D - 0.5) * b), (A = (w * b) / D); } else (T = w * b * _), (k = 0), (A = w); (L.dPos = w), (L.bPos = k), (L.bdPos = T), (L.wHover = A); var R, F, B, N, j, U, V = k + T, H = Boolean(C); if ( ("positive" === P ? ((M = w * (C ? 1 : 0.5)), (R = V), (S = R = k)) : "negative" === P ? ((M = R = k), (S = w * (C ? 1 : 0.5)), (F = V)) : ((M = S = w), (R = F = V)), (E.boxpoints || E.points) && m > 0) ) { var q = E.pointpos, G = E.jitter, Y = E.marker.size / 2, W = 0; q + G >= 0 && ((W = V * (q + G)) > M ? ((H = !0), (j = Y), (B = W)) : W > R && ((j = Y), (B = M))), W <= M && (B = M); var Z = 0; q - G <= 0 && ((Z = -V * (q - G)) > S ? ((H = !0), (U = Y), (N = Z)) : Z > F && ((U = Y), (N = S))), Z <= S && (N = S); } else (B = M), (N = S); var X = new Array(c.length); for (l = 0; l < c.length; l++) X[l] = c[l].pos; E._extremes[h] = n.findExtremes(o, X, { padded: H, vpadminus: N, vpadplus: B, vpadLinearized: !0, ppadminus: { x: U, y: j }[p], ppadplus: { x: j, y: U }[p], }); } } } e.exports = { crossTraceCalc: function (t, e) { for ( var r = t.calcdata, n = e.xaxis, i = e.yaxis, a = 0; a < o.length; a++ ) { for ( var l = o[a], c = "h" === l ? i : n, u = [], f = 0; f < r.length; f++ ) { var h = r[f], p = h[0].t, d = h[0].trace; !0 !== d.visible || ("box" !== d.type && "candlestick" !== d.type) || p.empty || (d.orientation || "v") !== l || d.xaxis !== n._id || d.yaxis !== i._id || u.push(f); } s("box", t, u, c); } }, setPositionOffset: s, }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "../../plots/cartesian/constraints": 574, }, ], 685: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../registry"), a = t("../../components/color"), o = t("../scatter/period_defaults"), s = t("../bar/defaults").handleGroupingDefaults, l = t("../../plots/cartesian/axis_autotype"), c = t("./attributes"); function u(t, e, r, a) { function o(t) { var e = 0; return ( t && t.length && ((e += 1), n.isArrayOrTypedArray(t[0]) && t[0].length && (e += 1)), e ); } function s(e) { return n.validate(t[e], c[e]); } var u, f = r("y"), h = r("x"); if ("box" === e.type) { var p = r("q1"), d = r("median"), m = r("q3"); (e._hasPreCompStats = p && p.length && d && d.length && m && m.length), (u = Math.min( n.minRowLength(p), n.minRowLength(d), n.minRowLength(m), )); } var g, v, y = o(f), x = o(h), b = y && n.minRowLength(f), _ = x && n.minRowLength(h), w = a.calendar, T = { autotypenumbers: a.autotypenumbers }; if (e._hasPreCompStats) switch (String(x) + String(y)) { case "00": var k = s("x0") || s("dx"); (g = (s("y0") || s("dy")) && !k ? "h" : "v"), (v = u); break; case "10": (g = "v"), (v = Math.min(u, _)); break; case "20": (g = "h"), (v = Math.min(u, h.length)); break; case "01": (g = "h"), (v = Math.min(u, b)); break; case "02": (g = "v"), (v = Math.min(u, f.length)); break; case "12": (g = "v"), (v = Math.min(u, _, f.length)); break; case "21": (g = "h"), (v = Math.min(u, h.length, b)); break; case "11": v = 0; break; case "22": var A, M = !1; for (A = 0; A < h.length; A++) if ("category" === l(h[A], w, T)) { M = !0; break; } if (M) (g = "v"), (v = Math.min(u, _, f.length)); else { for (A = 0; A < f.length; A++) if ("category" === l(f[A], w, T)) { M = !0; break; } M ? ((g = "h"), (v = Math.min(u, h.length, b))) : ((g = "v"), (v = Math.min(u, _, f.length))); } } else y > 0 ? ((g = "v"), (v = x > 0 ? Math.min(_, b) : Math.min(b))) : x > 0 ? ((g = "h"), (v = Math.min(_))) : (v = 0); if (v) { e._length = v; var S = r("orientation", g); e._hasPreCompStats ? "v" === S && 0 === x ? (r("x0", 0), r("dx", 1)) : "h" === S && 0 === y && (r("y0", 0), r("dy", 1)) : "v" === S && 0 === x ? r("x0") : "h" === S && 0 === y && r("y0"), i.getComponentMethod( "calendars", "handleTraceDefaults", )(t, e, ["x", "y"], a); } else e.visible = !1; } function f(t, e, r, i) { var a = i.prefix, o = n.coerce2(t, e, c, "marker.outliercolor"), s = r("marker.line.outliercolor"), l = "outliers"; e._hasPreCompStats ? (l = "all") : (o || s) && (l = "suspectedoutliers"); var u = r(a + "points", l); u ? (r("jitter", "all" === u ? 0.3 : 0), r("pointpos", "all" === u ? -1.5 : 0), r("marker.symbol"), r("marker.opacity"), r("marker.size"), r("marker.angle"), r("marker.color", e.line.color), r("marker.line.color"), r("marker.line.width"), "suspectedoutliers" === u && (r("marker.line.outliercolor", e.marker.color), r("marker.line.outlierwidth")), r("selected.marker.color"), r("unselected.marker.color"), r("selected.marker.size"), r("unselected.marker.size"), r("text"), r("hovertext")) : delete e.marker; var f = r("hoveron"); ("all" !== f && -1 === f.indexOf("points")) || r("hovertemplate"), n.coerceSelectionMarkerOpacity(e, r); } e.exports = { supplyDefaults: function (t, e, r, i) { function s(r, i) { return n.coerce(t, e, c, r, i); } if ((u(t, e, s, i), !1 !== e.visible)) { o(t, e, i, s), s("xhoverformat"), s("yhoverformat"); var l = e._hasPreCompStats; l && (s("lowerfence"), s("upperfence")), s("line.color", (t.marker || {}).color || r), s("line.width"), s("fillcolor", a.addOpacity(e.line.color, 0.5)); var h = !1; if (l) { var p = s("mean"), d = s("sd"); p && p.length && ((h = !0), d && d.length && (h = "sd")); } s("boxmean", h), s("whiskerwidth"), s("width"), s("quartilemethod"); var m = !1; if (l) { var g = s("notchspan"); g && g.length && (m = !0); } else n.validate(t.notchwidth, c.notchwidth) && (m = !0); s("notched", m) && s("notchwidth"), f(t, e, s, { prefix: "box" }); } }, crossTraceDefaults: function (t, e) { var r, i; function a(t) { return n.coerce(i._input, i, c, t); } for (var o = 0; o < t.length; o++) { var l = (i = t[o]).type; ("box" !== l && "violin" !== l) || ((r = i._input), "group" === e[l + "mode"] && s(r, i, e, a)); } }, handleSampleDefaults: u, handlePointsDefaults: f, }; }, { "../../components/color": 367, "../../lib": 515, "../../plots/cartesian/axis_autotype": 567, "../../registry": 647, "../bar/defaults": 661, "../scatter/period_defaults": 956, "./attributes": 682, }, ], 686: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { return ( e.hoverOnBox && (t.hoverOnBox = e.hoverOnBox), "xVal" in e && (t.x = e.xVal), "yVal" in e && (t.y = e.yVal), e.xa && (t.xaxis = e.xa), e.ya && (t.yaxis = e.ya), t ); }; }, {}, ], 687: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../../lib"), a = t("../../components/fx"), o = t("../../components/color"), s = i.fillText; function l(t, e, r, s) { var l, c, u, f, h, p, d, m, g, v, y, x, b, _, w = t.cd, T = t.xa, k = t.ya, A = w[0].trace, M = w[0].t, S = "violin" === A.type, E = M.bdPos, L = M.wHover, C = function (t) { return u.c2l(t.pos) + M.bPos - u.c2l(p); }; S && "both" !== A.side ? ("positive" === A.side && ((g = function (t) { var e = C(t); return a.inbox(e, e + L, v); }), (x = E), (b = 0)), "negative" === A.side && ((g = function (t) { var e = C(t); return a.inbox(e - L, e, v); }), (x = 0), (b = E))) : ((g = function (t) { var e = C(t); return a.inbox(e - L, e + L, v); }), (x = b = E)), (_ = S ? function (t) { return a.inbox(t.span[0] - h, t.span[1] - h, v); } : function (t) { return a.inbox(t.min - h, t.max - h, v); }), "h" === A.orientation ? ((h = e), (p = r), (d = _), (m = g), (l = "y"), (u = k), (c = "x"), (f = T)) : ((h = r), (p = e), (d = g), (m = _), (l = "x"), (u = T), (c = "y"), (f = k)); var P = Math.min( 1, E / Math.abs(u.r2c(u.range[1]) - u.r2c(u.range[0])), ); function I(t) { return (d(t) + m(t)) / 2; } (v = t.maxHoverDistance - P), (y = t.maxSpikeDistance - P); var O = a.getDistanceFunction(s, d, m, I); if ((a.getClosest(w, O, t), !1 === t.index)) return []; var z = w[t.index], D = A.line.color, R = (A.marker || {}).color; o.opacity(D) && A.line.width ? (t.color = D) : o.opacity(R) && A.boxpoints ? (t.color = R) : (t.color = A.fillcolor), (t[l + "0"] = u.c2p(z.pos + M.bPos - b, !0)), (t[l + "1"] = u.c2p(z.pos + M.bPos + x, !0)), (t[l + "LabelVal"] = void 0 !== z.orig_p ? z.orig_p : z.pos); var F = l + "Spike"; (t.spikeDistance = (I(z) * y) / v), (t[F] = u.c2p(z.pos, !0)); var B = A.boxmean || (A.meanline || {}).visible, N = A.boxpoints || A.points, j = N && B ? [ "max", "uf", "q3", "med", "mean", "q1", "lf", "min", ] : N && !B ? ["max", "uf", "q3", "med", "q1", "lf", "min"] : !N && B ? ["max", "q3", "med", "mean", "q1", "min"] : ["max", "q3", "med", "q1", "min"], U = f.range[1] < f.range[0]; A.orientation === (U ? "v" : "h") && j.reverse(); for ( var V = t.spikeDistance, H = t[F], q = [], G = 0; G < j.length; G++ ) { var Y = j[G]; if (Y in z) { var W = z[Y], Z = f.c2p(W, !0), X = i.extendFlat({}, t); (X.attr = Y), (X[c + "0"] = X[c + "1"] = Z), (X[c + "LabelVal"] = W), (X[c + "Label"] = (M.labels ? M.labels[Y] + " " : "") + n.hoverLabelText(f, W, A[c + "hoverformat"])), (X.hoverOnBox = !0), "mean" === Y && "sd" in z && "sd" === A.boxmean && (X[c + "err"] = z.sd), (X.hovertemplate = !1), q.push(X); } } (t.name = ""), (t.spikeDistance = void 0), (t[F] = void 0); for (var J = 0; J < q.length; J++) "med" !== q[J].attr ? ((q[J].name = ""), (q[J].spikeDistance = void 0), (q[J][F] = void 0)) : ((q[J].spikeDistance = V), (q[J][F] = H)); return q; } function c(t, e, r) { for ( var n, o, l, c = t.cd, u = t.xa, f = t.ya, h = c[0].trace, p = u.c2p(e), d = f.c2p(r), m = a.quadrature( function (t) { var e = Math.max(3, t.mrc || 0); return Math.max( Math.abs(u.c2p(t.x) - p) - e, 1 - 3 / e, ); }, function (t) { var e = Math.max(3, t.mrc || 0); return Math.max( Math.abs(f.c2p(t.y) - d) - e, 1 - 3 / e, ); }, ), g = !1, v = 0; v < c.length; v++ ) { o = c[v]; for (var y = 0; y < (o.pts || []).length; y++) { var x = m((l = o.pts[y])); x <= t.distance && ((t.distance = x), (g = [v, y])); } } if (!g) return !1; l = (o = c[g[0]]).pts[g[1]]; var b = u.c2p(l.x, !0), _ = f.c2p(l.y, !0), w = l.mrc || 1; n = i.extendFlat({}, t, { index: l.i, color: (h.marker || {}).color, name: h.name, x0: b - w, x1: b + w, y0: _ - w, y1: _ + w, spikeDistance: t.distance, hovertemplate: h.hovertemplate, }); var T, k = o.orig_p, A = void 0 !== k ? k : o.pos; return ( "h" === h.orientation ? ((T = f), (n.xLabelVal = l.x), (n.yLabelVal = A)) : ((T = u), (n.xLabelVal = A), (n.yLabelVal = l.y)), (n[T._id.charAt(0) + "Spike"] = T.c2p(o.pos, !0)), s(l, h, n), n ); } e.exports = { hoverPoints: function (t, e, r, n) { var i, a = t.cd[0].trace.hoveron, o = []; return ( -1 !== a.indexOf("boxes") && (o = o.concat(l(t, e, r, n))), -1 !== a.indexOf("points") && (i = c(t, e, r)), "closest" === n ? (i ? [i] : o) : i ? (o.push(i), o) : o ); }, hoverOnBoxes: l, hoverOnPoints: c, }; }, { "../../components/color": 367, "../../components/fx": 407, "../../lib": 515, "../../plots/cartesian/axes": 566, }, ], 688: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyDefaults: t("./defaults").supplyDefaults, crossTraceDefaults: t("./defaults").crossTraceDefaults, supplyLayoutDefaults: t("./layout_defaults").supplyLayoutDefaults, calc: t("./calc"), crossTraceCalc: t("./cross_trace_calc").crossTraceCalc, plot: t("./plot").plot, style: t("./style").style, styleOnSelect: t("./style").styleOnSelect, hoverPoints: t("./hover").hoverPoints, eventData: t("./event_data"), selectPoints: t("./select"), moduleType: "trace", name: "box", basePlotModule: t("../../plots/cartesian"), categories: [ "cartesian", "svg", "symbols", "oriented", "box-violin", "showLegend", "boxLayout", "zoomScale", ], meta: {}, }; }, { "../../plots/cartesian": 578, "./attributes": 682, "./calc": 683, "./cross_trace_calc": 684, "./defaults": 685, "./event_data": 686, "./hover": 687, "./layout_attributes": 689, "./layout_defaults": 690, "./plot": 691, "./select": 692, "./style": 693, }, ], 689: [ function (t, e, r) { "use strict"; e.exports = { boxmode: { valType: "enumerated", values: ["group", "overlay"], dflt: "overlay", editType: "calc", }, boxgap: { valType: "number", min: 0, max: 1, dflt: 0.3, editType: "calc", }, boxgroupgap: { valType: "number", min: 0, max: 1, dflt: 0.3, editType: "calc", }, }; }, {}, ], 690: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"), a = t("./layout_attributes"); function o(t, e, r, i, a) { for ( var o = a + "Layout", s = !1, l = 0; l < r.length; l++ ) { var c = r[l]; if (n.traceIs(c, o)) { s = !0; break; } } s && (i(a + "mode"), i(a + "gap"), i(a + "groupgap")); } e.exports = { supplyLayoutDefaults: function (t, e, r) { o( 0, 0, r, function (r, n) { return i.coerce(t, e, a, r, n); }, "box", ); }, _supply: o, }; }, { "../../lib": 515, "../../registry": 647, "./layout_attributes": 689, }, ], 691: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../components/drawing"); function o(t, e, r, a) { var o, s, l = "h" === r.orientation, c = e.val, u = e.pos, f = !!u.rangebreaks, h = a.bPos, p = a.wdPos || 0, d = a.bPosPxOffset || 0, m = r.whiskerwidth || 0, g = r.notched || !1, v = g ? 1 - 2 * r.notchwidth : 1; Array.isArray(a.bdPos) ? ((o = a.bdPos[0]), (s = a.bdPos[1])) : ((o = a.bdPos), (s = a.bdPos)); var y = t .selectAll("path.box") .data( "violin" !== r.type || r.box.visible ? i.identity : [], ); y .enter() .append("path") .style("vector-effect", "non-scaling-stroke") .attr("class", "box"), y.exit().remove(), y.each(function (t) { if (t.empty) return "M0,0Z"; var e = u.c2l(t.pos + h, !0), a = u.l2p(e - o) + d, y = u.l2p(e + s) + d, x = f ? (a + y) / 2 : u.l2p(e) + d, b = r.whiskerwidth, _ = f ? a * b + (1 - b) * x : u.l2p(e - p) + d, w = f ? y * b + (1 - b) * x : u.l2p(e + p) + d, T = u.l2p(e - o * v) + d, k = u.l2p(e + s * v) + d, A = c.c2p(t.q1, !0), M = c.c2p(t.q3, !0), S = i.constrain( c.c2p(t.med, !0), Math.min(A, M) + 1, Math.max(A, M) - 1, ), E = void 0 === t.lf || !1 === r.boxpoints, L = c.c2p(E ? t.min : t.lf, !0), C = c.c2p(E ? t.max : t.uf, !0), P = c.c2p(t.ln, !0), I = c.c2p(t.un, !0); l ? n .select(this) .attr( "d", "M" + S + "," + T + "V" + k + "M" + A + "," + a + "V" + y + (g ? "H" + P + "L" + S + "," + k + "L" + I + "," + y : "") + "H" + M + "V" + a + (g ? "H" + I + "L" + S + "," + T + "L" + P + "," + a : "") + "ZM" + A + "," + x + "H" + L + "M" + M + "," + x + "H" + C + (0 === m ? "" : "M" + L + "," + _ + "V" + w + "M" + C + "," + _ + "V" + w), ) : n .select(this) .attr( "d", "M" + T + "," + S + "H" + k + "M" + a + "," + A + "H" + y + (g ? "V" + P + "L" + k + "," + S + "L" + y + "," + I : "") + "V" + M + "H" + a + (g ? "V" + I + "L" + T + "," + S + "L" + a + "," + P : "") + "ZM" + x + "," + A + "V" + L + "M" + x + "," + M + "V" + C + (0 === m ? "" : "M" + _ + "," + L + "H" + w + "M" + _ + "," + C + "H" + w), ); }); } function s(t, e, r, n) { var o = e.x, s = e.y, l = n.bdPos, c = n.bPos, u = r.boxpoints || r.points; i.seedPseudoRandom(); var f = t.selectAll("g.points").data( u ? function (t) { return ( t.forEach(function (t) { (t.t = n), (t.trace = r); }), t ); } : [], ); f.enter().append("g").attr("class", "points"), f.exit().remove(); var h = f.selectAll("path").data(function (t) { var e, n, a = t.pts2, o = Math.max((t.max - t.min) / 10, t.q3 - t.q1), s = 1e-9 * o, f = 0.01 * o, h = [], p = 0; if (r.jitter) { if (0 === o) for ( p = 1, h = new Array(a.length), e = 0; e < a.length; e++ ) h[e] = 1; else for (e = 0; e < a.length; e++) { var d = Math.max(0, e - 5), m = a[d].v, g = Math.min(a.length - 1, e + 5), v = a[g].v; "all" !== u && (a[e].v < t.lf ? (v = Math.min(v, t.lf)) : (m = Math.max(m, t.uf))); var y = Math.sqrt((f * (g - d)) / (v - m + s)) || 0; (y = i.constrain(Math.abs(y), 0, 1)), h.push(y), (p = Math.max(y, p)); } n = (2 * r.jitter) / (p || 1); } for (e = 0; e < a.length; e++) { var x = a[e], b = x.v, _ = r.jitter ? n * h[e] * (i.pseudoRandom() - 0.5) : 0, w = t.pos + c + l * (r.pointpos + _); "h" === r.orientation ? ((x.y = w), (x.x = b)) : ((x.x = w), (x.y = b)), "suspectedoutliers" === u && b < t.uo && b > t.lo && (x.so = !0); } return a; }); h.enter().append("path").classed("point", !0), h.exit().remove(), h.call(a.translatePoints, o, s); } function l(t, e, r, a) { var o, s, l = e.val, c = e.pos, u = !!c.rangebreaks, f = a.bPos, h = a.bPosPxOffset || 0, p = r.boxmean || (r.meanline || {}).visible; Array.isArray(a.bdPos) ? ((o = a.bdPos[0]), (s = a.bdPos[1])) : ((o = a.bdPos), (s = a.bdPos)); var d = t .selectAll("path.mean") .data( ("box" === r.type && r.boxmean) || ("violin" === r.type && r.box.visible && r.meanline.visible) ? i.identity : [], ); d.enter().append("path").attr("class", "mean").style({ fill: "none", "vector-effect": "non-scaling-stroke", }), d.exit().remove(), d.each(function (t) { var e = c.c2l(t.pos + f, !0), i = c.l2p(e - o) + h, a = c.l2p(e + s) + h, d = u ? (i + a) / 2 : c.l2p(e) + h, m = l.c2p(t.mean, !0), g = l.c2p(t.mean - t.sd, !0), v = l.c2p(t.mean + t.sd, !0); "h" === r.orientation ? n .select(this) .attr( "d", "M" + m + "," + i + "V" + a + ("sd" === p ? "m0,0L" + g + "," + d + "L" + m + "," + i + "L" + v + "," + d + "Z" : ""), ) : n .select(this) .attr( "d", "M" + i + "," + m + "H" + a + ("sd" === p ? "m0,0L" + d + "," + g + "L" + i + "," + m + "L" + d + "," + v + "Z" : ""), ); }); } e.exports = { plot: function (t, e, r, a) { var c = e.xaxis, u = e.yaxis; i.makeTraceGroups(a, r, "trace boxes").each(function (t) { var e, r, i = n.select(this), a = t[0], f = a.t, h = a.trace; ((f.wdPos = f.bdPos * h.whiskerwidth), !0 !== h.visible || f.empty) ? i.remove() : ("h" === h.orientation ? ((e = u), (r = c)) : ((e = c), (r = u)), o(i, { pos: e, val: r }, h, f), s(i, { x: c, y: u }, h, f), l(i, { pos: e, val: r }, h, f)); }); }, plotBoxAndWhiskers: o, plotPoints: s, plotBoxMean: l, }; }, { "../../components/drawing": 389, "../../lib": 515, "@plotly/d3": 58, }, ], 692: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r, n, i = t.cd, a = t.xaxis, o = t.yaxis, s = []; if (!1 === e) for (r = 0; r < i.length; r++) for (n = 0; n < (i[r].pts || []).length; n++) i[r].pts[n].selected = 0; else for (r = 0; r < i.length; r++) for (n = 0; n < (i[r].pts || []).length; n++) { var l = i[r].pts[n], c = a.c2p(l.x), u = o.c2p(l.y); e.contains([c, u], null, l.i, t) ? (s.push({ pointNumber: l.i, x: a.c2d(l.x), y: o.c2d(l.y), }), (l.selected = 1)) : (l.selected = 0); } return s; }; }, {}, ], 693: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/color"), a = t("../../components/drawing"); e.exports = { style: function (t, e, r) { var o = r || n.select(t).selectAll("g.trace.boxes"); o.style("opacity", function (t) { return t[0].trace.opacity; }), o.each(function (e) { var r = n.select(this), o = e[0].trace, s = o.line.width; function l(t, e, r, n) { t.style("stroke-width", e + "px") .call(i.stroke, r) .call(i.fill, n); } var c = r.selectAll("path.box"); if ("candlestick" === o.type) c.each(function (t) { if (!t.empty) { var e = n.select(this), r = o[t.dir]; l(e, r.line.width, r.line.color, r.fillcolor), e.style( "opacity", o.selectedpoints && !t.selected ? 0.3 : 1, ); } }); else { l(c, s, o.line.color, o.fillcolor), r .selectAll("path.mean") .style({ "stroke-width": s, "stroke-dasharray": 2 * s + "px," + s + "px", }) .call(i.stroke, o.line.color); var u = r.selectAll("path.point"); a.pointStyle(u, o, t); } }); }, styleOnSelect: function (t, e, r) { var n = e[0].trace, i = r.selectAll("path.point"); n.selectedpoints ? a.selectedPointStyle(i, n) : a.pointStyle(i, n, t); }, }; }, { "../../components/color": 367, "../../components/drawing": 389, "@plotly/d3": 58, }, ], 694: [ function (t, e, r) { "use strict"; var n = t("../../lib").extendFlat, i = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, a = t("../ohlc/attributes"), o = t("../box/attributes"); function s(t) { return { line: { color: n({}, o.line.color, { dflt: t }), width: o.line.width, editType: "style", }, fillcolor: o.fillcolor, editType: "style", }; } e.exports = { xperiod: a.xperiod, xperiod0: a.xperiod0, xperiodalignment: a.xperiodalignment, xhoverformat: i("x"), yhoverformat: i("y"), x: a.x, open: a.open, high: a.high, low: a.low, close: a.close, line: { width: n({}, o.line.width, {}), editType: "style" }, increasing: s(a.increasing.line.color.dflt), decreasing: s(a.decreasing.line.color.dflt), text: a.text, hovertext: a.hovertext, whiskerwidth: n({}, o.whiskerwidth, { dflt: 0 }), hoverlabel: a.hoverlabel, }; }, { "../../lib": 515, "../../plots/cartesian/axis_format_attributes": 569, "../box/attributes": 682, "../ohlc/attributes": 881, }, ], 695: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"), a = t("../../plots/cartesian/align_period"), o = t("../ohlc/calc").calcCommon; function s(t, e, r, n) { return { min: r, q1: Math.min(t, n), med: n, q3: Math.max(t, n), max: e, }; } e.exports = function (t, e) { var r = t._fullLayout, l = i.getFromId(t, e.xaxis), c = i.getFromId(t, e.yaxis), u = l.makeCalcdata(e, "x"), f = a(e, l, "x", u).vals, h = o(t, e, u, f, c, s); return h.length ? (n.extendFlat(h[0].t, { num: r._numBoxes, dPos: n.distinctVals(f).minDiff / 2, posLetter: "x", valLetter: "y", }), r._numBoxes++, h) : [{ t: { empty: !0 } }]; }; }, { "../../lib": 515, "../../plots/cartesian/align_period": 563, "../../plots/cartesian/axes": 566, "../ohlc/calc": 882, }, ], 696: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/color"), a = t("../ohlc/ohlc_defaults"), o = t("../scatter/period_defaults"), s = t("./attributes"); function l(t, e, r, n) { var a = r(n + ".line.color"); r(n + ".line.width", e.line.width), r(n + ".fillcolor", i.addOpacity(a, 0.5)); } e.exports = function (t, e, r, i) { function c(r, i) { return n.coerce(t, e, s, r, i); } a(t, e, c, i) ? (o(t, e, i, c, { x: !0 }), c("xhoverformat"), c("yhoverformat"), c("line.width"), l(t, e, c, "increasing"), l(t, e, c, "decreasing"), c("text"), c("hovertext"), c("whiskerwidth"), (i._requestRangeslider[e.xaxis] = !0)) : (e.visible = !1); }; }, { "../../components/color": 367, "../../lib": 515, "../ohlc/ohlc_defaults": 886, "../scatter/period_defaults": 956, "./attributes": 694, }, ], 697: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "candlestick", basePlotModule: t("../../plots/cartesian"), categories: [ "cartesian", "svg", "showLegend", "candlestick", "boxLayout", ], meta: {}, attributes: t("./attributes"), layoutAttributes: t("../box/layout_attributes"), supplyLayoutDefaults: t("../box/layout_defaults") .supplyLayoutDefaults, crossTraceCalc: t("../box/cross_trace_calc").crossTraceCalc, supplyDefaults: t("./defaults"), calc: t("./calc"), plot: t("../box/plot").plot, layerName: "boxlayer", style: t("../box/style").style, hoverPoints: t("../ohlc/hover").hoverPoints, selectPoints: t("../ohlc/select"), }; }, { "../../plots/cartesian": 578, "../box/cross_trace_calc": 684, "../box/layout_attributes": 689, "../box/layout_defaults": 690, "../box/plot": 691, "../box/style": 693, "../ohlc/hover": 884, "../ohlc/select": 888, "./attributes": 694, "./calc": 695, "./defaults": 696, }, ], 698: [ function (t, e, r) { "use strict"; var n = t("./axis_defaults"), i = t("../../plot_api/plot_template"); e.exports = function (t, e, r, a, o) { a("a") || (a("da"), a("a0")), a("b") || (a("db"), a("b0")), (function (t, e, r, a) { ["aaxis", "baxis"].forEach(function (o) { var s = o.charAt(0), l = t[o] || {}, c = i.newContainer(e, o), u = { noTicklabelstep: !0, tickfont: "x", id: s + "axis", letter: s, font: e.font, name: o, data: t[s], calendar: e.calendar, dfltColor: a, bgColor: r.paper_bgcolor, autotypenumbersDflt: r.autotypenumbers, fullLayout: r, }; n(l, c, u), (c._categories = c._categories || []), t[o] || "-" === l.type || (t[o] = { type: l.type }); }); })(t, e, r, o); }; }, { "../../plot_api/plot_template": 555, "./axis_defaults": 703 }, ], 699: [ function (t, e, r) { "use strict"; var n = t("../../lib").isArrayOrTypedArray; e.exports = function (t) { return (function t(e, r) { if (!n(e) || r >= 10) return null; for ( var i = 1 / 0, a = -1 / 0, o = e.length, s = 0; s < o; s++ ) { var l = e[s]; if (n(l)) { var c = t(l, r + 1); c && ((i = Math.min(c[0], i)), (a = Math.max(c[1], a))); } else (i = Math.min(l, i)), (a = Math.max(l, a)); } return [i, a]; })(t, 0); }; }, { "../../lib": 515 }, ], 700: [ function (t, e, r) { "use strict"; var n = t("../../plots/font_attributes"), i = t("./axis_attributes"), a = t("../../components/color/attributes"), o = n({ editType: "calc" }); (o.family.dflt = '"Open Sans", verdana, arial, sans-serif'), (o.size.dflt = 12), (o.color.dflt = a.defaultLine), (e.exports = { carpet: { valType: "string", editType: "calc" }, x: { valType: "data_array", editType: "calc+clearAxisTypes", }, y: { valType: "data_array", editType: "calc+clearAxisTypes", }, a: { valType: "data_array", editType: "calc" }, a0: { valType: "number", dflt: 0, editType: "calc" }, da: { valType: "number", dflt: 1, editType: "calc" }, b: { valType: "data_array", editType: "calc" }, b0: { valType: "number", dflt: 0, editType: "calc" }, db: { valType: "number", dflt: 1, editType: "calc" }, cheaterslope: { valType: "number", dflt: 1, editType: "calc", }, aaxis: i, baxis: i, font: o, color: { valType: "color", dflt: a.defaultLine, editType: "plot", }, transforms: void 0, }); }, { "../../components/color/attributes": 366, "../../plots/font_attributes": 594, "./axis_attributes": 702, }, ], 701: [ function (t, e, r) { "use strict"; var n = t("../../lib").isArrayOrTypedArray; e.exports = function (t, e, r, i) { var a, o, s, l, c, u, f, h, p, d, m, g, v, y = n(r) ? "a" : "b", x = ("a" === y ? t.aaxis : t.baxis).smoothing, b = "a" === y ? t.a2i : t.b2j, _ = "a" === y ? r : i, w = "a" === y ? i : r, T = "a" === y ? e.a.length : e.b.length, k = "a" === y ? e.b.length : e.a.length, A = Math.floor("a" === y ? t.b2j(w) : t.a2i(w)), M = "a" === y ? function (e) { return t.evalxy([], e, A); } : function (e) { return t.evalxy([], A, e); }; x && ((s = Math.max(0, Math.min(k - 2, A))), (l = A - s), (o = "a" === y ? function (e, r) { return t.dxydi([], e, s, r, l); } : function (e, r) { return t.dxydj([], s, e, l, r); })); var S = b(_[0]), E = b(_[1]), L = S < E ? 1 : -1, C = 1e-8 * (E - S), P = L > 0 ? Math.floor : Math.ceil, I = L > 0 ? Math.ceil : Math.floor, O = L > 0 ? Math.min : Math.max, z = L > 0 ? Math.max : Math.min, D = P(S + C), R = I(E - C), F = [[(f = M(S))]]; for (a = D; a * L < R * L; a += L) (c = []), (m = z(S, a)), (v = (g = O(E, a + L)) - m), (u = Math.max( 0, Math.min(T - 2, Math.floor(0.5 * (m + g))), )), (h = M(g)), x && ((p = o(u, m - u)), (d = o(u, g - u)), c.push([ f[0] + (p[0] / 3) * v, f[1] + (p[1] / 3) * v, ]), c.push([ h[0] - (d[0] / 3) * v, h[1] - (d[1] / 3) * v, ])), c.push(h), F.push(c), (f = h); return F; }; }, { "../../lib": 515 }, ], 702: [ function (t, e, r) { "use strict"; var n = t("../../plots/font_attributes"), i = t("../../components/color/attributes"), a = t("../../plots/cartesian/layout_attributes"), o = t( "../../plots/cartesian/axis_format_attributes", ).descriptionWithDates, s = t("../../plot_api/edit_types").overrideAll, l = t("../../components/drawing/attributes").dash, c = t("../../lib/extend").extendFlat; e.exports = { color: { valType: "color", editType: "calc" }, smoothing: { valType: "number", dflt: 1, min: 0, max: 1.3, editType: "calc", }, title: { text: { valType: "string", dflt: "", editType: "calc" }, font: n({ editType: "calc" }), offset: { valType: "number", dflt: 10, editType: "calc" }, editType: "calc", }, type: { valType: "enumerated", values: ["-", "linear", "date", "category"], dflt: "-", editType: "calc", }, autotypenumbers: a.autotypenumbers, autorange: { valType: "enumerated", values: [!0, !1, "reversed"], dflt: !0, editType: "calc", }, rangemode: { valType: "enumerated", values: ["normal", "tozero", "nonnegative"], dflt: "normal", editType: "calc", }, range: { valType: "info_array", editType: "calc", items: [ { valType: "any", editType: "calc" }, { valType: "any", editType: "calc" }, ], }, fixedrange: { valType: "boolean", dflt: !1, editType: "calc", }, cheatertype: { valType: "enumerated", values: ["index", "value"], dflt: "value", editType: "calc", }, tickmode: { valType: "enumerated", values: ["linear", "array"], dflt: "array", editType: "calc", }, nticks: { valType: "integer", min: 0, dflt: 0, editType: "calc", }, tickvals: { valType: "data_array", editType: "calc" }, ticktext: { valType: "data_array", editType: "calc" }, showticklabels: { valType: "enumerated", values: ["start", "end", "both", "none"], dflt: "start", editType: "calc", }, tickfont: n({ editType: "calc" }), tickangle: { valType: "angle", dflt: "auto", editType: "calc", }, tickprefix: { valType: "string", dflt: "", editType: "calc", }, showtickprefix: { valType: "enumerated", values: ["all", "first", "last", "none"], dflt: "all", editType: "calc", }, ticksuffix: { valType: "string", dflt: "", editType: "calc", }, showticksuffix: { valType: "enumerated", values: ["all", "first", "last", "none"], dflt: "all", editType: "calc", }, showexponent: { valType: "enumerated", values: ["all", "first", "last", "none"], dflt: "all", editType: "calc", }, exponentformat: { valType: "enumerated", values: ["none", "e", "E", "power", "SI", "B"], dflt: "B", editType: "calc", }, minexponent: { valType: "number", dflt: 3, min: 0, editType: "calc", }, separatethousands: { valType: "boolean", dflt: !1, editType: "calc", }, tickformat: { valType: "string", dflt: "", editType: "calc", description: o("tick label"), }, tickformatstops: s(a.tickformatstops, "calc", "from-root"), categoryorder: { valType: "enumerated", values: [ "trace", "category ascending", "category descending", "array", ], dflt: "trace", editType: "calc", }, categoryarray: { valType: "data_array", editType: "calc" }, labelpadding: { valType: "integer", dflt: 10, editType: "calc", }, labelprefix: { valType: "string", editType: "calc" }, labelsuffix: { valType: "string", dflt: "", editType: "calc", }, showline: { valType: "boolean", dflt: !1, editType: "calc", }, linecolor: { valType: "color", dflt: i.defaultLine, editType: "calc", }, linewidth: { valType: "number", min: 0, dflt: 1, editType: "calc", }, gridcolor: { valType: "color", editType: "calc" }, gridwidth: { valType: "number", min: 0, dflt: 1, editType: "calc", }, griddash: c({}, l, { editType: "calc" }), showgrid: { valType: "boolean", dflt: !0, editType: "calc", }, minorgridcount: { valType: "integer", min: 0, dflt: 0, editType: "calc", }, minorgridwidth: { valType: "number", min: 0, dflt: 1, editType: "calc", }, minorgriddash: c({}, l, { editType: "calc" }), minorgridcolor: { valType: "color", dflt: i.lightLine, editType: "calc", }, startline: { valType: "boolean", editType: "calc" }, startlinecolor: { valType: "color", editType: "calc" }, startlinewidth: { valType: "number", dflt: 1, editType: "calc", }, endline: { valType: "boolean", editType: "calc" }, endlinewidth: { valType: "number", dflt: 1, editType: "calc", }, endlinecolor: { valType: "color", editType: "calc" }, tick0: { valType: "number", min: 0, dflt: 0, editType: "calc", }, dtick: { valType: "number", min: 0, dflt: 1, editType: "calc", }, arraytick0: { valType: "integer", min: 0, dflt: 0, editType: "calc", }, arraydtick: { valType: "integer", min: 1, dflt: 1, editType: "calc", }, _deprecated: { title: { valType: "string", editType: "calc" }, titlefont: n({ editType: "calc" }), titleoffset: { valType: "number", dflt: 10, editType: "calc", }, }, editType: "calc", }; }, { "../../components/color/attributes": 366, "../../components/drawing/attributes": 388, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/cartesian/layout_attributes": 579, "../../plots/font_attributes": 594, }, ], 703: [ function (t, e, r) { "use strict"; var n = t("./attributes"), i = t("../../components/color").addOpacity, a = t("../../registry"), o = t("../../lib"), s = t("../../plots/cartesian/tick_value_defaults"), l = t("../../plots/cartesian/tick_label_defaults"), c = t("../../plots/cartesian/prefix_suffix_defaults"), u = t("../../plots/cartesian/category_order_defaults"), f = t("../../plots/cartesian/set_convert"), h = t("../../plots/cartesian/axis_autotype"); e.exports = function (t, e, r) { var p = r.letter, d = r.font || {}, m = n[p + "axis"]; function g(r, n) { return o.coerce(t, e, m, r, n); } function v(r, n) { return o.coerce2(t, e, m, r, n); } r.name && ((e._name = r.name), (e._id = r.name)), g("autotypenumbers", r.autotypenumbersDflt); var y = g("type"); ("-" === y && (r.data && (function (t, e) { if ("-" !== t.type) return; var r = t._id.charAt(0), n = t[r + "calendar"]; t.type = h(e, n, { autotypenumbers: t.autotypenumbers, }); })(e, r.data), "-" === e.type ? (e.type = "linear") : (y = t.type = e.type)), g("smoothing"), g("cheatertype"), g("showticklabels"), g("labelprefix", p + " = "), g("labelsuffix"), g("showtickprefix"), g("showticksuffix"), g("separatethousands"), g("tickformat"), g("exponentformat"), g("minexponent"), g("showexponent"), g("categoryorder"), g("tickmode"), g("tickvals"), g("ticktext"), g("tick0"), g("dtick"), "array" === e.tickmode && (g("arraytick0"), g("arraydtick")), g("labelpadding"), (e._hovertitle = p), "date" === y) && a.getComponentMethod("calendars", "handleDefaults")( t, e, "calendar", r.calendar, ); f(e, r.fullLayout), (e.c2p = o.identity); var x = g("color", r.dfltColor), b = x === t.color ? x : d.color; g("title.text") && (o.coerceFont(g, "title.font", { family: d.family, size: o.bigFont(d.size), color: b, }), g("title.offset")), g("tickangle"), g("autorange", !e.isValidRange(t.range)) && g("rangemode"), g("range"), e.cleanRange(), g("fixedrange"), s(t, e, g, y), c(t, e, g, y, r), l(t, e, g, y, r), u(t, e, g, { data: r.data, dataAttr: p }); var _ = v("gridcolor", i(x, 0.3)), w = v("gridwidth"), T = v("griddash"), k = g("showgrid"); k || (delete e.gridcolor, delete e.gridwidth, delete e.griddash); var A = v("startlinecolor", x), M = v("startlinewidth", w); g("startline", e.showgrid || !!A || !!M) || (delete e.startlinecolor, delete e.startlinewidth); var S = v("endlinecolor", x), E = v("endlinewidth", w); return ( g("endline", e.showgrid || !!S || !!E) || (delete e.endlinecolor, delete e.endlinewidth), k ? (g("minorgridcount"), g("minorgridwidth", w), g("minorgriddash", T), g("minorgridcolor", i(_, 0.06)), e.minorgridcount || (delete e.minorgridwidth, delete e.minorgriddash, delete e.minorgridcolor)) : (delete e.gridcolor, delete e.gridwidth, delete e.griddash), "none" === e.showticklabels && (delete e.tickfont, delete e.tickangle, delete e.showexponent, delete e.exponentformat, delete e.minexponent, delete e.tickformat, delete e.showticksuffix, delete e.showtickprefix), e.showticksuffix || delete e.ticksuffix, e.showtickprefix || delete e.tickprefix, g("tickmode"), e ); }; }, { "../../components/color": 367, "../../lib": 515, "../../plots/cartesian/axis_autotype": 567, "../../plots/cartesian/category_order_defaults": 571, "../../plots/cartesian/prefix_suffix_defaults": 583, "../../plots/cartesian/set_convert": 585, "../../plots/cartesian/tick_label_defaults": 587, "../../plots/cartesian/tick_value_defaults": 589, "../../registry": 647, "./attributes": 700, }, ], 704: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../../lib").isArray1D, a = t("./cheater_basis"), o = t("./array_minmax"), s = t("./calc_gridlines"), l = t("./calc_labels"), c = t("./calc_clippath"), u = t("../heatmap/clean_2d_array"), f = t("./smooth_fill_2d_array"), h = t("../heatmap/convert_column_xyz"), p = t("./set_convert"); e.exports = function (t, e) { var r = n.getFromId(t, e.xaxis), d = n.getFromId(t, e.yaxis), m = e.aaxis, g = e.baxis, v = e.x, y = e.y, x = []; v && i(v) && x.push("x"), y && i(y) && x.push("y"), x.length && h(e, m, g, "a", "b", x); var b = (e._a = e._a || e.a), _ = (e._b = e._b || e.b); (v = e._x || e.x), (y = e._y || e.y); var w = {}; if (e._cheater) { var T = "index" === m.cheatertype ? b.length : b, k = "index" === g.cheatertype ? _.length : _; v = a(T, k, e.cheaterslope); } (e._x = v = u(v)), (e._y = y = u(y)), f(v, b, _), f(y, b, _), p(e), e.setScale(); var A = o(v), M = o(y), S = 0.5 * (A[1] - A[0]), E = 0.5 * (A[1] + A[0]), L = 0.5 * (M[1] - M[0]), C = 0.5 * (M[1] + M[0]); return ( (A = [E - 1.3 * S, E + 1.3 * S]), (M = [C - 1.3 * L, C + 1.3 * L]), (e._extremes[r._id] = n.findExtremes(r, A, { padded: !0, })), (e._extremes[d._id] = n.findExtremes(d, M, { padded: !0, })), s(e, "a", "b"), s(e, "b", "a"), l(e, m), l(e, g), (w.clipsegments = c(e._xctrl, e._yctrl, m, g)), (w.x = v), (w.y = y), (w.a = b), (w.b = _), [w] ); }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "../heatmap/clean_2d_array": 803, "../heatmap/convert_column_xyz": 805, "./array_minmax": 699, "./calc_clippath": 705, "./calc_gridlines": 706, "./calc_labels": 707, "./cheater_basis": 709, "./set_convert": 722, "./smooth_fill_2d_array": 723, }, ], 705: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n) { var i, a, o, s = [], l = !!r.smoothing, c = !!n.smoothing, u = t[0].length - 1, f = t.length - 1; for (i = 0, a = [], o = []; i <= u; i++) (a[i] = t[0][i]), (o[i] = e[0][i]); for ( s.push({ x: a, y: o, bicubic: l }), i = 0, a = [], o = []; i <= f; i++ ) (a[i] = t[i][u]), (o[i] = e[i][u]); for ( s.push({ x: a, y: o, bicubic: c }), i = u, a = [], o = []; i >= 0; i-- ) (a[u - i] = t[f][i]), (o[u - i] = e[f][i]); for ( s.push({ x: a, y: o, bicubic: l }), i = f, a = [], o = []; i >= 0; i-- ) (a[f - i] = t[i][0]), (o[f - i] = e[i][0]); return s.push({ x: a, y: o, bicubic: c }), s; }; }, {}, ], 706: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../../lib/extend").extendFlat; e.exports = function (t, e, r) { var a, o, s, l, c, u, f, h, p, d, m, g, v, y, x = t["_" + e], b = t[e + "axis"], _ = (b._gridlines = []), w = (b._minorgridlines = []), T = (b._boundarylines = []), k = t["_" + r], A = t[r + "axis"]; "array" === b.tickmode && (b.tickvals = x.slice()); var M = t._xctrl, S = t._yctrl, E = M[0].length, L = M.length, C = t._a.length, P = t._b.length; n.prepTicks(b), "array" === b.tickmode && delete b.tickvals; var I = b.smoothing ? 3 : 1; function O(n) { var i, a, o, s, l, c, u, f, p, d, m, g, v = [], y = [], x = {}; if ("b" === e) for ( a = t.b2j(n), o = Math.floor(Math.max(0, Math.min(P - 2, a))), s = a - o, x.length = P, x.crossLength = C, x.xy = function (e) { return t.evalxy([], e, a); }, x.dxy = function (e, r) { return t.dxydi([], e, o, r, s); }, i = 0; i < C; i++ ) (c = Math.min(C - 2, i)), (u = i - c), (f = t.evalxy([], i, a)), A.smoothing && i > 0 && ((p = t.dxydi([], i - 1, o, 0, s)), v.push(l[0] + p[0] / 3), y.push(l[1] + p[1] / 3), (d = t.dxydi([], i - 1, o, 1, s)), v.push(f[0] - d[0] / 3), y.push(f[1] - d[1] / 3)), v.push(f[0]), y.push(f[1]), (l = f); else for ( i = t.a2i(n), c = Math.floor(Math.max(0, Math.min(C - 2, i))), u = i - c, x.length = C, x.crossLength = P, x.xy = function (e) { return t.evalxy([], i, e); }, x.dxy = function (e, r) { return t.dxydj([], c, e, u, r); }, a = 0; a < P; a++ ) (o = Math.min(P - 2, a)), (s = a - o), (f = t.evalxy([], i, a)), A.smoothing && a > 0 && ((m = t.dxydj([], c, a - 1, u, 0)), v.push(l[0] + m[0] / 3), y.push(l[1] + m[1] / 3), (g = t.dxydj([], c, a - 1, u, 1)), v.push(f[0] - g[0] / 3), y.push(f[1] - g[1] / 3)), v.push(f[0]), y.push(f[1]), (l = f); return ( (x.axisLetter = e), (x.axis = b), (x.crossAxis = A), (x.value = n), (x.constvar = r), (x.index = h), (x.x = v), (x.y = y), (x.smoothing = A.smoothing), x ); } function z(n) { var i, a, o, s, l, c = [], u = [], f = {}; if ( ((f.length = x.length), (f.crossLength = k.length), "b" === e) ) for ( o = Math.max(0, Math.min(P - 2, n)), l = Math.min(1, Math.max(0, n - o)), f.xy = function (e) { return t.evalxy([], e, n); }, f.dxy = function (e, r) { return t.dxydi([], e, o, r, l); }, i = 0; i < E; i++ ) (c[i] = M[n * I][i]), (u[i] = S[n * I][i]); else for ( a = Math.max(0, Math.min(C - 2, n)), s = Math.min(1, Math.max(0, n - a)), f.xy = function (e) { return t.evalxy([], n, e); }, f.dxy = function (e, r) { return t.dxydj([], a, e, s, r); }, i = 0; i < L; i++ ) (c[i] = M[i][n * I]), (u[i] = S[i][n * I]); return ( (f.axisLetter = e), (f.axis = b), (f.crossAxis = A), (f.value = x[n]), (f.constvar = r), (f.index = n), (f.x = c), (f.y = u), (f.smoothing = A.smoothing), f ); } if ("array" === b.tickmode) { for ( l = 5e-15, u = (c = [ Math.floor( ((x.length - 1 - b.arraytick0) / b.arraydtick) * (1 + l), ), Math.ceil(-b.arraytick0 / b.arraydtick / (1 + l)), ].sort(function (t, e) { return t - e; }))[0] - 1, f = c[1] + 1, h = u; h < f; h++ ) (o = b.arraytick0 + b.arraydtick * h) < 0 || o > x.length - 1 || _.push( i(z(o), { color: b.gridcolor, width: b.gridwidth, dash: b.griddash, }), ); for (h = u; h < f; h++) if ( ((s = b.arraytick0 + b.arraydtick * h), (m = Math.min(s + b.arraydtick, x.length - 1)), !( s < 0 || s > x.length - 1 || m < 0 || m > x.length - 1 )) ) for ( g = x[s], v = x[m], a = 0; a < b.minorgridcount; a++ ) (y = m - s) <= 0 || (d = g + (((v - g) * (a + 1)) / (b.minorgridcount + 1)) * (b.arraydtick / y)) < x[0] || d > x[x.length - 1] || w.push( i(O(d), { color: b.minorgridcolor, width: b.minorgridwidth, dash: b.minorgriddash, }), ); b.startline && T.push( i(z(0), { color: b.startlinecolor, width: b.startlinewidth, }), ), b.endline && T.push( i(z(x.length - 1), { color: b.endlinecolor, width: b.endlinewidth, }), ); } else { for ( l = 5e-15, u = (c = [ Math.floor( ((x[x.length - 1] - b.tick0) / b.dtick) * (1 + l), ), Math.ceil((x[0] - b.tick0) / b.dtick / (1 + l)), ].sort(function (t, e) { return t - e; }))[0], f = c[1], h = u; h <= f; h++ ) (p = b.tick0 + b.dtick * h), _.push( i(O(p), { color: b.gridcolor, width: b.gridwidth, dash: b.griddash, }), ); for (h = u - 1; h < f + 1; h++) for ( p = b.tick0 + b.dtick * h, a = 0; a < b.minorgridcount; a++ ) (d = p + (b.dtick * (a + 1)) / (b.minorgridcount + 1)) < x[0] || d > x[x.length - 1] || w.push( i(O(d), { color: b.minorgridcolor, width: b.minorgridwidth, dash: b.minorgriddash, }), ); b.startline && T.push( i(O(x[0]), { color: b.startlinecolor, width: b.startlinewidth, }), ), b.endline && T.push( i(O(x[x.length - 1]), { color: b.endlinecolor, width: b.endlinewidth, }), ); } }; }, { "../../lib/extend": 505, "../../plots/cartesian/axes": 566 }, ], 707: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../../lib/extend").extendFlat; e.exports = function (t, e) { var r, a, o, s = (e._labels = []), l = e._gridlines; for (r = 0; r < l.length; r++) (o = l[r]), -1 !== ["start", "both"].indexOf(e.showticklabels) && ((a = n.tickText(e, o.value)), i(a, { prefix: void 0, suffix: void 0, endAnchor: !0, xy: o.xy(0), dxy: o.dxy(0, 0), axis: o.axis, length: o.crossAxis.length, font: o.axis.tickfont, isFirst: 0 === r, isLast: r === l.length - 1, }), s.push(a)), -1 !== ["end", "both"].indexOf(e.showticklabels) && ((a = n.tickText(e, o.value)), i(a, { endAnchor: !1, xy: o.xy(o.crossLength - 1), dxy: o.dxy(o.crossLength - 2, 1), axis: o.axis, length: o.crossAxis.length, font: o.axis.tickfont, isFirst: 0 === r, isLast: r === l.length - 1, }), s.push(a)); }; }, { "../../lib/extend": 505, "../../plots/cartesian/axes": 566 }, ], 708: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n) { var i = t[0] - e[0], a = t[1] - e[1], o = r[0] - e[0], s = r[1] - e[1], l = Math.pow(i * i + a * a, 0.25), c = Math.pow(o * o + s * s, 0.25), u = (c * c * i - l * l * o) * n, f = (c * c * a - l * l * s) * n, h = c * (l + c) * 3, p = l * (l + c) * 3; return [ [e[0] + (h && u / h), e[1] + (h && f / h)], [e[0] - (p && u / p), e[1] - (p && f / p)], ]; }; }, {}, ], 709: [ function (t, e, r) { "use strict"; var n = t("../../lib").isArrayOrTypedArray; e.exports = function (t, e, r) { var i, a, o, s, l, c, u = [], f = n(t) ? t.length : t, h = n(e) ? e.length : e, p = n(t) ? t : null, d = n(e) ? e : null; p && (o = (p.length - 1) / (p[p.length - 1] - p[0]) / (f - 1)), d && (s = (d.length - 1) / (d[d.length - 1] - d[0]) / (h - 1)); var m = 1 / 0, g = -1 / 0; for (a = 0; a < h; a++) for ( u[a] = [], l = d ? (d[a] - d[0]) * s : a / (h - 1), i = 0; i < f; i++ ) (c = (p ? (p[i] - p[0]) * o : i / (f - 1)) - l * r), (m = Math.min(c, m)), (g = Math.max(c, g)), (u[a][i] = c); var v = 1 / (g - m), y = -m * v; for (a = 0; a < h; a++) for (i = 0; i < f; i++) u[a][i] = v * u[a][i] + y; return u; }; }, { "../../lib": 515 }, ], 710: [ function (t, e, r) { "use strict"; var n = t("./catmull_rom"), i = t("../../lib").ensureArray; function a(t, e, r) { var n = -0.5 * r[0] + 1.5 * e[0], i = -0.5 * r[1] + 1.5 * e[1]; return [(2 * n + t[0]) / 3, (2 * i + t[1]) / 3]; } e.exports = function (t, e, r, o, s, l) { var c, u, f, h, p, d, m, g, v, y, x = r[0].length, b = r.length, _ = s ? 3 * x - 2 : x, w = l ? 3 * b - 2 : b; for (t = i(t, w), e = i(e, w), f = 0; f < w; f++) (t[f] = i(t[f], _)), (e[f] = i(e[f], _)); for (u = 0, h = 0; u < b; u++, h += l ? 3 : 1) for ( p = t[h], d = e[h], m = r[u], g = o[u], c = 0, f = 0; c < x; c++, f += s ? 3 : 1 ) (p[f] = m[c]), (d[f] = g[c]); if (s) for (u = 0, h = 0; u < b; u++, h += l ? 3 : 1) { for (c = 1, f = 3; c < x - 1; c++, f += 3) (v = n( [r[u][c - 1], o[u][c - 1]], [r[u][c], o[u][c]], [r[u][c + 1], o[u][c + 1]], s, )), (t[h][f - 1] = v[0][0]), (e[h][f - 1] = v[0][1]), (t[h][f + 1] = v[1][0]), (e[h][f + 1] = v[1][1]); (y = a( [t[h][0], e[h][0]], [t[h][2], e[h][2]], [t[h][3], e[h][3]], )), (t[h][1] = y[0]), (e[h][1] = y[1]), (y = a( [t[h][_ - 1], e[h][_ - 1]], [t[h][_ - 3], e[h][_ - 3]], [t[h][_ - 4], e[h][_ - 4]], )), (t[h][_ - 2] = y[0]), (e[h][_ - 2] = y[1]); } if (l) for (f = 0; f < _; f++) { for (h = 3; h < w - 3; h += 3) (v = n( [t[h - 3][f], e[h - 3][f]], [t[h][f], e[h][f]], [t[h + 3][f], e[h + 3][f]], l, )), (t[h - 1][f] = v[0][0]), (e[h - 1][f] = v[0][1]), (t[h + 1][f] = v[1][0]), (e[h + 1][f] = v[1][1]); (y = a( [t[0][f], e[0][f]], [t[2][f], e[2][f]], [t[3][f], e[3][f]], )), (t[1][f] = y[0]), (e[1][f] = y[1]), (y = a( [t[w - 1][f], e[w - 1][f]], [t[w - 3][f], e[w - 3][f]], [t[w - 4][f], e[w - 4][f]], )), (t[w - 2][f] = y[0]), (e[w - 2][f] = y[1]); } if (s && l) for (h = 1; h < w; h += (h + 1) % 3 == 0 ? 2 : 1) { for (f = 3; f < _ - 3; f += 3) (v = n( [t[h][f - 3], e[h][f - 3]], [t[h][f], e[h][f]], [t[h][f + 3], e[h][f + 3]], s, )), (t[h][f - 1] = 0.5 * (t[h][f - 1] + v[0][0])), (e[h][f - 1] = 0.5 * (e[h][f - 1] + v[0][1])), (t[h][f + 1] = 0.5 * (t[h][f + 1] + v[1][0])), (e[h][f + 1] = 0.5 * (e[h][f + 1] + v[1][1])); (y = a( [t[h][0], e[h][0]], [t[h][2], e[h][2]], [t[h][3], e[h][3]], )), (t[h][1] = 0.5 * (t[h][1] + y[0])), (e[h][1] = 0.5 * (e[h][1] + y[1])), (y = a( [t[h][_ - 1], e[h][_ - 1]], [t[h][_ - 3], e[h][_ - 3]], [t[h][_ - 4], e[h][_ - 4]], )), (t[h][_ - 2] = 0.5 * (t[h][_ - 2] + y[0])), (e[h][_ - 2] = 0.5 * (e[h][_ - 2] + y[1])); } return [t, e]; }; }, { "../../lib": 515, "./catmull_rom": 708 }, ], 711: [ function (t, e, r) { "use strict"; e.exports = { RELATIVE_CULL_TOLERANCE: 1e-6 }; }, {}, ], 712: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { return e && r ? function (e, r, n, i, a) { var o, s, l, c, u, f; e || (e = []), (r *= 3), (n *= 3); var h = i * i, p = 1 - i, d = p * p, m = p * i * 2, g = -3 * d, v = 3 * (d - m), y = 3 * (m - h), x = 3 * h, b = a * a, _ = b * a, w = 1 - a, T = w * w, k = T * w; for (f = 0; f < t.length; f++) (o = g * (u = t[f])[n][r] + v * u[n][r + 1] + y * u[n][r + 2] + x * u[n][r + 3]), (s = g * u[n + 1][r] + v * u[n + 1][r + 1] + y * u[n + 1][r + 2] + x * u[n + 1][r + 3]), (l = g * u[n + 2][r] + v * u[n + 2][r + 1] + y * u[n + 2][r + 2] + x * u[n + 2][r + 3]), (c = g * u[n + 3][r] + v * u[n + 3][r + 1] + y * u[n + 3][r + 2] + x * u[n + 3][r + 3]), (e[f] = k * o + 3 * (T * a * s + w * b * l) + _ * c); return e; } : e ? function (e, r, n, i, a) { var o, s, l, c; e || (e = []), (r *= 3); var u = i * i, f = 1 - i, h = f * f, p = f * i * 2, d = -3 * h, m = 3 * (h - p), g = 3 * (p - u), v = 3 * u, y = 1 - a; for (l = 0; l < t.length; l++) (o = d * (c = t[l])[n][r] + m * c[n][r + 1] + g * c[n][r + 2] + v * c[n][r + 3]), (s = d * c[n + 1][r] + m * c[n + 1][r + 1] + g * c[n + 1][r + 2] + v * c[n + 1][r + 3]), (e[l] = y * o + a * s); return e; } : r ? function (e, r, n, i, a) { var o, s, l, c, u, f; e || (e = []), (n *= 3); var h = a * a, p = h * a, d = 1 - a, m = d * d, g = m * d; for (u = 0; u < t.length; u++) (o = (f = t[u])[n][r + 1] - f[n][r]), (s = f[n + 1][r + 1] - f[n + 1][r]), (l = f[n + 2][r + 1] - f[n + 2][r]), (c = f[n + 3][r + 1] - f[n + 3][r]), (e[u] = g * o + 3 * (m * a * s + d * h * l) + p * c); return e; } : function (e, r, n, i, a) { var o, s, l, c; e || (e = []); var u = 1 - a; for (l = 0; l < t.length; l++) (o = (c = t[l])[n][r + 1] - c[n][r]), (s = c[n + 1][r + 1] - c[n + 1][r]), (e[l] = u * o + a * s); return e; }; }; }, {}, ], 713: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { return e && r ? function (e, r, n, i, a) { var o, s, l, c, u, f; e || (e = []), (r *= 3), (n *= 3); var h = i * i, p = h * i, d = 1 - i, m = d * d, g = m * d, v = a * a, y = 1 - a, x = y * y, b = y * a * 2, _ = -3 * x, w = 3 * (x - b), T = 3 * (b - v), k = 3 * v; for (f = 0; f < t.length; f++) (o = _ * (u = t[f])[n][r] + w * u[n + 1][r] + T * u[n + 2][r] + k * u[n + 3][r]), (s = _ * u[n][r + 1] + w * u[n + 1][r + 1] + T * u[n + 2][r + 1] + k * u[n + 3][r + 1]), (l = _ * u[n][r + 2] + w * u[n + 1][r + 2] + T * u[n + 2][r + 2] + k * u[n + 3][r + 2]), (c = _ * u[n][r + 3] + w * u[n + 1][r + 3] + T * u[n + 2][r + 3] + k * u[n + 3][r + 3]), (e[f] = g * o + 3 * (m * i * s + d * h * l) + p * c); return e; } : e ? function (e, r, n, i, a) { var o, s, l, c, u, f; e || (e = []), (r *= 3); var h = a * a, p = h * a, d = 1 - a, m = d * d, g = m * d; for (u = 0; u < t.length; u++) (o = (f = t[u])[n + 1][r] - f[n][r]), (s = f[n + 1][r + 1] - f[n][r + 1]), (l = f[n + 1][r + 2] - f[n][r + 2]), (c = f[n + 1][r + 3] - f[n][r + 3]), (e[u] = g * o + 3 * (m * a * s + d * h * l) + p * c); return e; } : r ? function (e, r, n, i, a) { var o, s, l, c; e || (e = []), (n *= 3); var u = 1 - i, f = a * a, h = 1 - a, p = h * h, d = h * a * 2, m = -3 * p, g = 3 * (p - d), v = 3 * (d - f), y = 3 * f; for (l = 0; l < t.length; l++) (o = m * (c = t[l])[n][r] + g * c[n + 1][r] + v * c[n + 2][r] + y * c[n + 3][r]), (s = m * c[n][r + 1] + g * c[n + 1][r + 1] + v * c[n + 2][r + 1] + y * c[n + 3][r + 1]), (e[l] = u * o + i * s); return e; } : function (e, r, n, i, a) { var o, s, l, c; e || (e = []); var u = 1 - i; for (l = 0; l < t.length; l++) (o = (c = t[l])[n + 1][r] - c[n][r]), (s = c[n + 1][r + 1] - c[n][r + 1]), (e[l] = u * o + i * s); return e; }; }; }, {}, ], 714: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n, i) { var a = e - 2, o = r - 2; return n && i ? function (e, r, n) { var i, s, l, c, u, f; e || (e = []); var h = Math.max(0, Math.min(Math.floor(r), a)), p = Math.max(0, Math.min(Math.floor(n), o)), d = Math.max(0, Math.min(1, r - h)), m = Math.max(0, Math.min(1, n - p)); (h *= 3), (p *= 3); var g = d * d, v = g * d, y = 1 - d, x = y * y, b = x * y, _ = m * m, w = _ * m, T = 1 - m, k = T * T, A = k * T; for (f = 0; f < t.length; f++) (i = b * (u = t[f])[p][h] + 3 * (x * d * u[p][h + 1] + y * g * u[p][h + 2]) + v * u[p][h + 3]), (s = b * u[p + 1][h] + 3 * (x * d * u[p + 1][h + 1] + y * g * u[p + 1][h + 2]) + v * u[p + 1][h + 3]), (l = b * u[p + 2][h] + 3 * (x * d * u[p + 2][h + 1] + y * g * u[p + 2][h + 2]) + v * u[p + 2][h + 3]), (c = b * u[p + 3][h] + 3 * (x * d * u[p + 3][h + 1] + y * g * u[p + 3][h + 2]) + v * u[p + 3][h + 3]), (e[f] = A * i + 3 * (k * m * s + T * _ * l) + w * c); return e; } : n ? function (e, r, n) { e || (e = []); var i, s, l, c, u, f, h = Math.max(0, Math.min(Math.floor(r), a)), p = Math.max(0, Math.min(Math.floor(n), o)), d = Math.max(0, Math.min(1, r - h)), m = Math.max(0, Math.min(1, n - p)); h *= 3; var g = d * d, v = g * d, y = 1 - d, x = y * y, b = x * y, _ = 1 - m; for (u = 0; u < t.length; u++) (i = _ * (f = t[u])[p][h] + m * f[p + 1][h]), (s = _ * f[p][h + 1] + m * f[p + 1][h + 1]), (l = _ * f[p][h + 2] + m * f[p + 1][h + 1]), (c = _ * f[p][h + 3] + m * f[p + 1][h + 1]), (e[u] = b * i + 3 * (x * d * s + y * g * l) + v * c); return e; } : i ? function (e, r, n) { e || (e = []); var i, s, l, c, u, f, h = Math.max(0, Math.min(Math.floor(r), a)), p = Math.max(0, Math.min(Math.floor(n), o)), d = Math.max(0, Math.min(1, r - h)), m = Math.max(0, Math.min(1, n - p)); p *= 3; var g = m * m, v = g * m, y = 1 - m, x = y * y, b = x * y, _ = 1 - d; for (u = 0; u < t.length; u++) (i = _ * (f = t[u])[p][h] + d * f[p][h + 1]), (s = _ * f[p + 1][h] + d * f[p + 1][h + 1]), (l = _ * f[p + 2][h] + d * f[p + 2][h + 1]), (c = _ * f[p + 3][h] + d * f[p + 3][h + 1]), (e[u] = b * i + 3 * (x * m * s + y * g * l) + v * c); return e; } : function (e, r, n) { e || (e = []); var i, s, l, c, u = Math.max(0, Math.min(Math.floor(r), a)), f = Math.max(0, Math.min(Math.floor(n), o)), h = Math.max(0, Math.min(1, r - u)), p = Math.max(0, Math.min(1, n - f)), d = 1 - p, m = 1 - h; for (l = 0; l < t.length; l++) (i = m * (c = t[l])[f][u] + h * c[f][u + 1]), (s = m * c[f + 1][u] + h * c[f + 1][u + 1]), (e[l] = d * i + p * s); return e; }; }; }, {}, ], 715: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./xy_defaults"), a = t("./ab_defaults"), o = t("./attributes"), s = t("../../components/color/attributes"); e.exports = function (t, e, r, l) { function c(r, i) { return n.coerce(t, e, o, r, i); } e._clipPathId = "clip" + e.uid + "carpet"; var u = c("color", s.defaultLine); (n.coerceFont(c, "font"), c("carpet"), a(t, e, l, c, u), e.a && e.b) ? (e.a.length < 3 && (e.aaxis.smoothing = 0), e.b.length < 3 && (e.baxis.smoothing = 0), i(t, e, c) || (e.visible = !1), e._cheater && c("cheaterslope")) : (e.visible = !1); }; }, { "../../components/color/attributes": 366, "../../lib": 515, "./ab_defaults": 698, "./attributes": 700, "./xy_defaults": 724, }, ], 716: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), plot: t("./plot"), calc: t("./calc"), animatable: !0, isContainer: !0, moduleType: "trace", name: "carpet", basePlotModule: t("../../plots/cartesian"), categories: [ "cartesian", "svg", "carpet", "carpetAxis", "notLegendIsolatable", "noMultiCategory", "noHover", "noSortingByValue", ], meta: {}, }; }, { "../../plots/cartesian": 578, "./attributes": 700, "./calc": 704, "./defaults": 715, "./plot": 721, }, ], 717: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { for (var r, n = t._fullData.length, i = 0; i < n; i++) { var a = t._fullData[i]; if ( a.index !== e.index && "carpet" === a.type && (r || (r = a), a.carpet === e.carpet) ) return a; } return r; }; }, {}, ], 718: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { if (0 === t.length) return ""; var n, i = [], a = r ? 3 : 1; for (n = 0; n < t.length; n += a) i.push(t[n] + "," + e[n]), r && n < t.length - a && (i.push("C"), i.push( [ t[n + 1] + "," + e[n + 1], t[n + 2] + "," + e[n + 2] + " ", ].join(" "), )); return i.join(r ? "" : "L"); }; }, {}, ], 719: [ function (t, e, r) { "use strict"; var n = t("../../lib").isArrayOrTypedArray; e.exports = function (t, e, r) { var i; for ( n(t) ? t.length > e.length && (t = t.slice(0, e.length)) : (t = []), i = 0; i < e.length; i++ ) t[i] = r(e[i]); return t; }; }, { "../../lib": 515 }, ], 720: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n, i, a) { var o = i[0] * t.dpdx(e), s = i[1] * t.dpdy(r), l = 1, c = 1; if (a) { var u = Math.sqrt(i[0] * i[0] + i[1] * i[1]), f = Math.sqrt(a[0] * a[0] + a[1] * a[1]), h = (i[0] * a[0] + i[1] * a[1]) / u / f; c = Math.max(0, h); } var p = (180 * Math.atan2(s, o)) / Math.PI; return ( p < -90 ? ((p += 180), (l = -l)) : p > 90 && ((p -= 180), (l = -l)), { angle: p, flip: l, p: t.c2p(n, e, r), offsetMultplier: c, } ); }; }, {}, ], 721: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/drawing"), a = t("./map_1d_array"), o = t("./makepath"), s = t("./orient_text"), l = t("../../lib/svg_text_utils"), c = t("../../lib"), u = c.strRotate, f = c.strTranslate, h = t("../../constants/alignment"); function p(t, e, r, s, l, c) { var u = "const-" + l + "-lines", f = r.selectAll("." + u).data(c); f .enter() .append("path") .classed(u, !0) .style("vector-effect", "non-scaling-stroke"), f.each(function (r) { var s = r, l = s.x, c = s.y, u = a([], l, t.c2p), f = a([], c, e.c2p), h = "M" + o(u, f, s.smoothing); n.select(this) .attr("d", h) .style("stroke-width", s.width) .style("stroke", s.color) .style( "stroke-dasharray", i.dashStyle(s.dash, s.width), ) .style("fill", "none"); }), f.exit().remove(); } function d(t, e, r, a, o, c, h, p) { var d = c.selectAll("text." + p).data(h); d.enter().append("text").classed(p, !0); var m = 0, g = {}; return ( d.each(function (o, c) { var h; if ("auto" === o.axis.tickangle) h = s(a, e, r, o.xy, o.dxy); else { var p = ((o.axis.tickangle + 180) * Math.PI) / 180; h = s(a, e, r, o.xy, [Math.cos(p), Math.sin(p)]); } c || (g = { angle: h.angle, flip: h.flip }); var d = (o.endAnchor ? -1 : 1) * h.flip, v = n .select(this) .attr({ "text-anchor": d > 0 ? "start" : "end", "data-notex": 1, }) .call(i.font, o.font) .text(o.text) .call(l.convertToTspans, t), y = i.bBox(this); v.attr( "transform", f(h.p[0], h.p[1]) + u(h.angle) + f(o.axis.labelpadding * d, 0.3 * y.height), ), (m = Math.max(m, y.width + o.axis.labelpadding)); }), d.exit().remove(), (g.maxExtent = m), g ); } e.exports = function (t, e, r, i) { var l = e.xaxis, u = e.yaxis, f = t._fullLayout._clips; c.makeTraceGroups(i, r, "trace").each(function (e) { var r = n.select(this), i = e[0], h = i.trace, m = h.aaxis, g = h.baxis, y = c.ensureSingle(r, "g", "minorlayer"), x = c.ensureSingle(r, "g", "majorlayer"), b = c.ensureSingle(r, "g", "boundarylayer"), _ = c.ensureSingle(r, "g", "labellayer"); r.style("opacity", h.opacity), p(l, u, x, m, "a", m._gridlines), p(l, u, x, g, "b", g._gridlines), p(l, u, y, m, "a", m._minorgridlines), p(l, u, y, g, "b", g._minorgridlines), p(l, u, b, m, "a-boundary", m._boundarylines), p(l, u, b, g, "b-boundary", g._boundarylines); var w = d(t, l, u, h, i, _, m._labels, "a-label"), T = d(t, l, u, h, i, _, g._labels, "b-label"); !(function (t, e, r, n, i, a, o, l) { var u, f, h, p, d = c.aggNums(Math.min, null, r.a), m = c.aggNums(Math.max, null, r.a), g = c.aggNums(Math.min, null, r.b), y = c.aggNums(Math.max, null, r.b); (u = 0.5 * (d + m)), (f = g), (h = r.ab2xy(u, f, !0)), (p = r.dxyda_rough(u, f)), void 0 === o.angle && c.extendFlat(o, s(r, i, a, h, r.dxydb_rough(u, f))); v(t, e, r, n, h, p, r.aaxis, i, a, o, "a-title"), (u = d), (f = 0.5 * (g + y)), (h = r.ab2xy(u, f, !0)), (p = r.dxydb_rough(u, f)), void 0 === l.angle && c.extendFlat(l, s(r, i, a, h, r.dxyda_rough(u, f))); v(t, e, r, n, h, p, r.baxis, i, a, l, "b-title"); })(t, _, h, i, l, u, w, T), (function (t, e, r, n, i) { var s, l, u, f, h = r.select("#" + t._clipPathId); h.size() || (h = r .append("clipPath") .classed("carpetclip", !0)); var p = c.ensureSingle(h, "path", "carpetboundary"), d = e.clipsegments, m = []; for (f = 0; f < d.length; f++) (s = d[f]), (l = a([], s.x, n.c2p)), (u = a([], s.y, i.c2p)), m.push(o(l, u, s.bicubic)); var g = "M" + m.join("L") + "Z"; h.attr("id", t._clipPathId), p.attr("d", g); })(h, i, f, l, u); }); }; var m = h.LINE_SPACING, g = (1 - h.MID_SHIFT) / m + 1; function v(t, e, r, a, o, c, h, p, d, v, y) { var x = []; h.title.text && x.push(h.title.text); var b = e.selectAll("text." + y).data(x), _ = v.maxExtent; b.enter().append("text").classed(y, !0), b.each(function () { var e = s(r, p, d, o, c); -1 === ["start", "both"].indexOf(h.showticklabels) && (_ = 0); var a = h.title.font.size; _ += a + h.title.offset; var y = (v.angle + (v.flip < 0 ? 180 : 0) - e.angle + 450) % 360, x = y > 90 && y < 270, b = n.select(this); b.text(h.title.text).call(l.convertToTspans, t), x && (_ = (-l.lineCount(b) + g) * m * a - _), b .attr( "transform", f(e.p[0], e.p[1]) + u(e.angle) + f(0, _), ) .attr("text-anchor", "middle") .call(i.font, h.title.font); }), b.exit().remove(); } }, { "../../components/drawing": 389, "../../constants/alignment": 483, "../../lib": 515, "../../lib/svg_text_utils": 541, "./makepath": 718, "./map_1d_array": 719, "./orient_text": 720, "@plotly/d3": 58, }, ], 722: [ function (t, e, r) { "use strict"; var n = t("./constants"), i = t("../../lib/search").findBin, a = t("./compute_control_points"), o = t("./create_spline_evaluator"), s = t("./create_i_derivative_evaluator"), l = t("./create_j_derivative_evaluator"); e.exports = function (t) { var e = t._a, r = t._b, c = e.length, u = r.length, f = t.aaxis, h = t.baxis, p = e[0], d = e[c - 1], m = r[0], g = r[u - 1], v = e[e.length - 1] - e[0], y = r[r.length - 1] - r[0], x = v * n.RELATIVE_CULL_TOLERANCE, b = y * n.RELATIVE_CULL_TOLERANCE; (p -= x), (d += x), (m -= b), (g += b), (t.isVisible = function (t, e) { return t > p && t < d && e > m && e < g; }), (t.isOccluded = function (t, e) { return t < p || t > d || e < m || e > g; }), (t.setScale = function () { var e = t._x, r = t._y, n = a( t._xctrl, t._yctrl, e, r, f.smoothing, h.smoothing, ); (t._xctrl = n[0]), (t._yctrl = n[1]), (t.evalxy = o( [t._xctrl, t._yctrl], c, u, f.smoothing, h.smoothing, )), (t.dxydi = s( [t._xctrl, t._yctrl], f.smoothing, h.smoothing, )), (t.dxydj = l( [t._xctrl, t._yctrl], f.smoothing, h.smoothing, )); }), (t.i2a = function (t) { var r = Math.max(0, Math.floor(t[0]), c - 2), n = t[0] - r; return (1 - n) * e[r] + n * e[r + 1]; }), (t.j2b = function (t) { var e = Math.max(0, Math.floor(t[1]), c - 2), n = t[1] - e; return (1 - n) * r[e] + n * r[e + 1]; }), (t.ij2ab = function (e) { return [t.i2a(e[0]), t.j2b(e[1])]; }), (t.a2i = function (t) { var r = Math.max(0, Math.min(i(t, e), c - 2)), n = e[r], a = e[r + 1]; return Math.max( 0, Math.min(c - 1, r + (t - n) / (a - n)), ); }), (t.b2j = function (t) { var e = Math.max(0, Math.min(i(t, r), u - 2)), n = r[e], a = r[e + 1]; return Math.max( 0, Math.min(u - 1, e + (t - n) / (a - n)), ); }), (t.ab2ij = function (e) { return [t.a2i(e[0]), t.b2j(e[1])]; }), (t.i2c = function (e, r) { return t.evalxy([], e, r); }), (t.ab2xy = function (n, i, a) { if ( !a && (n < e[0] || (n > e[c - 1]) | (i < r[0]) || i > r[u - 1]) ) return [!1, !1]; var o = t.a2i(n), s = t.b2j(i), l = t.evalxy([], o, s); if (a) { var f, h, p, d, m = 0, g = 0, v = []; n < e[0] ? ((f = 0), (h = 0), (m = (n - e[0]) / (e[1] - e[0]))) : n > e[c - 1] ? ((f = c - 2), (h = 1), (m = (n - e[c - 1]) / (e[c - 1] - e[c - 2]))) : (h = o - (f = Math.max( 0, Math.min(c - 2, Math.floor(o)), ))), i < r[0] ? ((p = 0), (d = 0), (g = (i - r[0]) / (r[1] - r[0]))) : i > r[u - 1] ? ((p = u - 2), (d = 1), (g = (i - r[u - 1]) / (r[u - 1] - r[u - 2]))) : (d = s - (p = Math.max( 0, Math.min(u - 2, Math.floor(s)), ))), m && (t.dxydi(v, f, p, h, d), (l[0] += v[0] * m), (l[1] += v[1] * m)), g && (t.dxydj(v, f, p, h, d), (l[0] += v[0] * g), (l[1] += v[1] * g)); } return l; }), (t.c2p = function (t, e, r) { return [e.c2p(t[0]), r.c2p(t[1])]; }), (t.p2x = function (t, e, r) { return [e.p2c(t[0]), r.p2c(t[1])]; }), (t.dadi = function (t) { var r = Math.max(0, Math.min(e.length - 2, t)); return e[r + 1] - e[r]; }), (t.dbdj = function (t) { var e = Math.max(0, Math.min(r.length - 2, t)); return r[e + 1] - r[e]; }), (t.dxyda = function (e, r, n, i) { var a = t.dxydi(null, e, r, n, i), o = t.dadi(e, n); return [a[0] / o, a[1] / o]; }), (t.dxydb = function (e, r, n, i) { var a = t.dxydj(null, e, r, n, i), o = t.dbdj(r, i); return [a[0] / o, a[1] / o]; }), (t.dxyda_rough = function (e, r, n) { var i = v * (n || 0.1), a = t.ab2xy(e + i, r, !0), o = t.ab2xy(e - i, r, !0); return [ (0.5 * (a[0] - o[0])) / i, (0.5 * (a[1] - o[1])) / i, ]; }), (t.dxydb_rough = function (e, r, n) { var i = y * (n || 0.1), a = t.ab2xy(e, r + i, !0), o = t.ab2xy(e, r - i, !0); return [ (0.5 * (a[0] - o[0])) / i, (0.5 * (a[1] - o[1])) / i, ]; }), (t.dpdx = function (t) { return t._m; }), (t.dpdy = function (t) { return t._m; }); }; }, { "../../lib/search": 535, "./compute_control_points": 710, "./constants": 711, "./create_i_derivative_evaluator": 712, "./create_j_derivative_evaluator": 713, "./create_spline_evaluator": 714, }, ], 723: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e, r) { var i, a, o, s = [], l = [], c = t[0].length, u = t.length; function f(e, r) { var n, i = 0, a = 0; return ( e > 0 && void 0 !== (n = t[r][e - 1]) && (a++, (i += n)), e < c - 1 && void 0 !== (n = t[r][e + 1]) && (a++, (i += n)), r > 0 && void 0 !== (n = t[r - 1][e]) && (a++, (i += n)), r < u - 1 && void 0 !== (n = t[r + 1][e]) && (a++, (i += n)), i / Math.max(1, a) ); } var h, p, d, m, g, v, y, x, b, _, w, T = 0; for (i = 0; i < c; i++) for (a = 0; a < u; a++) void 0 === t[a][i] && (s.push(i), l.push(a), (t[a][i] = f(i, a))), (T = Math.max(T, Math.abs(t[a][i]))); if (!s.length) return t; var k = 0, A = 0, M = s.length; do { for (k = 0, o = 0; o < M; o++) { (i = s[o]), (a = l[o]); var S, E, L, C, P, I, O = 0, z = 0; 0 === i ? ((L = e[(P = Math.min(c - 1, 2))]), (C = e[1]), (S = t[a][P]), (z += (E = t[a][1]) + ((E - S) * (e[0] - C)) / (C - L)), O++) : i === c - 1 && ((L = e[(P = Math.max(0, c - 3))]), (C = e[c - 2]), (S = t[a][P]), (z += (E = t[a][c - 2]) + ((E - S) * (e[c - 1] - C)) / (C - L)), O++), (0 === i || i === c - 1) && a > 0 && a < u - 1 && ((h = r[a + 1] - r[a]), (z += ((p = r[a] - r[a - 1]) * t[a + 1][i] + h * t[a - 1][i]) / (p + h)), O++), 0 === a ? ((L = r[(I = Math.min(u - 1, 2))]), (C = r[1]), (S = t[I][i]), (z += (E = t[1][i]) + ((E - S) * (r[0] - C)) / (C - L)), O++) : a === u - 1 && ((L = r[(I = Math.max(0, u - 3))]), (C = r[u - 2]), (S = t[I][i]), (z += (E = t[u - 2][i]) + ((E - S) * (r[u - 1] - C)) / (C - L)), O++), (0 === a || a === u - 1) && i > 0 && i < c - 1 && ((h = e[i + 1] - e[i]), (z += ((p = e[i] - e[i - 1]) * t[a][i + 1] + h * t[a][i - 1]) / (p + h)), O++), O ? (z /= O) : ((d = e[i + 1] - e[i]), (m = e[i] - e[i - 1]), (x = (g = r[a + 1] - r[a]) * (v = r[a] - r[a - 1]) * (g + v)), (z = ((y = d * m * (d + m)) * (v * t[a + 1][i] + g * t[a - 1][i]) + x * (m * t[a][i + 1] + d * t[a][i - 1])) / (x * (m + d) + y * (v + g)))), (k += (_ = (b = z - t[a][i]) / T) * _), (w = O ? 0 : 0.85), (t[a][i] += b * (1 + w)); } k = Math.sqrt(k); } while (A++ < 100 && k > 1e-5); return ( n.log( "Smoother converged to", k, "after", A, "iterations", ), t ); }; }, { "../../lib": 515 }, ], 724: [ function (t, e, r) { "use strict"; var n = t("../../lib").isArray1D; e.exports = function (t, e, r) { var i = r("x"), a = i && i.length, o = r("y"), s = o && o.length; if (!a && !s) return !1; if (((e._cheater = !i), (a && !n(i)) || (s && !n(o)))) e._length = null; else { var l = a ? i.length : 1 / 0; s && (l = Math.min(l, o.length)), e.a && e.a.length && (l = Math.min(l, e.a.length)), e.b && e.b.length && (l = Math.min(l, e.b.length)), (e._length = l); } return !0; }; }, { "../../lib": 515 }, ], 725: [ function (t, e, r) { "use strict"; var n = t( "../../plots/template_attributes", ).hovertemplateAttrs, i = t("../scattergeo/attributes"), a = t("../../components/colorscale/attributes"), o = t("../../plots/attributes"), s = t("../../components/color/attributes").defaultLine, l = t("../../lib/extend").extendFlat, c = i.marker.line; e.exports = l( { locations: { valType: "data_array", editType: "calc" }, locationmode: i.locationmode, z: { valType: "data_array", editType: "calc" }, geojson: l({}, i.geojson, {}), featureidkey: i.featureidkey, text: l({}, i.text, {}), hovertext: l({}, i.hovertext, {}), marker: { line: { color: l({}, c.color, { dflt: s }), width: l({}, c.width, { dflt: 1 }), editType: "calc", }, opacity: { valType: "number", arrayOk: !0, min: 0, max: 1, dflt: 1, editType: "style", }, editType: "calc", }, selected: { marker: { opacity: i.selected.marker.opacity, editType: "plot", }, editType: "plot", }, unselected: { marker: { opacity: i.unselected.marker.opacity, editType: "plot", }, editType: "plot", }, hoverinfo: l({}, o.hoverinfo, { editType: "calc", flags: ["location", "z", "text", "name"], }), hovertemplate: n(), showlegend: l({}, o.showlegend, { dflt: !1 }), }, a("", { cLetter: "z", editTypeOverride: "calc" }), ); }, { "../../components/color/attributes": 366, "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/template_attributes": 642, "../scattergeo/attributes": 978, }, ], 726: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../constants/numerical").BADNUM, a = t("../../components/colorscale/calc"), o = t("../scatter/arrays_to_calcdata"), s = t("../scatter/calc_selection"); function l(t) { return t && "string" == typeof t; } e.exports = function (t, e) { var r, c = e._length, u = new Array(c); r = e.geojson ? function (t) { return l(t) || n(t); } : l; for (var f = 0; f < c; f++) { var h = (u[f] = {}), p = e.locations[f], d = e.z[f]; r(p) && n(d) ? ((h.loc = p), (h.z = d)) : ((h.loc = null), (h.z = i)), (h.index = f); } return ( o(u, e), a(t, e, { vals: e.z, containerStr: "", cLetter: "z" }), s(u, e), u ); }; }, { "../../components/colorscale/calc": 375, "../../constants/numerical": 491, "../scatter/arrays_to_calcdata": 935, "../scatter/calc_selection": 938, "fast-isnumeric": 190, }, ], 727: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/colorscale/defaults"), a = t("./attributes"); e.exports = function (t, e, r, o) { function s(r, i) { return n.coerce(t, e, a, r, i); } var l = s("locations"), c = s("z"); if (l && l.length && n.isArrayOrTypedArray(c) && c.length) { e._length = Math.min(l.length, c.length); var u, f = s("geojson"); (("string" == typeof f && "" !== f) || n.isPlainObject(f)) && (u = "geojson-id"), "geojson-id" === s("locationmode", u) && s("featureidkey"), s("text"), s("hovertext"), s("hovertemplate"), s("marker.line.width") && s("marker.line.color"), s("marker.opacity"), i(t, e, o, s, { prefix: "", cLetter: "z" }), n.coerceSelectionMarkerOpacity(e, s); } else e.visible = !1; }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "./attributes": 725, }, ], 728: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n, i) { (t.location = e.location), (t.z = e.z); var a = n[i]; return ( a.fIn && a.fIn.properties && (t.properties = a.fIn.properties), (t.ct = a.ct), t ); }; }, {}, ], 729: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("./attributes"), a = t("../../lib").fillText; e.exports = function (t, e, r) { var o, s, l, c, u = t.cd, f = u[0].trace, h = t.subplot, p = [e, r], d = [e + 360, r]; for (s = 0; s < u.length; s++) if (((c = !1), (o = u[s])._polygons)) { for (l = 0; l < o._polygons.length; l++) o._polygons[l].contains(p) && (c = !c), o._polygons[l].contains(d) && (c = !c); if (c) break; } if (c && o) return ( (t.x0 = t.x1 = t.xa.c2p(o.ct)), (t.y0 = t.y1 = t.ya.c2p(o.ct)), (t.index = o.index), (t.location = o.loc), (t.z = o.z), (t.zLabel = n.tickText( h.mockAxis, h.mockAxis.c2l(o.z), "hover", ).text), (t.hovertemplate = o.hovertemplate), (function (t, e, r) { if (e.hovertemplate) return; var n = r.hi || e.hoverinfo, o = String(r.loc), s = "all" === n ? i.hoverinfo.flags : n.split("+"), l = -1 !== s.indexOf("name"), c = -1 !== s.indexOf("location"), u = -1 !== s.indexOf("z"), f = -1 !== s.indexOf("text"), h = []; !l && c ? (t.nameOverride = o) : (l && (t.nameOverride = e.name), c && h.push(o)); u && h.push(t.zLabel); f && a(r, e, h); t.extraText = h.join("
"); })(t, f, o), [t] ); }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "./attributes": 725, }, ], 730: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../heatmap/colorbar"), calc: t("./calc"), calcGeoJSON: t("./plot").calcGeoJSON, plot: t("./plot").plot, style: t("./style").style, styleOnSelect: t("./style").styleOnSelect, hoverPoints: t("./hover"), eventData: t("./event_data"), selectPoints: t("./select"), moduleType: "trace", name: "choropleth", basePlotModule: t("../../plots/geo"), categories: ["geo", "noOpacity", "showLegend"], meta: {}, }; }, { "../../plots/geo": 598, "../heatmap/colorbar": 804, "./attributes": 725, "./calc": 726, "./defaults": 727, "./event_data": 728, "./hover": 729, "./plot": 731, "./select": 732, "./style": 733, }, ], 731: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../lib/geo_location_utils"), o = t("../../lib/topojson_utils").getTopojsonFeatures, s = t("../../plots/cartesian/autorange").findExtremes, l = t("./style").style; e.exports = { calcGeoJSON: function (t, e) { for ( var r = t[0].trace, n = e[r.geo], i = n._subplot, l = r.locationmode, c = r._length, u = "geojson-id" === l ? a.extractTraceFeature(t) : o(r, i.topojson), f = [], h = [], p = 0; p < c; p++ ) { var d = t[p], m = "geojson-id" === l ? d.fOut : a.locationToFeature(l, d.loc, u); if (m) { (d.geojson = m), (d.ct = m.properties.ct), (d._polygons = a.feature2polygons(m)); var g = a.computeBbox(m); f.push(g[0], g[2]), h.push(g[1], g[3]); } else d.geojson = null; } if ("geojson" === n.fitbounds && "geojson-id" === l) { var v = a.computeBbox(a.getTraceGeojson(r)); (f = [v[0], v[2]]), (h = [v[1], v[3]]); } var y = { padded: !0 }; (r._extremes.lon = s(n.lonaxis._ax, f, y)), (r._extremes.lat = s(n.lataxis._ax, h, y)); }, plot: function (t, e, r) { var a = e.layers.backplot.select(".choroplethlayer"); i.makeTraceGroups(a, r, "trace choropleth").each( function (e) { var r = n .select(this) .selectAll("path.choroplethlocation") .data(i.identity); r .enter() .append("path") .classed("choroplethlocation", !0), r.exit().remove(), l(t, e); }, ); }, }; }, { "../../lib": 515, "../../lib/geo_location_utils": 508, "../../lib/topojson_utils": 544, "../../plots/cartesian/autorange": 565, "./style": 733, "@plotly/d3": 58, }, ], 732: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r, n, i, a, o, s = t.cd, l = t.xaxis, c = t.yaxis, u = []; if (!1 === e) for (r = 0; r < s.length; r++) s[r].selected = 0; else for (r = 0; r < s.length; r++) (i = (n = s[r]).ct) && ((a = l.c2p(i)), (o = c.c2p(i)), e.contains([a, o], null, r, t) ? (u.push({ pointNumber: r, lon: i[0], lat: i[1] }), (n.selected = 1)) : (n.selected = 0)); return u; }; }, {}, ], 733: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/color"), a = t("../../components/drawing"), o = t("../../components/colorscale"); function s(t, e) { var r = e[0].trace, s = e[0].node3.selectAll(".choroplethlocation"), l = r.marker || {}, c = l.line || {}, u = o.makeColorScaleFuncFromTrace(r); s.each(function (t) { n.select(this) .attr("fill", u(t.z)) .call(i.stroke, t.mlc || c.color) .call(a.dashLine, "", t.mlw || c.width || 0) .style("opacity", l.opacity); }), a.selectedPointStyle(s, r); } e.exports = { style: function (t, e) { e && s(t, e); }, styleOnSelect: function (t, e) { var r = e[0].node3, n = e[0].trace; n.selectedpoints ? a.selectedPointStyle( r.selectAll(".choroplethlocation"), n, ) : s(0, e); }, }; }, { "../../components/color": 367, "../../components/colorscale": 379, "../../components/drawing": 389, "@plotly/d3": 58, }, ], 734: [ function (t, e, r) { "use strict"; var n = t("../choropleth/attributes"), i = t("../../components/colorscale/attributes"), a = t("../../plots/template_attributes").hovertemplateAttrs, o = t("../../plots/attributes"), s = t("../../lib/extend").extendFlat; e.exports = s( { locations: { valType: "data_array", editType: "calc" }, z: { valType: "data_array", editType: "calc" }, geojson: { valType: "any", editType: "calc" }, featureidkey: s({}, n.featureidkey, {}), below: { valType: "string", editType: "plot" }, text: n.text, hovertext: n.hovertext, marker: { line: { color: s({}, n.marker.line.color, { editType: "plot", }), width: s({}, n.marker.line.width, { editType: "plot", }), editType: "calc", }, opacity: s({}, n.marker.opacity, { editType: "plot" }), editType: "calc", }, selected: { marker: { opacity: s({}, n.selected.marker.opacity, { editType: "plot", }), editType: "plot", }, editType: "plot", }, unselected: { marker: { opacity: s({}, n.unselected.marker.opacity, { editType: "plot", }), editType: "plot", }, editType: "plot", }, hoverinfo: n.hoverinfo, hovertemplate: a({}, { keys: ["properties"] }), showlegend: s({}, o.showlegend, { dflt: !1 }), }, i("", { cLetter: "z", editTypeOverride: "calc" }), ); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/template_attributes": 642, "../choropleth/attributes": 725, }, ], 735: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("../../components/colorscale"), o = t("../../components/drawing"), s = t("../../lib/geojson_utils").makeBlank, l = t("../../lib/geo_location_utils"); function c(t) { var e, r = t[0].trace, n = r._opts; if (r.selectedpoints) { for ( var a = o.makeSelectedPointStyleFns(r), s = 0; s < t.length; s++ ) { var l = t[s]; l.fOut && (l.fOut.properties.mo2 = a.selectedOpacityFn(l)); } e = { type: "identity", property: "mo2" }; } else e = i.isArrayOrTypedArray(r.marker.opacity) ? { type: "identity", property: "mo" } : r.marker.opacity; return ( i.extendFlat(n.fill.paint, { "fill-opacity": e }), i.extendFlat(n.line.paint, { "line-opacity": e }), n ); } e.exports = { convert: function (t) { var e = t[0].trace, r = !0 === e.visible && 0 !== e._length, o = { layout: { visibility: "none" }, paint: {} }, u = { layout: { visibility: "none" }, paint: {} }, f = (e._opts = { fill: o, line: u, geojson: s() }); if (!r) return f; var h = l.extractTraceFeature(t); if (!h) return f; var p, d, m, g = a.makeColorScaleFuncFromTrace(e), v = e.marker, y = v.line || {}; i.isArrayOrTypedArray(v.opacity) && (p = function (t) { var e = t.mo; return n(e) ? +i.constrain(e, 0, 1) : 0; }), i.isArrayOrTypedArray(y.color) && (d = function (t) { return t.mlc; }), i.isArrayOrTypedArray(y.width) && (m = function (t) { return t.mlw; }); for (var x = 0; x < t.length; x++) { var b = t[x], _ = b.fOut; if (_) { var w = _.properties; (w.fc = g(b.z)), p && (w.mo = p(b)), d && (w.mlc = d(b)), m && (w.mlw = m(b)), (b.ct = w.ct), (b._polygons = l.feature2polygons(_)); } } var T = p ? { type: "identity", property: "mo" } : v.opacity; return ( i.extendFlat(o.paint, { "fill-color": { type: "identity", property: "fc" }, "fill-opacity": T, }), i.extendFlat(u.paint, { "line-color": d ? { type: "identity", property: "mlc" } : y.color, "line-width": m ? { type: "identity", property: "mlw" } : y.width, "line-opacity": T, }), (o.layout.visibility = "visible"), (u.layout.visibility = "visible"), (f.geojson = { type: "FeatureCollection", features: h, }), c(t), f ); }, convertOnSelect: c, }; }, { "../../components/colorscale": 379, "../../components/drawing": 389, "../../lib": 515, "../../lib/geo_location_utils": 508, "../../lib/geojson_utils": 509, "fast-isnumeric": 190, }, ], 736: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/colorscale/defaults"), a = t("./attributes"); e.exports = function (t, e, r, o) { function s(r, i) { return n.coerce(t, e, a, r, i); } var l = s("locations"), c = s("z"), u = s("geojson"); n.isArrayOrTypedArray(l) && l.length && n.isArrayOrTypedArray(c) && c.length && (("string" == typeof u && "" !== u) || n.isPlainObject(u)) ? (s("featureidkey"), (e._length = Math.min(l.length, c.length)), s("below"), s("text"), s("hovertext"), s("hovertemplate"), s("marker.line.width") && s("marker.line.color"), s("marker.opacity"), i(t, e, o, s, { prefix: "", cLetter: "z" }), n.coerceSelectionMarkerOpacity(e, s)) : (e.visible = !1); }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "./attributes": 734, }, ], 737: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../heatmap/colorbar"), calc: t("../choropleth/calc"), plot: t("./plot"), hoverPoints: t("../choropleth/hover"), eventData: t("../choropleth/event_data"), selectPoints: t("../choropleth/select"), styleOnSelect: function (t, e) { e && e[0].trace._glTrace.updateOnSelect(e); }, getBelow: function (t, e) { for ( var r = e.getMapLayers(), n = r.length - 2; n >= 0; n-- ) { var i = r[n].id; if ("string" == typeof i && 0 === i.indexOf("water")) for (var a = n + 1; a < r.length; a++) if ( "string" == typeof (i = r[a].id) && -1 === i.indexOf("plotly-") ) return i; } }, moduleType: "trace", name: "choroplethmapbox", basePlotModule: t("../../plots/mapbox"), categories: ["mapbox", "gl", "noOpacity", "showLegend"], meta: { hr_name: "choropleth_mapbox" }, }; }, { "../../plots/mapbox": 622, "../choropleth/calc": 726, "../choropleth/event_data": 728, "../choropleth/hover": 729, "../choropleth/select": 732, "../heatmap/colorbar": 804, "./attributes": 734, "./defaults": 736, "./plot": 738, }, ], 738: [ function (t, e, r) { "use strict"; var n = t("./convert").convert, i = t("./convert").convertOnSelect, a = t("../../plots/mapbox/constants").traceLayerPrefix; function o(t, e) { (this.type = "choroplethmapbox"), (this.subplot = t), (this.uid = e), (this.sourceId = "source-" + e), (this.layerList = [ ["fill", a + e + "-fill"], ["line", a + e + "-line"], ]), (this.below = null); } var s = o.prototype; (s.update = function (t) { this._update(n(t)), (t[0].trace._glTrace = this); }), (s.updateOnSelect = function (t) { this._update(i(t)); }), (s._update = function (t) { var e = this.subplot, r = this.layerList, n = e.belowLookup["trace-" + this.uid]; e.map.getSource(this.sourceId).setData(t.geojson), n !== this.below && (this._removeLayers(), this._addLayers(t, n), (this.below = n)); for (var i = 0; i < r.length; i++) { var a = r[i], o = a[0], s = a[1], l = t[o]; e.setOptions(s, "setLayoutProperty", l.layout), "visible" === l.layout.visibility && e.setOptions(s, "setPaintProperty", l.paint); } }), (s._addLayers = function (t, e) { for ( var r = this.subplot, n = this.layerList, i = this.sourceId, a = 0; a < n.length; a++ ) { var o = n[a], s = o[0], l = t[s]; r.addLayer( { type: s, id: o[1], source: i, layout: l.layout, paint: l.paint, }, e, ); } }), (s._removeLayers = function () { for ( var t = this.subplot.map, e = this.layerList, r = e.length - 1; r >= 0; r-- ) t.removeLayer(e[r][1]); }), (s.dispose = function () { var t = this.subplot.map; this._removeLayers(), t.removeSource(this.sourceId); }), (e.exports = function (t, e) { var r = e[0].trace, i = new o(t, r.uid), a = i.sourceId, s = n(e), l = (i.below = t.belowLookup["trace-" + r.uid]); return ( t.map.addSource(a, { type: "geojson", data: s.geojson, }), i._addLayers(s, l), (e[0].trace._glTrace = i), i ); }); }, { "../../plots/mapbox/constants": 620, "./convert": 735 }, ], 739: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/attributes"), i = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, a = t("../../plots/template_attributes").hovertemplateAttrs, o = t("../mesh3d/attributes"), s = t("../../plots/attributes"), l = t("../../lib/extend").extendFlat, c = { x: { valType: "data_array", editType: "calc+clearAxisTypes", }, y: { valType: "data_array", editType: "calc+clearAxisTypes", }, z: { valType: "data_array", editType: "calc+clearAxisTypes", }, u: { valType: "data_array", editType: "calc" }, v: { valType: "data_array", editType: "calc" }, w: { valType: "data_array", editType: "calc" }, sizemode: { valType: "enumerated", values: ["scaled", "absolute"], editType: "calc", dflt: "scaled", }, sizeref: { valType: "number", editType: "calc", min: 0 }, anchor: { valType: "enumerated", editType: "calc", values: ["tip", "tail", "cm", "center"], dflt: "cm", }, text: { valType: "string", dflt: "", arrayOk: !0, editType: "calc", }, hovertext: { valType: "string", dflt: "", arrayOk: !0, editType: "calc", }, hovertemplate: a( { editType: "calc" }, { keys: ["norm"] }, ), uhoverformat: i("u", 1), vhoverformat: i("v", 1), whoverformat: i("w", 1), xhoverformat: i("x"), yhoverformat: i("y"), zhoverformat: i("z"), showlegend: l({}, s.showlegend, { dflt: !1 }), }; l( c, n("", { colorAttr: "u/v/w norm", showScaleDflt: !0, editTypeOverride: "calc", }), ); ["opacity", "lightposition", "lighting"].forEach( function (t) { c[t] = o[t]; }, ), (c.hoverinfo = l({}, s.hoverinfo, { editType: "calc", flags: [ "x", "y", "z", "u", "v", "w", "norm", "text", "name", ], dflt: "x+y+z+norm+text+name", })), (c.transforms = void 0), (e.exports = c); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/template_attributes": 642, "../mesh3d/attributes": 876, }, ], 740: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/calc"); e.exports = function (t, e) { for ( var r = e.u, i = e.v, a = e.w, o = Math.min( e.x.length, e.y.length, e.z.length, r.length, i.length, a.length, ), s = -1 / 0, l = 1 / 0, c = 0; c < o; c++ ) { var u = r[c], f = i[c], h = a[c], p = Math.sqrt(u * u + f * f + h * h); (s = Math.max(s, p)), (l = Math.min(l, p)); } (e._len = o), (e._normMax = s), n(t, e, { vals: [l, s], containerStr: "", cLetter: "c" }); }; }, { "../../components/colorscale/calc": 375 }, ], 741: [ function (t, e, r) { "use strict"; var n = t("../../../stackgl_modules").gl_cone3d, i = t("../../../stackgl_modules").gl_cone3d.createConeMesh, a = t("../../lib").simpleMap, o = t("../../lib/gl_format_color").parseColorScale, s = t("../../components/colorscale").extractOpts, l = t("../../plots/gl3d/zip3"); function c(t, e) { (this.scene = t), (this.uid = e), (this.mesh = null), (this.data = null); } var u = c.prototype; u.handlePick = function (t) { if (t.object === this.mesh) { var e = (t.index = t.data.index), r = this.data.x[e], n = this.data.y[e], i = this.data.z[e], a = this.data.u[e], o = this.data.v[e], s = this.data.w[e]; t.traceCoordinate = [ r, n, i, a, o, s, Math.sqrt(a * a + o * o + s * s), ]; var l = this.data.hovertext || this.data.text; return ( Array.isArray(l) && void 0 !== l[e] ? (t.textLabel = l[e]) : l && (t.textLabel = l), !0 ); } }; var f = { xaxis: 0, yaxis: 1, zaxis: 2 }, h = { tip: 1, tail: 0, cm: 0.25, center: 0.5 }, p = { tip: 1, tail: 1, cm: 0.75, center: 0.5 }; function d(t, e) { var r = t.fullSceneLayout, i = t.dataScale, c = {}; function u(t, e) { var n = r[e], o = i[f[e]]; return a(t, function (t) { return n.d2l(t) * o; }); } (c.vectors = l( u(e.u, "xaxis"), u(e.v, "yaxis"), u(e.w, "zaxis"), e._len, )), (c.positions = l( u(e.x, "xaxis"), u(e.y, "yaxis"), u(e.z, "zaxis"), e._len, )); var d = s(e); (c.colormap = o(e)), (c.vertexIntensityBounds = [ d.min / e._normMax, d.max / e._normMax, ]), (c.coneOffset = h[e.anchor]), "scaled" === e.sizemode ? (c.coneSize = e.sizeref || 0.5) : (c.coneSize = e.sizeref && e._normMax ? e.sizeref / e._normMax : 0.5); var m = n(c), g = e.lightposition; return ( (m.lightPosition = [g.x, g.y, g.z]), (m.ambient = e.lighting.ambient), (m.diffuse = e.lighting.diffuse), (m.specular = e.lighting.specular), (m.roughness = e.lighting.roughness), (m.fresnel = e.lighting.fresnel), (m.opacity = e.opacity), (e._pad = p[e.anchor] * m.vectorScale * m.coneScale * e._normMax), m ); } (u.update = function (t) { this.data = t; var e = d(this.scene, t); this.mesh.update(e); }), (u.dispose = function () { this.scene.glplot.remove(this.mesh), this.mesh.dispose(); }), (e.exports = function (t, e) { var r = t.glplot.gl, n = d(t, e), a = i(r, n), o = new c(t, e.uid); return ( (o.mesh = a), (o.data = e), (a._trace = o), t.glplot.add(a), o ); }); }, { "../../../stackgl_modules": 1133, "../../components/colorscale": 379, "../../lib": 515, "../../lib/gl_format_color": 511, "../../plots/gl3d/zip3": 618, }, ], 742: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/colorscale/defaults"), a = t("./attributes"); e.exports = function (t, e, r, o) { function s(r, i) { return n.coerce(t, e, a, r, i); } var l = s("u"), c = s("v"), u = s("w"), f = s("x"), h = s("y"), p = s("z"); l && l.length && c && c.length && u && u.length && f && f.length && h && h.length && p && p.length ? (s("sizeref"), s("sizemode"), s("anchor"), s("lighting.ambient"), s("lighting.diffuse"), s("lighting.specular"), s("lighting.roughness"), s("lighting.fresnel"), s("lightposition.x"), s("lightposition.y"), s("lightposition.z"), i(t, e, o, s, { prefix: "", cLetter: "c" }), s("text"), s("hovertext"), s("hovertemplate"), s("uhoverformat"), s("vhoverformat"), s("whoverformat"), s("xhoverformat"), s("yhoverformat"), s("zhoverformat"), (e._length = null)) : (e.visible = !1); }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "./attributes": 739, }, ], 743: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "cone", basePlotModule: t("../../plots/gl3d"), categories: ["gl3d", "showLegend"], attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: { min: "cmin", max: "cmax" }, calc: t("./calc"), plot: t("./convert"), eventData: function (t, e) { return (t.norm = e.traceCoordinate[6]), t; }, meta: {}, }; }, { "../../plots/gl3d": 607, "./attributes": 739, "./calc": 740, "./convert": 741, "./defaults": 742, }, ], 744: [ function (t, e, r) { "use strict"; var n = t("../heatmap/attributes"), i = t("../scatter/attributes"), a = t("../../plots/cartesian/axis_format_attributes"), o = a.axisHoverFormat, s = a.descriptionOnlyNumbers, l = t("../../components/colorscale/attributes"), c = t("../../components/drawing/attributes").dash, u = t("../../plots/font_attributes"), f = t("../../lib/extend").extendFlat, h = t("../../constants/filter_ops"), p = h.COMPARISON_OPS2, d = h.INTERVAL_OPS, m = i.line; e.exports = f( { z: n.z, x: n.x, x0: n.x0, dx: n.dx, y: n.y, y0: n.y0, dy: n.dy, xperiod: n.xperiod, yperiod: n.yperiod, xperiod0: i.xperiod0, yperiod0: i.yperiod0, xperiodalignment: n.xperiodalignment, yperiodalignment: n.yperiodalignment, text: n.text, hovertext: n.hovertext, transpose: n.transpose, xtype: n.xtype, ytype: n.ytype, xhoverformat: o("x"), yhoverformat: o("y"), zhoverformat: o("z", 1), hovertemplate: n.hovertemplate, texttemplate: f({}, n.texttemplate, {}), textfont: f({}, n.textfont, {}), hoverongaps: n.hoverongaps, connectgaps: f({}, n.connectgaps, {}), fillcolor: { valType: "color", editType: "calc" }, autocontour: { valType: "boolean", dflt: !0, editType: "calc", impliedEdits: { "contours.start": void 0, "contours.end": void 0, "contours.size": void 0, }, }, ncontours: { valType: "integer", dflt: 15, min: 1, editType: "calc", }, contours: { type: { valType: "enumerated", values: ["levels", "constraint"], dflt: "levels", editType: "calc", }, start: { valType: "number", dflt: null, editType: "plot", impliedEdits: { "^autocontour": !1 }, }, end: { valType: "number", dflt: null, editType: "plot", impliedEdits: { "^autocontour": !1 }, }, size: { valType: "number", dflt: null, min: 0, editType: "plot", impliedEdits: { "^autocontour": !1 }, }, coloring: { valType: "enumerated", values: ["fill", "heatmap", "lines", "none"], dflt: "fill", editType: "calc", }, showlines: { valType: "boolean", dflt: !0, editType: "plot", }, showlabels: { valType: "boolean", dflt: !1, editType: "plot", }, labelfont: u({ editType: "plot", colorEditType: "style", }), labelformat: { valType: "string", dflt: "", editType: "plot", description: s("contour label"), }, operation: { valType: "enumerated", values: [].concat(p).concat(d), dflt: "=", editType: "calc", }, value: { valType: "any", dflt: 0, editType: "calc" }, editType: "calc", impliedEdits: { autocontour: !1 }, }, line: { color: f({}, m.color, { editType: "style+colorbars" }), width: { valType: "number", min: 0, editType: "style+colorbars", }, dash: c, smoothing: f({}, m.smoothing, {}), editType: "plot", }, }, l("", { cLetter: "z", autoColorDflt: !1, editTypeOverride: "calc", }), ); }, { "../../components/colorscale/attributes": 374, "../../components/drawing/attributes": 388, "../../constants/filter_ops": 487, "../../lib/extend": 505, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/font_attributes": 594, "../heatmap/attributes": 801, "../scatter/attributes": 936, }, ], 745: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale"), i = t("../heatmap/calc"), a = t("./set_contours"), o = t("./end_plus"); e.exports = function (t, e) { var r = i(t, e), s = r[0].z; a(e, s); var l, c = e.contours, u = n.extractOpts(e); if ( "heatmap" === c.coloring && u.auto && !1 === e.autocontour ) { var f = c.start, h = o(c), p = c.size || 1, d = Math.floor((h - f) / p) + 1; isFinite(p) || ((p = 1), (d = 1)); var m = f - p / 2; l = [m, m + d * p]; } else l = s; return n.calc(t, e, { vals: l, cLetter: "z" }), r; }; }, { "../../components/colorscale": 379, "../heatmap/calc": 802, "./end_plus": 755, "./set_contours": 763, }, ], 746: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r, n = t[0], i = n.z; switch (e.type) { case "levels": var a = Math.min(i[0][0], i[0][1]); for (r = 0; r < t.length; r++) { var o = t[r]; o.prefixBoundary = !o.edgepaths.length && (a > o.level || (o.starts.length && a === o.level)); } break; case "constraint": if (((n.prefixBoundary = !1), n.edgepaths.length)) return; var s = n.x.length, l = n.y.length, c = -1 / 0, u = 1 / 0; for (r = 0; r < l; r++) (u = Math.min(u, i[r][0])), (u = Math.min(u, i[r][s - 1])), (c = Math.max(c, i[r][0])), (c = Math.max(c, i[r][s - 1])); for (r = 1; r < s - 1; r++) (u = Math.min(u, i[0][r])), (u = Math.min(u, i[l - 1][r])), (c = Math.max(c, i[0][r])), (c = Math.max(c, i[l - 1][r])); var f, h, p = e.value; switch (e._operation) { case ">": p > c && (n.prefixBoundary = !0); break; case "<": (p < u || (n.starts.length && p === u)) && (n.prefixBoundary = !0); break; case "[]": (f = Math.min(p[0], p[1])), ((h = Math.max(p[0], p[1])) < u || f > c || (n.starts.length && h === u)) && (n.prefixBoundary = !0); break; case "][": (f = Math.min(p[0], p[1])), (h = Math.max(p[0], p[1])), f < u && h > c && (n.prefixBoundary = !0); } } }; }, {}, ], 747: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale"), i = t("./make_color_map"), a = t("./end_plus"); e.exports = { min: "zmin", max: "zmax", calc: function (t, e, r) { var o = e.contours, s = e.line, l = o.size || 1, c = o.coloring, u = i(e, { isColorbar: !0 }); if ("heatmap" === c) { var f = n.extractOpts(e); (r._fillgradient = f.reversescale ? n.flipScale(f.colorscale) : f.colorscale), (r._zrange = [f.min, f.max]); } else "fill" === c && (r._fillcolor = u); (r._line = { color: "lines" === c ? u : s.color, width: !1 !== o.showlines ? s.width : 0, dash: s.dash, }), (r._levels = { start: o.start, end: a(o), size: l }); }, }; }, { "../../components/colorscale": 379, "./end_plus": 755, "./make_color_map": 760, }, ], 748: [ function (t, e, r) { "use strict"; e.exports = { BOTTOMSTART: [1, 9, 13, 104, 713], TOPSTART: [4, 6, 7, 104, 713], LEFTSTART: [8, 12, 14, 208, 1114], RIGHTSTART: [2, 3, 11, 208, 1114], NEWDELTA: [ null, [-1, 0], [0, -1], [-1, 0], [1, 0], null, [0, -1], [-1, 0], [0, 1], [0, 1], null, [0, 1], [1, 0], [1, 0], [0, -1], ], CHOOSESADDLE: { 104: [4, 1], 208: [2, 8], 713: [7, 13], 1114: [11, 14], }, SADDLEREMAINDER: { 1: 4, 2: 8, 4: 1, 7: 13, 8: 2, 11: 14, 13: 7, 14: 11, }, LABELDISTANCE: 2, LABELINCREASE: 10, LABELMIN: 3, LABELMAX: 10, LABELOPTIMIZER: { EDGECOST: 1, ANGLECOST: 1, NEIGHBORCOST: 5, SAMELEVELFACTOR: 10, SAMELEVELDISTANCE: 5, MAXCOST: 100, INITIALSEARCHPOINTS: 10, ITERATIONS: 5, }, }; }, {}, ], 749: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("./label_defaults"), a = t("../../components/color"), o = a.addOpacity, s = a.opacity, l = t("../../constants/filter_ops"), c = l.CONSTRAINT_REDUCTION, u = l.COMPARISON_OPS2; e.exports = function (t, e, r, a, l, f) { var h, p, d, m = e.contours, g = r("contours.operation"); ((m._operation = c[g]), (function (t, e) { var r; -1 === u.indexOf(e.operation) ? (t("contours.value", [0, 1]), Array.isArray(e.value) ? e.value.length > 2 ? (e.value = e.value.slice(2)) : 0 === e.length ? (e.value = [0, 1]) : e.length < 2 ? ((r = parseFloat(e.value[0])), (e.value = [r, r + 1])) : (e.value = [ parseFloat(e.value[0]), parseFloat(e.value[1]), ]) : n(e.value) && ((r = parseFloat(e.value)), (e.value = [r, r + 1]))) : (t("contours.value", 0), n(e.value) || (Array.isArray(e.value) ? (e.value = parseFloat(e.value[0])) : (e.value = 0))); })(r, m), "=" === g ? (h = m.showlines = !0) : ((h = r("contours.showlines")), (d = r( "fillcolor", o((t.line || {}).color || l, 0.5), ))), h) && ((p = r("line.color", d && s(d) ? o(e.fillcolor, 1) : l)), r("line.width", 2), r("line.dash")); r("line.smoothing"), i(r, a, p, f); }; }, { "../../components/color": 367, "../../constants/filter_ops": 487, "./label_defaults": 759, "fast-isnumeric": 190, }, ], 750: [ function (t, e, r) { "use strict"; var n = t("../../constants/filter_ops"), i = t("fast-isnumeric"); function a(t, e) { var r, a = Array.isArray(e); function o(t) { return i(t) ? +t : null; } return ( -1 !== n.COMPARISON_OPS2.indexOf(t) ? (r = o(a ? e[0] : e)) : -1 !== n.INTERVAL_OPS.indexOf(t) ? (r = a ? [o(e[0]), o(e[1])] : [o(e), o(e)]) : -1 !== n.SET_OPS.indexOf(t) && (r = a ? e.map(o) : [o(e)]), r ); } function o(t) { return function (e) { e = a(t, e); var r = Math.min(e[0], e[1]), n = Math.max(e[0], e[1]); return { start: r, end: n, size: n - r }; }; } function s(t) { return function (e) { return { start: (e = a(t, e)), end: 1 / 0, size: 1 / 0 }; }; } e.exports = { "[]": o("[]"), "][": o("]["), ">": s(">"), "<": s("<"), "=": s("="), }; }, { "../../constants/filter_ops": 487, "fast-isnumeric": 190 }, ], 751: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n) { var i = n("contours.start"), a = n("contours.end"), o = !1 === i || !1 === a, s = r("contours.size"); (!(o ? (e.autocontour = !0) : r("autocontour", !1)) && s) || r("ncontours"); }; }, {}, ], 752: [ function (t, e, r) { "use strict"; var n = t("../../lib"); function i(t) { return n.extendFlat({}, t, { edgepaths: n.extendDeep([], t.edgepaths), paths: n.extendDeep([], t.paths), starts: n.extendDeep([], t.starts), }); } e.exports = function (t, e) { var r, a, o, s = function (t) { return t.reverse(); }, l = function (t) { return t; }; switch (e) { case "=": case "<": return t; case ">": for ( 1 !== t.length && n.warn( "Contour data invalid for the specified inequality operation.", ), a = t[0], r = 0; r < a.edgepaths.length; r++ ) a.edgepaths[r] = s(a.edgepaths[r]); for (r = 0; r < a.paths.length; r++) a.paths[r] = s(a.paths[r]); for (r = 0; r < a.starts.length; r++) a.starts[r] = s(a.starts[r]); return t; case "][": var c = s; (s = l), (l = c); case "[]": for ( 2 !== t.length && n.warn( "Contour data invalid for the specified inequality range operation.", ), a = i(t[0]), o = i(t[1]), r = 0; r < a.edgepaths.length; r++ ) a.edgepaths[r] = s(a.edgepaths[r]); for (r = 0; r < a.paths.length; r++) a.paths[r] = s(a.paths[r]); for (r = 0; r < a.starts.length; r++) a.starts[r] = s(a.starts[r]); for (; o.edgepaths.length; ) a.edgepaths.push(l(o.edgepaths.shift())); for (; o.paths.length; ) a.paths.push(l(o.paths.shift())); for (; o.starts.length; ) a.starts.push(l(o.starts.shift())); return [a]; } }; }, { "../../lib": 515 }, ], 753: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../heatmap/xyz_defaults"), a = t("../scatter/period_defaults"), o = t("./constraint_defaults"), s = t("./contours_defaults"), l = t("./style_defaults"), c = t("../heatmap/label_defaults"), u = t("./attributes"); e.exports = function (t, e, r, f) { function h(r, i) { return n.coerce(t, e, u, r, i); } if (i(t, e, h, f)) { a(t, e, f, h), h("xhoverformat"), h("yhoverformat"), h("text"), h("hovertext"), h("hoverongaps"), h("hovertemplate"); var p = "constraint" === h("contours.type"); h("connectgaps", n.isArray1D(e.z)), p ? o(t, e, h, f, r) : (s(t, e, h, function (r) { return n.coerce2(t, e, u, r); }), l(t, e, h, f)), e.contours && "heatmap" === e.contours.coloring && c(h, f); } else e.visible = !1; }; }, { "../../lib": 515, "../heatmap/label_defaults": 811, "../heatmap/xyz_defaults": 816, "../scatter/period_defaults": 956, "./attributes": 744, "./constraint_defaults": 749, "./contours_defaults": 751, "./style_defaults": 765, }, ], 754: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./constraint_mapping"), a = t("./end_plus"); e.exports = function (t, e, r) { for ( var o = "constraint" === t.type ? i[t._operation](t.value) : t, s = o.size, l = [], c = a(o), u = r.trace._carpetTrace, f = u ? { xaxis: u.aaxis, yaxis: u.baxis, x: r.a, y: r.b } : { xaxis: e.xaxis, yaxis: e.yaxis, x: r.x, y: r.y }, h = o.start; h < c; h += s ) if ( (l.push( n.extendFlat( { level: h, crossings: {}, starts: [], edgepaths: [], paths: [], z: r.z, smoothing: r.trace.line.smoothing, }, f, ), ), l.length > 1e3) ) { n.warn("Too many contours, clipping at 1000", t); break; } return l; }; }, { "../../lib": 515, "./constraint_mapping": 750, "./end_plus": 755, }, ], 755: [ function (t, e, r) { "use strict"; e.exports = function (t) { return t.end + t.size / 1e6; }; }, {}, ], 756: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./constants"); function a(t, e, r, n) { return ( Math.abs(t[0] - e[0]) < r && Math.abs(t[1] - e[1]) < n ); } function o(t, e, r, o, l) { var c, u = e.join(","), f = t.crossings[u], h = (function (t, e, r) { var n = 0, a = 0; t > 20 && e ? 208 === t || 1114 === t ? (n = 0 === r[0] ? 1 : -1) : (a = 0 === r[1] ? 1 : -1) : -1 !== i.BOTTOMSTART.indexOf(t) ? (a = 1) : -1 !== i.LEFTSTART.indexOf(t) ? (n = 1) : -1 !== i.TOPSTART.indexOf(t) ? (a = -1) : (n = -1); return [n, a]; })(f, r, e), p = [s(t, e, [-h[0], -h[1]])], d = t.z.length, m = t.z[0].length, g = e.slice(), v = h.slice(); for (c = 0; c < 1e4; c++) { if ( (f > 20 ? ((f = i.CHOOSESADDLE[f][(h[0] || h[1]) < 0 ? 0 : 1]), (t.crossings[u] = i.SADDLEREMAINDER[f])) : delete t.crossings[u], !(h = i.NEWDELTA[f])) ) { n.log("Found bad marching index:", f, e, t.level); break; } p.push(s(t, e, h)), (e[0] += h[0]), (e[1] += h[1]), (u = e.join(",")), a(p[p.length - 1], p[p.length - 2], o, l) && p.pop(); var y = (h[0] && (e[0] < 0 || e[0] > m - 2)) || (h[1] && (e[1] < 0 || e[1] > d - 2)); if ( (e[0] === g[0] && e[1] === g[1] && h[0] === v[0] && h[1] === v[1]) || (r && y) ) break; f = t.crossings[u]; } 1e4 === c && n.log("Infinite loop in contour?"); var x, b, _, w, T, k, A, M, S, E, L, C, P, I, O, z = a(p[0], p[p.length - 1], o, l), D = 0, R = 0.2 * t.smoothing, F = [], B = 0; for (c = 1; c < p.length; c++) (C = p[c]), (P = p[c - 1]), (I = void 0), (O = void 0), (I = C[2] - P[2]), (O = C[3] - P[3]), (D += A = Math.sqrt(I * I + O * O)), F.push(A); var N = (D / F.length) * R; function j(t) { return p[t % p.length]; } for (c = p.length - 2; c >= B; c--) if ((x = F[c]) < N) { for (_ = 0, b = c - 1; b >= B && x + F[b] < N; b--) x += F[b]; if (z && c === p.length - 2) for (_ = 0; _ < b && x + F[_] < N; _++) x += F[_]; (T = c - b + _ + 1), (k = Math.floor((c + b + _ + 2) / 2)), (w = z || c !== p.length - 2 ? z || -1 !== b ? T % 2 ? j(k) : [ (j(k)[0] + j(k + 1)[0]) / 2, (j(k)[1] + j(k + 1)[1]) / 2, ] : p[0] : p[p.length - 1]), p.splice(b + 1, c - b + 1, w), (c = b + 1), _ && (B = _), z && (c === p.length - 2 ? (p[_] = p[p.length - 1]) : 0 === c && (p[p.length - 1] = p[0])); } for (p.splice(0, B), c = 0; c < p.length; c++) p[c].length = 2; if (!(p.length < 2)) if (z) p.pop(), t.paths.push(p); else { r || n.log( "Unclosed interior contour?", t.level, g.join(","), p.join("L"), ); var U = !1; for (M = 0; M < t.edgepaths.length; M++) if ( ((E = t.edgepaths[M]), !U && a(E[0], p[p.length - 1], o, l)) ) { p.pop(), (U = !0); var V = !1; for (S = 0; S < t.edgepaths.length; S++) if ( a( (L = t.edgepaths[S])[L.length - 1], p[0], o, l, ) ) { (V = !0), p.shift(), t.edgepaths.splice(M, 1), S === M ? t.paths.push(p.concat(L)) : (S > M && S--, (t.edgepaths[S] = L.concat(p, E))); break; } V || (t.edgepaths[M] = p.concat(E)); } for (M = 0; M < t.edgepaths.length && !U; M++) a((E = t.edgepaths[M])[E.length - 1], p[0], o, l) && (p.shift(), (t.edgepaths[M] = E.concat(p)), (U = !0)); U || t.edgepaths.push(p); } } function s(t, e, r) { var n = e[0] + Math.max(r[0], 0), i = e[1] + Math.max(r[1], 0), a = t.z[i][n], o = t.xaxis, s = t.yaxis; if (r[1]) { var l = (t.level - a) / (t.z[i][n + 1] - a), c = (1 !== l ? (1 - l) * o.c2l(t.x[n]) : 0) + (0 !== l ? l * o.c2l(t.x[n + 1]) : 0); return [o.c2p(o.l2c(c), !0), s.c2p(t.y[i], !0), n + l, i]; } var u = (t.level - a) / (t.z[i + 1][n] - a), f = (1 !== u ? (1 - u) * s.c2l(t.y[i]) : 0) + (0 !== u ? u * s.c2l(t.y[i + 1]) : 0); return [o.c2p(t.x[n], !0), s.c2p(s.l2c(f), !0), n, i + u]; } e.exports = function (t, e, r) { var i, a, s, l; for ( e = e || 0.01, r = r || 0.01, a = 0; a < t.length; a++ ) { for (s = t[a], l = 0; l < s.starts.length; l++) o(s, s.starts[l], "edge", e, r); for (i = 0; Object.keys(s.crossings).length && i < 1e4; ) i++, o( s, Object.keys(s.crossings)[0].split(",").map(Number), void 0, e, r, ); 1e4 === i && n.log("Infinite loop in contour?"); } }; }, { "../../lib": 515, "./constants": 748 }, ], 757: [ function (t, e, r) { "use strict"; var n = t("../../components/color"), i = t("../heatmap/hover"); e.exports = function (t, e, r, a, o) { o || (o = {}), (o.isContour = !0); var s = i(t, e, r, a, o); return ( s && s.forEach(function (t) { var e = t.trace; "constraint" === e.contours.type && (e.fillcolor && n.opacity(e.fillcolor) ? (t.color = n.addOpacity(e.fillcolor, 1)) : e.contours.showlines && n.opacity(e.line.color) && (t.color = n.addOpacity(e.line.color, 1))); }), s ); }; }, { "../../components/color": 367, "../heatmap/hover": 808 }, ], 758: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("./calc"), plot: t("./plot").plot, style: t("./style"), colorbar: t("./colorbar"), hoverPoints: t("./hover"), moduleType: "trace", name: "contour", basePlotModule: t("../../plots/cartesian"), categories: [ "cartesian", "svg", "2dMap", "contour", "showLegend", ], meta: {}, }; }, { "../../plots/cartesian": 578, "./attributes": 744, "./calc": 745, "./colorbar": 747, "./defaults": 753, "./hover": 757, "./plot": 762, "./style": 764, }, ], 759: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e, r, i) { if ((i || (i = {}), t("contours.showlabels"))) { var a = e.font; n.coerceFont(t, "contours.labelfont", { family: a.family, size: a.size, color: r, }), t("contours.labelformat"); } !1 !== i.hasHover && t("zhoverformat"); }; }, { "../../lib": 515 }, ], 760: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/colorscale"), a = t("./end_plus"); e.exports = function (t) { var e = t.contours, r = e.start, o = a(e), s = e.size || 1, l = Math.floor((o - r) / s) + 1, c = "lines" === e.coloring ? 0 : 1, u = i.extractOpts(t); isFinite(s) || ((s = 1), (l = 1)); var f, h, p = u.reversescale ? i.flipScale(u.colorscale) : u.colorscale, d = p.length, m = new Array(d), g = new Array(d); if ("heatmap" === e.coloring) { var v = u.min, y = u.max; for (h = 0; h < d; h++) (f = p[h]), (m[h] = f[0] * (y - v) + v), (g[h] = f[1]); var x = n.extent([v, y, e.start, e.start + s * (l - 1)]), b = x[v < y ? 0 : 1], _ = x[v < y ? 1 : 0]; b !== v && (m.splice(0, 0, b), g.splice(0, 0, g[0])), _ !== y && (m.push(_), g.push(g[g.length - 1])); } else for (h = 0; h < d; h++) (f = p[h]), (m[h] = (f[0] * (l + c - 1) - c / 2) * s + r), (g[h] = f[1]); return i.makeColorScaleFunc( { domain: m, range: g }, { noNumericCheck: !0 }, ); }; }, { "../../components/colorscale": 379, "./end_plus": 755, "@plotly/d3": 58, }, ], 761: [ function (t, e, r) { "use strict"; var n = t("./constants"); function i(t, e) { var r = (e[0][0] > t ? 0 : 1) + (e[0][1] > t ? 0 : 2) + (e[1][1] > t ? 0 : 4) + (e[1][0] > t ? 0 : 8); return 5 === r || 10 === r ? t > (e[0][0] + e[0][1] + e[1][0] + e[1][1]) / 4 ? 5 === r ? 713 : 1114 : 5 === r ? 104 : 208 : 15 === r ? 0 : r; } e.exports = function (t) { var e, r, a, o, s, l, c, u, f, h = t[0].z, p = h.length, d = h[0].length, m = 2 === p || 2 === d; for (r = 0; r < p - 1; r++) for ( o = [], 0 === r && (o = o.concat(n.BOTTOMSTART)), r === p - 2 && (o = o.concat(n.TOPSTART)), e = 0; e < d - 1; e++ ) for ( a = o.slice(), 0 === e && (a = a.concat(n.LEFTSTART)), e === d - 2 && (a = a.concat(n.RIGHTSTART)), s = e + "," + r, l = [ [h[r][e], h[r][e + 1]], [h[r + 1][e], h[r + 1][e + 1]], ], f = 0; f < t.length; f++ ) (c = i((u = t[f]).level, l)) && ((u.crossings[s] = c), -1 !== a.indexOf(c) && (u.starts.push([e, r]), m && -1 !== a.indexOf(c, a.indexOf(c) + 1) && u.starts.push([e, r]))); }; }, { "./constants": 748 }, ], 762: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../components/drawing"), o = t("../../components/colorscale"), s = t("../../lib/svg_text_utils"), l = t("../../plots/cartesian/axes"), c = t("../../plots/cartesian/set_convert"), u = t("../heatmap/plot"), f = t("./make_crossings"), h = t("./find_all_paths"), p = t("./empty_pathinfo"), d = t("./convert_to_constraints"), m = t("./close_boundaries"), g = t("./constants"), v = g.LABELOPTIMIZER; function y(t, e) { var r, n, o, s, l, c, u, f = "", h = 0, p = t.edgepaths.map(function (t, e) { return e; }), d = !0; function m(t) { return Math.abs(t[1] - e[2][1]) < 0.01; } function g(t) { return Math.abs(t[0] - e[0][0]) < 0.01; } function v(t) { return Math.abs(t[0] - e[2][0]) < 0.01; } for (; p.length; ) { for ( c = a.smoothopen(t.edgepaths[h], t.smoothing), f += d ? c : c.replace(/^M/, "L"), p.splice(p.indexOf(h), 1), r = t.edgepaths[h][t.edgepaths[h].length - 1], s = -1, o = 0; o < 4; o++ ) { if (!r) { i.log("Missing end?", h, t); break; } for ( u = r, Math.abs(u[1] - e[0][1]) < 0.01 && !v(r) ? (n = e[1]) : g(r) ? (n = e[0]) : m(r) ? (n = e[3]) : v(r) && (n = e[2]), l = 0; l < t.edgepaths.length; l++ ) { var y = t.edgepaths[l][0]; Math.abs(r[0] - n[0]) < 0.01 ? Math.abs(r[0] - y[0]) < 0.01 && (y[1] - r[1]) * (n[1] - y[1]) >= 0 && ((n = y), (s = l)) : Math.abs(r[1] - n[1]) < 0.01 ? Math.abs(r[1] - y[1]) < 0.01 && (y[0] - r[0]) * (n[0] - y[0]) >= 0 && ((n = y), (s = l)) : i.log( "endpt to newendpt is not vert. or horz.", r, n, y, ); } if (((r = n), s >= 0)) break; f += "L" + n; } if (s === t.edgepaths.length) { i.log("unclosed perimeter path"); break; } (h = s), (d = -1 === p.indexOf(h)) && ((h = p[0]), (f += "Z")); } for (h = 0; h < t.paths.length; h++) f += a.smoothclosed(t.paths[h], t.smoothing); return f; } function x(t, e, r, n) { var a = e.width / 2, o = e.height / 2, s = t.x, l = t.y, c = t.theta, u = Math.cos(c) * a, f = Math.sin(c) * a, h = (s > n.center ? n.right - s : s - n.left) / (u + Math.abs(Math.sin(c) * o)), p = (l > n.middle ? n.bottom - l : l - n.top) / (Math.abs(f) + Math.cos(c) * o); if (h < 1 || p < 1) return 1 / 0; var d = v.EDGECOST * (1 / (h - 1) + 1 / (p - 1)); d += v.ANGLECOST * c * c; for ( var m = s - u, g = l - f, y = s + u, x = l + f, b = 0; b < r.length; b++ ) { var _ = r[b], w = (Math.cos(_.theta) * _.width) / 2, T = (Math.sin(_.theta) * _.width) / 2, k = (2 * i.segmentDistance( m, g, y, x, _.x - w, _.y - T, _.x + w, _.y + T, )) / (e.height + _.height), A = _.level === e.level, M = A ? v.SAMELEVELDISTANCE : 1; if (k <= M) return 1 / 0; d += (v.NEIGHBORCOST * (A ? v.SAMELEVELFACTOR : 1)) / (k - M); } return d; } function b(t) { var e, r, n = t.trace._emptypoints, i = [], a = t.z.length, o = t.z[0].length, s = []; for (e = 0; e < o; e++) s.push(1); for (e = 0; e < a; e++) i.push(s.slice()); for (e = 0; e < n.length; e++) i[(r = n[e])[0]][r[1]] = 0; return (t.zmask = i), i; } (r.plot = function (t, e, o, s) { var l = e.xaxis, c = e.yaxis; i.makeTraceGroups(s, o, "contour").each(function (o) { var s = n.select(this), v = o[0], x = v.trace, _ = v.x, w = v.y, T = x.contours, k = p(T, e, v), A = i.ensureSingle(s, "g", "heatmapcoloring"), M = []; "heatmap" === T.coloring && (M = [o]), u(t, e, M, A), f(k), h(k); var S = l.c2p(_[0], !0), E = l.c2p(_[_.length - 1], !0), L = c.c2p(w[0], !0), C = c.c2p(w[w.length - 1], !0), P = [ [S, C], [E, C], [E, L], [S, L], ], I = k; "constraint" === T.type && (I = d(k, T._operation)), (function (t, e, r) { var n = i .ensureSingle(t, "g", "contourbg") .selectAll("path") .data("fill" === r.coloring ? [0] : []); n.enter().append("path"), n.exit().remove(), n .attr("d", "M" + e.join("L") + "Z") .style("stroke", "none"); })(s, P, T), (function (t, e, r, a) { var o = "fill" === a.coloring || ("constraint" === a.type && "=" !== a._operation), s = "M" + r.join("L") + "Z"; o && m(e, a); var l = i .ensureSingle(t, "g", "contourfill") .selectAll("path") .data(o ? e : []); l.enter().append("path"), l.exit().remove(), l.each(function (t) { var e = (t.prefixBoundary ? s : "") + y(t, r); e ? n .select(this) .attr("d", e) .style("stroke", "none") : n.select(this).remove(); }); })(s, I, P, T), (function (t, e, o, s, l) { var c = i.ensureSingle(t, "g", "contourlines"), u = !1 !== l.showlines, f = l.showlabels, h = u && f, p = r.createLines(c, u || f, e), d = r.createLineClip(c, h, o, s.trace.uid), m = t .selectAll("g.contourlabels") .data(f ? [0] : []); if ( (m.exit().remove(), m.enter().append("g").classed("contourlabels", !0), f) ) { var v = [], y = []; i.clearLocationCache(); var x = r.labelFormatter(o, s), b = a.tester .append("text") .attr("data-notex", 1) .call(a.font, l.labelfont), _ = e[0].xaxis, w = e[0].yaxis, T = _._length, k = w._length, A = _.range, M = w.range, S = i.aggNums(Math.min, null, s.x), E = i.aggNums(Math.max, null, s.x), L = i.aggNums(Math.min, null, s.y), C = i.aggNums(Math.max, null, s.y), P = Math.max(_.c2p(S, !0), 0), I = Math.min(_.c2p(E, !0), T), O = Math.max(w.c2p(C, !0), 0), z = Math.min(w.c2p(L, !0), k), D = {}; A[0] < A[1] ? ((D.left = P), (D.right = I)) : ((D.left = I), (D.right = P)), M[0] < M[1] ? ((D.top = O), (D.bottom = z)) : ((D.top = z), (D.bottom = O)), (D.middle = (D.top + D.bottom) / 2), (D.center = (D.left + D.right) / 2), v.push([ [D.left, D.top], [D.right, D.top], [D.right, D.bottom], [D.left, D.bottom], ]); var R = Math.sqrt(T * T + k * k), F = (g.LABELDISTANCE * R) / Math.max(1, e.length / g.LABELINCREASE); p.each(function (t) { var e = r.calcTextOpts(t.level, x, b, o); n.select(this) .selectAll("path") .each(function () { var t = i.getVisibleSegment( this, D, e.height / 2, ); if ( t && !(t.len < (e.width + e.height) * g.LABELMIN) ) for ( var n = Math.min( Math.ceil(t.len / F), g.LABELMAX, ), a = 0; a < n; a++ ) { var o = r.findBestTextLocation( this, t, e, y, D, ); if (!o) break; r.addLabelData(o, e, y, v); } }); }), b.remove(), r.drawLabels(m, y, o, d, h ? v : null); } f && !u && p.remove(); })(s, k, t, v, T), (function (t, e, r, n, o) { var s = n.trace, l = r._fullLayout._clips, c = "clip" + s.uid, u = l .selectAll("#" + c) .data(s.connectgaps ? [] : [0]); if ( (u .enter() .append("clipPath") .classed("contourclip", !0) .attr("id", c), u.exit().remove(), !1 === s.connectgaps) ) { var p = { level: 0.9, crossings: {}, starts: [], edgepaths: [], paths: [], xaxis: e.xaxis, yaxis: e.yaxis, x: n.x, y: n.y, z: b(n), smoothing: 0, }; f([p]), h([p]), m([p], { type: "levels" }), i .ensureSingle(u, "path", "") .attr( "d", (p.prefixBoundary ? "M" + o.join("L") + "Z" : "") + y(p, o), ); } else c = null; a.setClipUrl(t, c, r); })(s, e, t, v, P); }); }), (r.createLines = function (t, e, r) { var n = r[0].smoothing, i = t.selectAll("g.contourlevel").data(e ? r : []); if ( (i.exit().remove(), i.enter().append("g").classed("contourlevel", !0), e) ) { var o = i.selectAll("path.openline").data(function (t) { return t.pedgepaths || t.edgepaths; }); o.exit().remove(), o.enter().append("path").classed("openline", !0), o .attr("d", function (t) { return a.smoothopen(t, n); }) .style("stroke-miterlimit", 1) .style("vector-effect", "non-scaling-stroke"); var s = i .selectAll("path.closedline") .data(function (t) { return t.ppaths || t.paths; }); s.exit().remove(), s.enter().append("path").classed("closedline", !0), s .attr("d", function (t) { return a.smoothclosed(t, n); }) .style("stroke-miterlimit", 1) .style("vector-effect", "non-scaling-stroke"); } return i; }), (r.createLineClip = function (t, e, r, n) { var i = e ? "clipline" + n : null, o = r._fullLayout._clips .selectAll("#" + i) .data(e ? [0] : []); return ( o.exit().remove(), o .enter() .append("clipPath") .classed("contourlineclip", !0) .attr("id", i), a.setClipUrl(t, i, r), o ); }), (r.labelFormatter = function (t, e) { var r = t._fullLayout, n = e.trace, i = n.contours, a = { type: "linear", _id: "ycontour", showexponent: "all", exponentformat: "B", }; if (i.labelformat) (a.tickformat = i.labelformat), c(a, r); else { var s = o.extractOpts(n); if (s && s.colorbar && s.colorbar._axis) a = s.colorbar._axis; else { if ("constraint" === i.type) { var u = i.value; Array.isArray(u) ? (a.range = [u[0], u[u.length - 1]]) : (a.range = [u, u]); } else (a.range = [i.start, i.end]), (a.nticks = (i.end - i.start) / i.size); a.range[0] === a.range[1] && (a.range[1] += a.range[0] || 1), a.nticks || (a.nticks = 1e3), c(a, r), l.prepTicks(a), (a._tmin = null), (a._tmax = null); } } return function (t) { return l.tickText(a, t).text; }; }), (r.calcTextOpts = function (t, e, r, n) { var i = e(t); r.text(i).call(s.convertToTspans, n); var o = r.node(), l = a.bBox(o, !0); return { text: i, width: l.width, height: l.height, fontSize: +o.style["font-size"].replace("px", ""), level: t, dy: (l.top + l.bottom) / 2, }; }), (r.findBestTextLocation = function (t, e, r, n, a) { var o, s, l, c, u, f = r.width; e.isClosed ? ((s = e.len / v.INITIALSEARCHPOINTS), (o = e.min + s / 2), (l = e.max)) : ((s = (e.len - f) / (v.INITIALSEARCHPOINTS + 1)), (o = e.min + s + f / 2), (l = e.max - (s + f) / 2)); for (var h = 1 / 0, p = 0; p < v.ITERATIONS; p++) { for (var d = o; d < l; d += s) { var m = i.getTextLocation(t, e.total, d, f), g = x(m, r, n, a); g < h && ((h = g), (u = m), (c = d)); } if (h > 2 * v.MAXCOST) break; p && (s /= 2), (l = (o = c - s / 2) + 1.5 * s); } if (h <= v.MAXCOST) return u; }), (r.addLabelData = function (t, e, r, n) { var i = e.fontSize, a = e.width + i / 3, o = Math.max(0, e.height - i / 3), s = t.x, l = t.y, c = t.theta, u = Math.sin(c), f = Math.cos(c), h = function (t, e) { return [s + t * f - e * u, l + t * u + e * f]; }, p = [ h(-a / 2, -o / 2), h(-a / 2, o / 2), h(a / 2, o / 2), h(a / 2, -o / 2), ]; r.push({ text: e.text, x: s, y: l, dy: e.dy, theta: c, level: e.level, width: a, height: o, }), n.push(p); }), (r.drawLabels = function (t, e, r, a, o) { var l = t.selectAll("text").data(e, function (t) { return t.text + "," + t.x + "," + t.y + "," + t.theta; }); if ( (l.exit().remove(), l .enter() .append("text") .attr({ "data-notex": 1, "text-anchor": "middle" }) .each(function (t) { var e = t.x + Math.sin(t.theta) * t.dy, i = t.y - Math.cos(t.theta) * t.dy; n.select(this) .text(t.text) .attr({ x: e, y: i, transform: "rotate(" + (180 * t.theta) / Math.PI + " " + e + " " + i + ")", }) .call(s.convertToTspans, r); }), o) ) { for (var c = "", u = 0; u < o.length; u++) c += "M" + o[u].join("L") + "Z"; i.ensureSingle(a, "path", "").attr("d", c); } }); }, { "../../components/colorscale": 379, "../../components/drawing": 389, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plots/cartesian/axes": 566, "../../plots/cartesian/set_convert": 585, "../heatmap/plot": 813, "./close_boundaries": 746, "./constants": 748, "./convert_to_constraints": 752, "./empty_pathinfo": 754, "./find_all_paths": 756, "./make_crossings": 761, "@plotly/d3": 58, }, ], 763: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../../lib"); function a(t, e, r) { var i = { type: "linear", range: [t, e] }; return n.autoTicks(i, (e - t) / (r || 15)), i; } e.exports = function (t, e) { var r = t.contours; if (t.autocontour) { var o = t.zmin, s = t.zmax; (t.zauto || void 0 === o) && (o = i.aggNums(Math.min, null, e)), (t.zauto || void 0 === s) && (s = i.aggNums(Math.max, null, e)); var l = a(o, s, t.ncontours); (r.size = l.dtick), (r.start = n.tickFirst(l)), l.range.reverse(), (r.end = n.tickFirst(l)), r.start === o && (r.start += r.size), r.end === s && (r.end -= r.size), r.start > r.end && (r.start = r.end = (r.start + r.end) / 2), t._input.contours || (t._input.contours = {}), i.extendFlat(t._input.contours, { start: r.start, end: r.end, size: r.size, }), (t._input.autocontour = !0); } else if ("constraint" !== r.type) { var c, u = r.start, f = r.end, h = t._input.contours; if ( (u > f && ((r.start = h.start = f), (f = r.end = h.end = u), (u = r.start)), !(r.size > 0)) ) (c = u === f ? 1 : a(u, f, t.ncontours).dtick), (h.size = r.size = c); } }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566 }, ], 764: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/drawing"), a = t("../heatmap/style"), o = t("./make_color_map"); e.exports = function (t) { var e = n.select(t).selectAll("g.contour"); e.style("opacity", function (t) { return t[0].trace.opacity; }), e.each(function (t) { var e = n.select(this), r = t[0].trace, a = r.contours, s = r.line, l = a.size || 1, c = a.start, u = "constraint" === a.type, f = !u && "lines" === a.coloring, h = !u && "fill" === a.coloring, p = f || h ? o(r) : null; e.selectAll("g.contourlevel").each(function (t) { n.select(this) .selectAll("path") .call( i.lineGroupStyle, s.width, f ? p(t.level) : s.color, s.dash, ); }); var d = a.labelfont; if ( (e .selectAll("g.contourlabels text") .each(function (t) { i.font(n.select(this), { family: d.family, size: d.size, color: d.color || (f ? p(t.level) : s.color), }); }), u) ) e.selectAll("g.contourfill path").style( "fill", r.fillcolor, ); else if (h) { var m; e .selectAll("g.contourfill path") .style("fill", function (t) { return ( void 0 === m && (m = t.level), p(t.level + 0.5 * l) ); }), void 0 === m && (m = c), e .selectAll("g.contourbg path") .style("fill", p(m - 0.5 * l)); } }), a(t); }; }, { "../../components/drawing": 389, "../heatmap/style": 814, "./make_color_map": 760, "@plotly/d3": 58, }, ], 765: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/defaults"), i = t("./label_defaults"); e.exports = function (t, e, r, a, o) { var s, l = r("contours.coloring"), c = ""; "fill" === l && (s = r("contours.showlines")), !1 !== s && ("lines" !== l && (c = r("line.color", "#000")), r("line.width", 0.5), r("line.dash")), "none" !== l && (!0 !== t.showlegend && (e.showlegend = !1), (e._dfltShowLegend = !1), n(t, e, a, r, { prefix: "", cLetter: "z" })), r("line.smoothing"), i(r, a, c, o); }; }, { "../../components/colorscale/defaults": 377, "./label_defaults": 759, }, ], 766: [ function (t, e, r) { "use strict"; var n = t("../heatmap/attributes"), i = t("../contour/attributes"), a = t("../../components/colorscale/attributes"), o = t("../../lib/extend").extendFlat, s = i.contours; e.exports = o( { carpet: { valType: "string", editType: "calc" }, z: n.z, a: n.x, a0: n.x0, da: n.dx, b: n.y, b0: n.y0, db: n.dy, text: n.text, hovertext: n.hovertext, transpose: n.transpose, atype: n.xtype, btype: n.ytype, fillcolor: i.fillcolor, autocontour: i.autocontour, ncontours: i.ncontours, contours: { type: s.type, start: s.start, end: s.end, size: s.size, coloring: { valType: "enumerated", values: ["fill", "lines", "none"], dflt: "fill", editType: "calc", }, showlines: s.showlines, showlabels: s.showlabels, labelfont: s.labelfont, labelformat: s.labelformat, operation: s.operation, value: s.value, editType: "calc", impliedEdits: { autocontour: !1 }, }, line: { color: i.line.color, width: i.line.width, dash: i.line.dash, smoothing: i.line.smoothing, editType: "plot", }, transforms: void 0, }, a("", { cLetter: "z", autoColorDflt: !1 }), ); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../contour/attributes": 744, "../heatmap/attributes": 801, }, ], 767: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/calc"), i = t("../../lib"), a = t("../heatmap/convert_column_xyz"), o = t("../heatmap/clean_2d_array"), s = t("../heatmap/interp2d"), l = t("../heatmap/find_empties"), c = t("../heatmap/make_bound_array"), u = t("./defaults"), f = t("../carpet/lookup_carpetid"), h = t("../contour/set_contours"); e.exports = function (t, e) { var r = (e._carpetTrace = f(t, e)); if (r && r.visible && "legendonly" !== r.visible) { if (!e.a || !e.b) { var p = t.data[r.index], d = t.data[e.index]; d.a || (d.a = p.a), d.b || (d.b = p.b), u(d, e, e._defaultColor, t._fullLayout); } var m = (function (t, e) { var r, u, f, h, p, d, m, g = e._carpetTrace, v = g.aaxis, y = g.baxis; (v._minDtick = 0), (y._minDtick = 0), i.isArray1D(e.z) && a(e, v, y, "a", "b", ["z"]); (r = e._a = e._a || e.a), (h = e._b = e._b || e.b), (r = r ? v.makeCalcdata(e, "_a") : []), (h = h ? y.makeCalcdata(e, "_b") : []), (u = e.a0 || 0), (f = e.da || 1), (p = e.b0 || 0), (d = e.db || 1), (m = e._z = o(e._z || e.z, e.transpose)), (e._emptypoints = l(m)), s(m, e._emptypoints); var x = i.maxRowLength(m), b = "scaled" === e.xtype ? "" : r, _ = c(e, b, u, f, x, v), w = "scaled" === e.ytype ? "" : h, T = c(e, w, p, d, m.length, y), k = { a: _, b: T, z: m }; "levels" === e.contours.type && "none" !== e.contours.coloring && n(t, e, { vals: m, containerStr: "", cLetter: "z" }); return [k]; })(t, e); return h(e, e._z), m; } }; }, { "../../components/colorscale/calc": 375, "../../lib": 515, "../carpet/lookup_carpetid": 717, "../contour/set_contours": 763, "../heatmap/clean_2d_array": 803, "../heatmap/convert_column_xyz": 805, "../heatmap/find_empties": 807, "../heatmap/interp2d": 810, "../heatmap/make_bound_array": 812, "./defaults": 768, }, ], 768: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../heatmap/xyz_defaults"), a = t("./attributes"), o = t("../contour/constraint_defaults"), s = t("../contour/contours_defaults"), l = t("../contour/style_defaults"); e.exports = function (t, e, r, c) { function u(r, i) { return n.coerce(t, e, a, r, i); } if ((u("carpet"), t.a && t.b)) { if (!i(t, e, u, c, "a", "b")) return void (e.visible = !1); u("text"), "constraint" === u("contours.type") ? o(t, e, u, c, r, { hasHover: !1 }) : (s(t, e, u, function (r) { return n.coerce2(t, e, a, r); }), l(t, e, u, c, { hasHover: !1 })); } else (e._defaultColor = r), (e._length = null); }; }, { "../../lib": 515, "../contour/constraint_defaults": 749, "../contour/contours_defaults": 751, "../contour/style_defaults": 765, "../heatmap/xyz_defaults": 816, "./attributes": 766, }, ], 769: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../contour/colorbar"), calc: t("./calc"), plot: t("./plot"), style: t("../contour/style"), moduleType: "trace", name: "contourcarpet", basePlotModule: t("../../plots/cartesian"), categories: [ "cartesian", "svg", "carpet", "contour", "symbols", "showLegend", "hasLines", "carpetDependent", "noHover", "noSortingByValue", ], meta: {}, }; }, { "../../plots/cartesian": 578, "../contour/colorbar": 747, "../contour/style": 764, "./attributes": 766, "./calc": 767, "./defaults": 768, "./plot": 770, }, ], 770: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../carpet/map_1d_array"), a = t("../carpet/makepath"), o = t("../../components/drawing"), s = t("../../lib"), l = t("../contour/make_crossings"), c = t("../contour/find_all_paths"), u = t("../contour/plot"), f = t("../contour/constants"), h = t("../contour/convert_to_constraints"), p = t("../contour/empty_pathinfo"), d = t("../contour/close_boundaries"), m = t("../carpet/lookup_carpetid"), g = t("../carpet/axis_aligned_line"); function v(t, e, r) { var n = t.getPointAtLength(e), i = t.getPointAtLength(r), a = i.x - n.x, o = i.y - n.y, s = Math.sqrt(a * a + o * o); return [a / s, o / s]; } function y(t) { var e = Math.sqrt(t[0] * t[0] + t[1] * t[1]); return [t[0] / e, t[1] / e]; } function x(t, e) { var r = Math.abs(t[0] * e[0] + t[1] * e[1]); return Math.sqrt(1 - r * r) / r; } e.exports = function (t, e, r, b) { var _ = e.xaxis, w = e.yaxis; s.makeTraceGroups(b, r, "contour").each(function (r) { var b = n.select(this), T = r[0], k = T.trace, A = (k._carpetTrace = m(t, k)), M = t.calcdata[A.index][0]; if (A.visible && "legendonly" !== A.visible) { var S = T.a, E = T.b, L = k.contours, C = p(L, e, T), P = "constraint" === L.type, I = L._operation, O = P ? ("=" === I ? "lines" : "fill") : L.coloring, z = [ [S[0], E[E.length - 1]], [S[S.length - 1], E[E.length - 1]], [S[S.length - 1], E[0]], [S[0], E[0]], ]; l(C); var D = 1e-8 * (S[S.length - 1] - S[0]), R = 1e-8 * (E[E.length - 1] - E[0]); c(C, D, R); var F, B, N, j, U = C; "constraint" === L.type && (U = h(C, I)), (function (t, e) { var r, n, i, a, o, s, l, c, u; for (r = 0; r < t.length; r++) { for ( a = t[r], o = a.pedgepaths = [], s = a.ppaths = [], n = 0; n < a.edgepaths.length; n++ ) { for ( u = a.edgepaths[n], l = [], i = 0; i < u.length; i++ ) l[i] = e(u[i]); o.push(l); } for (n = 0; n < a.paths.length; n++) { for ( u = a.paths[n], c = [], i = 0; i < u.length; i++ ) c[i] = e(u[i]); s.push(c); } } })(C, q); var V = []; for (j = M.clipsegments.length - 1; j >= 0; j--) (F = M.clipsegments[j]), (B = i([], F.x, _.c2p)), (N = i([], F.y, w.c2p)), B.reverse(), N.reverse(), V.push(a(B, N, F.bicubic)); var H = "M" + V.join("L") + "Z"; !(function (t, e, r, n, o, l) { var c, u, f, h, p = s .ensureSingle(t, "g", "contourbg") .selectAll("path") .data("fill" !== l || o ? [] : [0]); p.enter().append("path"), p.exit().remove(); var d = []; for (h = 0; h < e.length; h++) (c = e[h]), (u = i([], c.x, r.c2p)), (f = i([], c.y, n.c2p)), d.push(a(u, f, c.bicubic)); p.attr("d", "M" + d.join("L") + "Z").style( "stroke", "none", ); })(b, M.clipsegments, _, w, P, O), (function (t, e, r, i, a, l, c, u, f, h, p) { var m = "fill" === h; m && d(a, t.contours); var v = s .ensureSingle(e, "g", "contourfill") .selectAll("path") .data(m ? a : []); v.enter().append("path"), v.exit().remove(), v.each(function (t) { var e = (t.prefixBoundary ? p : "") + (function (t, e, r, n, i, a, l, c) { var u, f, h, p, d, m, v, y = "", x = e.edgepaths.map(function (t, e) { return e; }), b = !0, _ = 1e-4 * Math.abs(r[0][0] - r[2][0]), w = 1e-4 * Math.abs(r[0][1] - r[2][1]); function T(t) { return Math.abs(t[1] - r[0][1]) < w; } function k(t) { return Math.abs(t[1] - r[2][1]) < w; } function A(t) { return Math.abs(t[0] - r[0][0]) < _; } function M(t) { return Math.abs(t[0] - r[2][0]) < _; } function S(t, e) { var r, n, o, s, u = ""; for ( (T(t) && !M(t)) || (k(t) && !A(t)) ? ((s = i.aaxis), (o = g( i, a, [t[0], e[0]], 0.5 * (t[1] + e[1]), ))) : ((s = i.baxis), (o = g(i, a, 0.5 * (t[0] + e[0]), [ t[1], e[1], ]))), r = 1; r < o.length; r++ ) for ( u += s.smoothing ? "C" : "L", n = 0; n < o[r].length; n++ ) { var f = o[r][n]; u += [l.c2p(f[0]), c.c2p(f[1])] + " "; } return u; } (u = 0), (f = null); for (; x.length; ) { var E = e.edgepaths[u][0]; for ( f && (y += S(f, E)), v = o.smoothopen( e.edgepaths[u].map(n), e.smoothing, ), y += b ? v : v.replace(/^M/, "L"), x.splice(x.indexOf(u), 1), f = e.edgepaths[u][ e.edgepaths[u].length - 1 ], d = -1, p = 0; p < 4; p++ ) { if (!f) { s.log("Missing end?", u, e); break; } for ( T(f) && !M(f) ? (h = r[1]) : A(f) ? (h = r[0]) : k(f) ? (h = r[3]) : M(f) && (h = r[2]), m = 0; m < e.edgepaths.length; m++ ) { var L = e.edgepaths[m][0]; Math.abs(f[0] - h[0]) < _ ? Math.abs(f[0] - L[0]) < _ && (L[1] - f[1]) * (h[1] - L[1]) >= 0 && ((h = L), (d = m)) : Math.abs(f[1] - h[1]) < w ? Math.abs(f[1] - L[1]) < w && (L[0] - f[0]) * (h[0] - L[0]) >= 0 && ((h = L), (d = m)) : s.log( "endpt to newendpt is not vert. or horz.", f, h, L, ); } if (d >= 0) break; (y += S(f, h)), (f = h); } if (d === e.edgepaths.length) { s.log("unclosed perimeter path"); break; } (u = d), (b = -1 === x.indexOf(u)) && ((u = x[0]), (y += S(f, h) + "Z"), (f = null)); } for (u = 0; u < e.paths.length; u++) y += o.smoothclosed( e.paths[u].map(n), e.smoothing, ); return y; })(0, t, l, c, u, f, r, i); e ? n .select(this) .attr("d", e) .style("stroke", "none") : n.select(this).remove(); }); })(k, b, _, w, U, z, q, A, M, O, H), (function (t, e, r, i, a, l, c) { var h = s.ensureSingle(t, "g", "contourlines"), p = !1 !== a.showlines, d = a.showlabels, m = p && d, g = u.createLines(h, p || d, e), b = u.createLineClip(h, m, r, i.trace.uid), _ = t .selectAll("g.contourlabels") .data(d ? [0] : []); if ( (_.exit().remove(), _.enter() .append("g") .classed("contourlabels", !0), d) ) { var w = l.xaxis, T = l.yaxis, k = w._length, A = T._length, M = [ [ [0, 0], [k, 0], [k, A], [0, A], ], ], S = []; s.clearLocationCache(); var E = u.labelFormatter(r, i), L = o.tester .append("text") .attr("data-notex", 1) .call(o.font, a.labelfont), C = { left: 0, right: k, center: k / 2, top: 0, bottom: A, middle: A / 2, }, P = Math.sqrt(k * k + A * A), I = (f.LABELDISTANCE * P) / Math.max(1, e.length / f.LABELINCREASE); g.each(function (t) { var e = u.calcTextOpts(t.level, E, L, r); n.select(this) .selectAll("path") .each(function (r) { var n = s.getVisibleSegment( this, C, e.height / 2, ); if ( n && ((function (t, e, r, n, i, a) { for ( var o, s = 0; s < r.pedgepaths.length; s++ ) e === r.pedgepaths[s] && (o = r.edgepaths[s]); if (!o) return; var l = i.a[0], c = i.a[i.a.length - 1], u = i.b[0], f = i.b[i.b.length - 1]; function h(t, e) { var r, n = 0; return ( (Math.abs(t[0] - l) < 0.1 || Math.abs(t[0] - c) < 0.1) && ((r = y( i.dxydb_rough(t[0], t[1], 0.1), )), (n = Math.max( n, (a * x(e, r)) / 2, ))), (Math.abs(t[1] - u) < 0.1 || Math.abs(t[1] - f) < 0.1) && ((r = y( i.dxyda_rough(t[0], t[1], 0.1), )), (n = Math.max( n, (a * x(e, r)) / 2, ))), n ); } var p = v(t, 0, 1), d = v(t, n.total, n.total - 1), m = h(o[0], p), g = n.total - h(o[o.length - 1], d); n.min < m && (n.min = m); n.max > g && (n.max = g); n.len = n.max - n.min; })(this, r, t, n, c, e.height), !( n.len < (e.width + e.height) * f.LABELMIN )) ) for ( var i = Math.min( Math.ceil(n.len / I), f.LABELMAX, ), a = 0; a < i; a++ ) { var o = u.findBestTextLocation( this, n, e, S, C, ); if (!o) break; u.addLabelData(o, e, S, M); } }); }), L.remove(), u.drawLabels(_, S, r, b, m ? M : null); } d && !p && g.remove(); })(b, C, t, T, L, e, A), o.setClipUrl(b, A._clipPathId, t); } function q(t) { var e = A.ab2xy(t[0], t[1], !0); return [_.c2p(e[0]), w.c2p(e[1])]; } }); }; }, { "../../components/drawing": 389, "../../lib": 515, "../carpet/axis_aligned_line": 701, "../carpet/lookup_carpetid": 717, "../carpet/makepath": 718, "../carpet/map_1d_array": 719, "../contour/close_boundaries": 746, "../contour/constants": 748, "../contour/convert_to_constraints": 752, "../contour/empty_pathinfo": 754, "../contour/find_all_paths": 756, "../contour/make_crossings": 761, "../contour/plot": 762, "@plotly/d3": 58, }, ], 771: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/attributes"), i = t("../../plots/template_attributes").hovertemplateAttrs, a = t("../../plots/attributes"), o = t("../scattermapbox/attributes"), s = t("../../lib/extend").extendFlat; e.exports = s( { lon: o.lon, lat: o.lat, z: { valType: "data_array", editType: "calc" }, radius: { valType: "number", editType: "plot", arrayOk: !0, min: 1, dflt: 30, }, below: { valType: "string", editType: "plot" }, text: o.text, hovertext: o.hovertext, hoverinfo: s({}, a.hoverinfo, { flags: ["lon", "lat", "z", "text", "name"], }), hovertemplate: i(), showlegend: s({}, a.showlegend, { dflt: !1 }), }, n("", { cLetter: "z", editTypeOverride: "calc" }), ); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/template_attributes": 642, "../scattermapbox/attributes": 1002, }, ], 772: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib").isArrayOrTypedArray, a = t("../../constants/numerical").BADNUM, o = t("../../components/colorscale/calc"), s = t("../../lib")._; e.exports = function (t, e) { for ( var r = e._length, l = new Array(r), c = e.z, u = i(c) && c.length, f = 0; f < r; f++ ) { var h = (l[f] = {}), p = e.lon[f], d = e.lat[f]; if (((h.lonlat = n(p) && n(d) ? [+p, +d] : [a, a]), u)) { var m = c[f]; h.z = n(m) ? m : a; } } return ( o(t, e, { vals: u ? c : [0, 1], containerStr: "", cLetter: "z", }), r && (l[0].t = { labels: { lat: s(t, "lat:") + " ", lon: s(t, "lon:") + " ", }, }), l ); }; }, { "../../components/colorscale/calc": 375, "../../constants/numerical": 491, "../../lib": 515, "fast-isnumeric": 190, }, ], 773: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("../../components/color"), o = t("../../components/colorscale"), s = t("../../constants/numerical").BADNUM, l = t("../../lib/geojson_utils").makeBlank; e.exports = function (t) { var e = t[0].trace, r = !0 === e.visible && 0 !== e._length, c = (e._opts = { heatmap: { layout: { visibility: "none" }, paint: {} }, geojson: l(), }); if (!r) return c; var u, f = [], h = e.z, p = e.radius, d = i.isArrayOrTypedArray(h) && h.length, m = i.isArrayOrTypedArray(p); for (u = 0; u < t.length; u++) { var g = t[u], v = g.lonlat; if (v[0] !== s) { var y = {}; if (d) { var x = g.z; y.z = x !== s ? x : 0; } m && (y.r = n(p[u]) && p[u] > 0 ? +p[u] : 0), f.push({ type: "Feature", geometry: { type: "Point", coordinates: v }, properties: y, }); } } var b = o.extractOpts(e), _ = b.reversescale ? o.flipScale(b.colorscale) : b.colorscale, w = _[0][1], T = [ "interpolate", ["linear"], ["heatmap-density"], 0, a.opacity(w) < 1 ? w : a.addOpacity(w, 0), ]; for (u = 1; u < _.length; u++) T.push(_[u][0], _[u][1]); var k = [ "interpolate", ["linear"], ["get", "z"], b.min, 0, b.max, 1, ]; return ( i.extendFlat(c.heatmap.paint, { "heatmap-weight": d ? k : 1 / (b.max - b.min), "heatmap-color": T, "heatmap-radius": m ? { type: "identity", property: "r" } : e.radius, "heatmap-opacity": e.opacity, }), (c.geojson = { type: "FeatureCollection", features: f }), (c.heatmap.layout.visibility = "visible"), c ); }; }, { "../../components/color": 367, "../../components/colorscale": 379, "../../constants/numerical": 491, "../../lib": 515, "../../lib/geojson_utils": 509, "fast-isnumeric": 190, }, ], 774: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/colorscale/defaults"), a = t("./attributes"); e.exports = function (t, e, r, o) { function s(r, i) { return n.coerce(t, e, a, r, i); } var l = s("lon") || [], c = s("lat") || [], u = Math.min(l.length, c.length); u ? ((e._length = u), s("z"), s("radius"), s("below"), s("text"), s("hovertext"), s("hovertemplate"), i(t, e, o, s, { prefix: "", cLetter: "z" })) : (e.visible = !1); }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "./attributes": 771, }, ], 775: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { return (t.lon = e.lon), (t.lat = e.lat), (t.z = e.z), t; }; }, {}, ], 776: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../scattermapbox/hover").hoverPoints, a = t("../scattermapbox/hover").getExtraText; e.exports = function (t, e, r) { var o = i(t, e, r); if (o) { var s = o[0], l = s.cd, c = l[0].trace, u = l[s.index]; if ((delete s.color, "z" in u)) { var f = s.subplot.mockAxis; (s.z = u.z), (s.zLabel = n.tickText(f, f.c2l(u.z), "hover").text); } return (s.extraText = a(c, u, l[0].t.labels)), [s]; } }; }, { "../../plots/cartesian/axes": 566, "../scattermapbox/hover": 1007, }, ], 777: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../heatmap/colorbar"), formatLabels: t("../scattermapbox/format_labels"), calc: t("./calc"), plot: t("./plot"), hoverPoints: t("./hover"), eventData: t("./event_data"), getBelow: function (t, e) { for (var r = e.getMapLayers(), n = 0; n < r.length; n++) { var i = r[n], a = i.id; if ( "symbol" === i.type && "string" == typeof a && -1 === a.indexOf("plotly-") ) return a; } }, moduleType: "trace", name: "densitymapbox", basePlotModule: t("../../plots/mapbox"), categories: ["mapbox", "gl", "showLegend"], meta: { hr_name: "density_mapbox" }, }; }, { "../../plots/mapbox": 622, "../heatmap/colorbar": 804, "../scattermapbox/format_labels": 1006, "./attributes": 771, "./calc": 772, "./defaults": 774, "./event_data": 775, "./hover": 776, "./plot": 778, }, ], 778: [ function (t, e, r) { "use strict"; var n = t("./convert"), i = t("../../plots/mapbox/constants").traceLayerPrefix; function a(t, e) { (this.type = "densitymapbox"), (this.subplot = t), (this.uid = e), (this.sourceId = "source-" + e), (this.layerList = [["heatmap", i + e + "-heatmap"]]), (this.below = null); } var o = a.prototype; (o.update = function (t) { var e = this.subplot, r = this.layerList, i = n(t), a = e.belowLookup["trace-" + this.uid]; e.map.getSource(this.sourceId).setData(i.geojson), a !== this.below && (this._removeLayers(), this._addLayers(i, a), (this.below = a)); for (var o = 0; o < r.length; o++) { var s = r[o], l = s[0], c = s[1], u = i[l]; e.setOptions(c, "setLayoutProperty", u.layout), "visible" === u.layout.visibility && e.setOptions(c, "setPaintProperty", u.paint); } }), (o._addLayers = function (t, e) { for ( var r = this.subplot, n = this.layerList, i = this.sourceId, a = 0; a < n.length; a++ ) { var o = n[a], s = o[0], l = t[s]; r.addLayer( { type: s, id: o[1], source: i, layout: l.layout, paint: l.paint, }, e, ); } }), (o._removeLayers = function () { for ( var t = this.subplot.map, e = this.layerList, r = e.length - 1; r >= 0; r-- ) t.removeLayer(e[r][1]); }), (o.dispose = function () { var t = this.subplot.map; this._removeLayers(), t.removeSource(this.sourceId); }), (e.exports = function (t, e) { var r = e[0].trace, i = new a(t, r.uid), o = i.sourceId, s = n(e), l = (i.below = t.belowLookup["trace-" + r.uid]); return ( t.map.addSource(o, { type: "geojson", data: s.geojson, }), i._addLayers(s, l), i ); }); }, { "../../plots/mapbox/constants": 620, "./convert": 773 }, ], 779: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e) { for (var r = 0; r < t.length; r++) t[r].i = r; n.mergeArray(e.text, t, "tx"), n.mergeArray(e.hovertext, t, "htx"); var i = e.marker; if (i) { n.mergeArray(i.opacity, t, "mo"), n.mergeArray(i.color, t, "mc"); var a = i.line; a && (n.mergeArray(a.color, t, "mlc"), n.mergeArrayCastPositive(a.width, t, "mlw")); } }; }, { "../../lib": 515 }, ], 780: [ function (t, e, r) { "use strict"; var n, i = t("../bar/attributes"), a = t("../scatter/attributes").line, o = t("../../plots/attributes"), s = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, l = t("../../plots/template_attributes").hovertemplateAttrs, c = t("../../plots/template_attributes").texttemplateAttrs, u = t("./constants"), f = t("../../lib/extend").extendFlat, h = t("../../components/color"); e.exports = { x: i.x, x0: i.x0, dx: i.dx, y: i.y, y0: i.y0, dy: i.dy, xperiod: i.xperiod, yperiod: i.yperiod, xperiod0: i.xperiod0, yperiod0: i.yperiod0, xperiodalignment: i.xperiodalignment, yperiodalignment: i.yperiodalignment, xhoverformat: s("x"), yhoverformat: s("y"), hovertext: i.hovertext, hovertemplate: l({}, { keys: u.eventDataKeys }), hoverinfo: f({}, o.hoverinfo, { flags: [ "name", "x", "y", "text", "percent initial", "percent previous", "percent total", ], }), textinfo: { valType: "flaglist", flags: [ "label", "text", "percent initial", "percent previous", "percent total", "value", ], extras: ["none"], editType: "plot", arrayOk: !1, }, texttemplate: c( { editType: "plot" }, { keys: u.eventDataKeys.concat(["label", "value"]) }, ), text: i.text, textposition: i.textposition, insidetextanchor: f({}, i.insidetextanchor, { dflt: "middle", }), textangle: f({}, i.textangle, { dflt: 0 }), textfont: i.textfont, insidetextfont: i.insidetextfont, outsidetextfont: i.outsidetextfont, constraintext: i.constraintext, cliponaxis: i.cliponaxis, orientation: f({}, i.orientation, {}), offset: f({}, i.offset, { arrayOk: !1 }), width: f({}, i.width, { arrayOk: !1 }), marker: ((n = f({}, i.marker)), delete n.pattern, n), connector: { fillcolor: { valType: "color", editType: "style" }, line: { color: f({}, a.color, { dflt: h.defaultLine }), width: f({}, a.width, { dflt: 0, editType: "plot" }), dash: a.dash, editType: "style", }, visible: { valType: "boolean", dflt: !0, editType: "plot", }, editType: "plot", }, offsetgroup: i.offsetgroup, alignmentgroup: i.alignmentgroup, }; }, { "../../components/color": 367, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/template_attributes": 642, "../bar/attributes": 657, "../scatter/attributes": 936, "./constants": 782, }, ], 781: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../../plots/cartesian/align_period"), a = t("./arrays_to_calcdata"), o = t("../scatter/calc_selection"), s = t("../../constants/numerical").BADNUM; function l(t) { return t === s ? 0 : t; } e.exports = function (t, e) { var r, c, u, f, h, p, d, m, g = n.getFromId(t, e.xaxis || "x"), v = n.getFromId(t, e.yaxis || "y"); "h" === e.orientation ? ((r = g.makeCalcdata(e, "x")), (u = v.makeCalcdata(e, "y")), (f = i(e, v, "y", u)), (h = !!e.yperiodalignment), (p = "y")) : ((r = v.makeCalcdata(e, "y")), (u = g.makeCalcdata(e, "x")), (f = i(e, g, "x", u)), (h = !!e.xperiodalignment), (p = "x")), (c = f.vals); var y, x = Math.min(c.length, r.length), b = new Array(x); for (e._base = [], d = 0; d < x; d++) { r[d] < 0 && (r[d] = s); var _ = !1; r[d] !== s && d + 1 < x && r[d + 1] !== s && (_ = !0), (m = b[d] = { p: c[d], s: r[d], cNext: _ }), (e._base[d] = -0.5 * m.s), h && ((b[d].orig_p = u[d]), (b[d][p + "End"] = f.ends[d]), (b[d][p + "Start"] = f.starts[d])), e.ids && (m.id = String(e.ids[d])), 0 === d && (b[0].vTotal = 0), (b[0].vTotal += l(m.s)), (m.begR = l(m.s) / l(b[0].s)); } for (d = 0; d < x; d++) (m = b[d]).s !== s && ((m.sumR = m.s / b[0].vTotal), (m.difR = void 0 !== y ? m.s / y : 1), (y = m.s)); return a(b, e), o(b, e), b; }; }, { "../../constants/numerical": 491, "../../plots/cartesian/align_period": 563, "../../plots/cartesian/axes": 566, "../scatter/calc_selection": 938, "./arrays_to_calcdata": 779, }, ], 782: [ function (t, e, r) { "use strict"; e.exports = { eventDataKeys: [ "percentInitial", "percentPrevious", "percentTotal", ], }; }, {}, ], 783: [ function (t, e, r) { "use strict"; var n = t("../bar/cross_trace_calc").setGroupPositions; e.exports = function (t, e) { var r, i, a = t._fullLayout, o = t._fullData, s = t.calcdata, l = e.xaxis, c = e.yaxis, u = [], f = [], h = []; for (i = 0; i < o.length; i++) { var p = o[i], d = "h" === p.orientation; !0 === p.visible && p.xaxis === l._id && p.yaxis === c._id && "funnel" === p.type && ((r = s[i]), d ? h.push(r) : f.push(r), u.push(r)); } var m = { mode: a.funnelmode, norm: a.funnelnorm, gap: a.funnelgap, groupgap: a.funnelgroupgap, }; for ( n(t, l, c, f, m), n(t, c, l, h, m), i = 0; i < u.length; i++ ) { r = u[i]; for (var g = 0; g < r.length; g++) g + 1 < r.length && ((r[g].nextP0 = r[g + 1].p0), (r[g].nextS0 = r[g + 1].s0), (r[g].nextP1 = r[g + 1].p1), (r[g].nextS1 = r[g + 1].s1)); } }; }, { "../bar/cross_trace_calc": 660 }, ], 784: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../bar/defaults").handleGroupingDefaults, a = t("../bar/defaults").handleText, o = t("../scatter/xy_defaults"), s = t("../scatter/period_defaults"), l = t("./attributes"), c = t("../../components/color"); e.exports = { supplyDefaults: function (t, e, r, i) { function u(r, i) { return n.coerce(t, e, l, r, i); } if (o(t, e, i, u)) { s(t, e, i, u), u("xhoverformat"), u("yhoverformat"), u("orientation", e.y && !e.x ? "v" : "h"), u("offset"), u("width"); var f = u("text"); u("hovertext"), u("hovertemplate"); var h = u("textposition"); a(t, e, i, u, h, { moduleHasSelected: !1, moduleHasUnselected: !1, moduleHasConstrain: !0, moduleHasCliponaxis: !0, moduleHasTextangle: !0, moduleHasInsideanchor: !0, }), "none" === e.textposition || e.texttemplate || u( "textinfo", Array.isArray(f) ? "text+value" : "value", ); var p = u("marker.color", r); if ( (u("marker.line.color", c.defaultLine), u("marker.line.width"), u("connector.visible")) ) u( "connector.fillcolor", (function (t) { var e = n.isArrayOrTypedArray(t) ? "#000" : t; return c.addOpacity(e, 0.5 * c.opacity(e)); })(p), ), u("connector.line.width") && (u("connector.line.color"), u("connector.line.dash")); } else e.visible = !1; }, crossTraceDefaults: function (t, e) { var r, a; function o(t) { return n.coerce(a._input, a, l, t); } if ("group" === e.funnelmode) for (var s = 0; s < t.length; s++) (r = (a = t[s])._input), i(r, a, e, o); }, }; }, { "../../components/color": 367, "../../lib": 515, "../bar/defaults": 661, "../scatter/period_defaults": 956, "../scatter/xy_defaults": 963, "./attributes": 780, }, ], 785: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { return ( (t.x = "xVal" in e ? e.xVal : e.x), (t.y = "yVal" in e ? e.yVal : e.y), "percentInitial" in e && (t.percentInitial = e.percentInitial), "percentPrevious" in e && (t.percentPrevious = e.percentPrevious), "percentTotal" in e && (t.percentTotal = e.percentTotal), e.xa && (t.xaxis = e.xa), e.ya && (t.yaxis = e.ya), t ); }; }, {}, ], 786: [ function (t, e, r) { "use strict"; var n = t("../../components/color").opacity, i = t("../bar/hover").hoverOnBars, a = t("../../lib").formatPercent; e.exports = function (t, e, r, o, s) { var l = i(t, e, r, o, s); if (l) { var c = l.cd, u = c[0].trace, f = "h" === u.orientation, h = c[l.index]; (l[(f ? "x" : "y") + "LabelVal"] = h.s), (l.percentInitial = h.begR), (l.percentInitialLabel = a(h.begR, 1)), (l.percentPrevious = h.difR), (l.percentPreviousLabel = a(h.difR, 1)), (l.percentTotal = h.sumR), (l.percentTotalLabel = a(h.sumR, 1)); var p = h.hi || u.hoverinfo, d = []; if (p && "none" !== p && "skip" !== p) { var m = "all" === p, g = p.split("+"), v = function (t) { return m || -1 !== g.indexOf(t); }; v("percent initial") && d.push(l.percentInitialLabel + " of initial"), v("percent previous") && d.push(l.percentPreviousLabel + " of previous"), v("percent total") && d.push(l.percentTotalLabel + " of total"); } return ( (l.extraText = d.join("
")), (l.color = (function (t, e) { var r = t.marker, i = e.mc || r.color, a = e.mlc || r.line.color, o = e.mlw || r.line.width; if (n(i)) return i; if (n(a) && o) return a; })(u, h)), [l] ); } }; }, { "../../components/color": 367, "../../lib": 515, "../bar/hover": 664, }, ], 787: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyDefaults: t("./defaults").supplyDefaults, crossTraceDefaults: t("./defaults").crossTraceDefaults, supplyLayoutDefaults: t("./layout_defaults"), calc: t("./calc"), crossTraceCalc: t("./cross_trace_calc"), plot: t("./plot"), style: t("./style").style, hoverPoints: t("./hover"), eventData: t("./event_data"), selectPoints: t("../bar/select"), moduleType: "trace", name: "funnel", basePlotModule: t("../../plots/cartesian"), categories: [ "bar-like", "cartesian", "svg", "oriented", "showLegend", "zoomScale", ], meta: {}, }; }, { "../../plots/cartesian": 578, "../bar/select": 669, "./attributes": 780, "./calc": 781, "./cross_trace_calc": 783, "./defaults": 784, "./event_data": 785, "./hover": 786, "./layout_attributes": 788, "./layout_defaults": 789, "./plot": 790, "./style": 791, }, ], 788: [ function (t, e, r) { "use strict"; e.exports = { funnelmode: { valType: "enumerated", values: ["stack", "group", "overlay"], dflt: "stack", editType: "calc", }, funnelgap: { valType: "number", min: 0, max: 1, editType: "calc", }, funnelgroupgap: { valType: "number", min: 0, max: 1, dflt: 0, editType: "calc", }, }; }, {}, ], 789: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"); e.exports = function (t, e, r) { var a = !1; function o(r, a) { return n.coerce(t, e, i, r, a); } for (var s = 0; s < r.length; s++) { var l = r[s]; if (l.visible && "funnel" === l.type) { a = !0; break; } } a && (o("funnelmode"), o("funnelgap", 0.2), o("funnelgroupgap")); }; }, { "../../lib": 515, "./layout_attributes": 788 }, ], 790: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../components/drawing"), o = t("../../constants/numerical").BADNUM, s = t("../bar/plot"), l = t("../bar/uniform_text").clearMinTextSize; function c(t, e, r, n) { var i = [], a = [], o = n ? e : r, s = n ? r : e; return ( (i[0] = o.c2p(t.s0, !0)), (a[0] = s.c2p(t.p0, !0)), (i[1] = o.c2p(t.s1, !0)), (a[1] = s.c2p(t.p1, !0)), (i[2] = o.c2p(t.nextS0, !0)), (a[2] = s.c2p(t.nextP0, !0)), (i[3] = o.c2p(t.nextS1, !0)), (a[3] = s.c2p(t.nextP1, !0)), n ? [i, a] : [a, i] ); } e.exports = function (t, e, r, u) { var f = t._fullLayout; l("funnel", f), (function (t, e, r, s) { var l = e.xaxis, u = e.yaxis; i.makeTraceGroups(s, r, "trace bars").each( function (r) { var s = n.select(this), f = r[0].trace, h = i.ensureSingle(s, "g", "regions"); if (f.connector && f.connector.visible) { var p = "h" === f.orientation, d = h.selectAll("g.region").data(i.identity); d.enter().append("g").classed("region", !0), d.exit().remove(); var m = d.size(); d.each(function (r, s) { if (s === m - 1 || r.cNext) { var f = c(r, l, u, p), h = f[0], d = f[1], g = ""; h[0] !== o && d[0] !== o && h[1] !== o && d[1] !== o && h[2] !== o && d[2] !== o && h[3] !== o && d[3] !== o && (g += p ? "M" + h[0] + "," + d[1] + "L" + h[2] + "," + d[2] + "H" + h[3] + "L" + h[1] + "," + d[1] + "Z" : "M" + h[1] + "," + d[1] + "L" + h[2] + "," + d[3] + "V" + d[2] + "L" + h[1] + "," + d[0] + "Z"), "" === g && (g = "M0,0Z"), i .ensureSingle(n.select(this), "path") .attr("d", g) .call(a.setClipUrl, e.layerClipId, t); } }); } else h.remove(); }, ); })(t, e, r, u), (function (t, e, r, o) { var s = e.xaxis, l = e.yaxis; i.makeTraceGroups(o, r, "trace bars").each( function (r) { var o = n.select(this), u = r[0].trace, f = i.ensureSingle(o, "g", "lines"); if ( u.connector && u.connector.visible && u.connector.line.width ) { var h = "h" === u.orientation, p = f.selectAll("g.line").data(i.identity); p.enter().append("g").classed("line", !0), p.exit().remove(); var d = p.size(); p.each(function (r, o) { if (o === d - 1 || r.cNext) { var u = c(r, s, l, h), f = u[0], p = u[1], m = ""; void 0 !== f[3] && void 0 !== p[3] && (h ? ((m += "M" + f[0] + "," + p[1] + "L" + f[2] + "," + p[2]), (m += "M" + f[1] + "," + p[1] + "L" + f[3] + "," + p[2])) : ((m += "M" + f[1] + "," + p[1] + "L" + f[2] + "," + p[3]), (m += "M" + f[1] + "," + p[0] + "L" + f[2] + "," + p[2]))), "" === m && (m = "M0,0Z"), i .ensureSingle(n.select(this), "path") .attr("d", m) .call(a.setClipUrl, e.layerClipId, t); } }); } else f.remove(); }, ); })(t, e, r, u), s.plot(t, e, r, u, { mode: f.funnelmode, norm: f.funnelmode, gap: f.funnelgap, groupgap: f.funnelgroupgap, }); }; }, { "../../components/drawing": 389, "../../constants/numerical": 491, "../../lib": 515, "../bar/plot": 668, "../bar/uniform_text": 673, "@plotly/d3": 58, }, ], 791: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/drawing"), a = t("../../components/color"), o = t("../../constants/interactions").DESELECTDIM, s = t("../bar/style"), l = t("../bar/uniform_text").resizeText, c = s.styleTextPoints; e.exports = { style: function (t, e, r) { var s = r || n .select(t) .selectAll("g.funnellayer") .selectAll("g.trace"); l(t, s, "funnel"), s.style("opacity", function (t) { return t[0].trace.opacity; }), s.each(function (e) { var r = n.select(this), s = e[0].trace; r.selectAll(".point > path").each(function (t) { if (!t.isBlank) { var e = s.marker; n.select(this) .call(a.fill, t.mc || e.color) .call(a.stroke, t.mlc || e.line.color) .call( i.dashLine, e.line.dash, t.mlw || e.line.width, ) .style( "opacity", s.selectedpoints && !t.selected ? o : 1, ); } }), c(r, s, t), r.selectAll(".regions").each(function () { n.select(this) .selectAll("path") .style("stroke-width", 0) .call(a.fill, s.connector.fillcolor); }), r.selectAll(".lines").each(function () { var t = s.connector.line; i.lineGroupStyle( n.select(this).selectAll("path"), t.width, t.color, t.dash, ); }); }); }, }; }, { "../../components/color": 367, "../../components/drawing": 389, "../../constants/interactions": 490, "../bar/style": 671, "../bar/uniform_text": 673, "@plotly/d3": 58, }, ], 792: [ function (t, e, r) { "use strict"; var n = t("../pie/attributes"), i = t("../../plots/attributes"), a = t("../../plots/domain").attributes, o = t("../../plots/template_attributes").hovertemplateAttrs, s = t("../../plots/template_attributes").texttemplateAttrs, l = t("../../lib/extend").extendFlat; e.exports = { labels: n.labels, label0: n.label0, dlabel: n.dlabel, values: n.values, marker: { colors: n.marker.colors, line: { color: l({}, n.marker.line.color, { dflt: null }), width: l({}, n.marker.line.width, { dflt: 1 }), editType: "calc", }, editType: "calc", }, text: n.text, hovertext: n.hovertext, scalegroup: l({}, n.scalegroup, {}), textinfo: l({}, n.textinfo, { flags: ["label", "text", "value", "percent"], }), texttemplate: s( { editType: "plot" }, { keys: ["label", "color", "value", "text", "percent"] }, ), hoverinfo: l({}, i.hoverinfo, { flags: ["label", "text", "value", "percent", "name"], }), hovertemplate: o( {}, { keys: ["label", "color", "value", "text", "percent"] }, ), textposition: l({}, n.textposition, { values: ["inside", "none"], dflt: "inside", }), textfont: n.textfont, insidetextfont: n.insidetextfont, title: { text: n.title.text, font: n.title.font, position: l({}, n.title.position, { values: ["top left", "top center", "top right"], dflt: "top center", }), editType: "plot", }, domain: a({ name: "funnelarea", trace: !0, editType: "calc", }), aspectratio: { valType: "number", min: 0, dflt: 1, editType: "plot", }, baseratio: { valType: "number", min: 0, max: 1, dflt: 0.333, editType: "plot", }, }; }, { "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/domain": 593, "../../plots/template_attributes": 642, "../pie/attributes": 910, }, ], 793: [ function (t, e, r) { "use strict"; var n = t("../../plots/plots"); (r.name = "funnelarea"), (r.plot = function (t, e, i, a) { n.plotBasePlot(r.name, t, e, i, a); }), (r.clean = function (t, e, i, a) { n.cleanBasePlot(r.name, t, e, i, a); }); }, { "../../plots/plots": 628 }, ], 794: [ function (t, e, r) { "use strict"; var n = t("../pie/calc"); e.exports = { calc: function (t, e) { return n.calc(t, e); }, crossTraceCalc: function (t) { n.crossTraceCalc(t, { type: "funnelarea" }); }, }; }, { "../pie/calc": 912 }, ], 795: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("../../plots/domain").defaults, o = t("../bar/defaults").handleText, s = t("../pie/defaults").handleLabelsAndValues; e.exports = function (t, e, r, l) { function c(r, a) { return n.coerce(t, e, i, r, a); } var u = c("labels"), f = c("values"), h = s(u, f), p = h.len; if ( ((e._hasLabels = h.hasLabels), (e._hasValues = h.hasValues), !e._hasLabels && e._hasValues && (c("label0"), c("dlabel")), p) ) { (e._length = p), c("marker.line.width") && c("marker.line.color", l.paper_bgcolor), c("marker.colors"), c("scalegroup"); var d, m = c("text"), g = c("texttemplate"); if ( (g || (d = c( "textinfo", Array.isArray(m) ? "text+percent" : "percent", )), c("hovertext"), c("hovertemplate"), g || (d && "none" !== d)) ) { var v = c("textposition"); o(t, e, l, c, v, { moduleHasSelected: !1, moduleHasUnselected: !1, moduleHasConstrain: !1, moduleHasCliponaxis: !1, moduleHasTextangle: !1, moduleHasInsideanchor: !1, }); } a(e, l, c), c("title.text") && (c("title.position"), n.coerceFont(c, "title.font", l.font)), c("aspectratio"), c("baseratio"); } else e.visible = !1; }; }, { "../../lib": 515, "../../plots/domain": 593, "../bar/defaults": 661, "../pie/defaults": 913, "./attributes": 792, }, ], 796: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "funnelarea", basePlotModule: t("./base_plot"), categories: ["pie-like", "funnelarea", "showLegend"], attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyDefaults: t("./defaults"), supplyLayoutDefaults: t("./layout_defaults"), calc: t("./calc").calc, crossTraceCalc: t("./calc").crossTraceCalc, plot: t("./plot"), style: t("./style"), styleOne: t("../pie/style_one"), meta: {}, }; }, { "../pie/style_one": 921, "./attributes": 792, "./base_plot": 793, "./calc": 794, "./defaults": 795, "./layout_attributes": 797, "./layout_defaults": 798, "./plot": 799, "./style": 800, }, ], 797: [ function (t, e, r) { "use strict"; var n = t("../pie/layout_attributes").hiddenlabels; e.exports = { hiddenlabels: n, funnelareacolorway: { valType: "colorlist", editType: "calc", }, extendfunnelareacolors: { valType: "boolean", dflt: !0, editType: "calc", }, }; }, { "../pie/layout_attributes": 917 }, ], 798: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"); e.exports = function (t, e) { function r(r, a) { return n.coerce(t, e, i, r, a); } r("hiddenlabels"), r("funnelareacolorway", e.colorway), r("extendfunnelareacolors"); }; }, { "../../lib": 515, "./layout_attributes": 797 }, ], 799: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/drawing"), a = t("../../lib"), o = a.strScale, s = a.strTranslate, l = t("../../lib/svg_text_utils"), c = t("../bar/plot").toMoveInsideBar, u = t("../bar/uniform_text"), f = u.recordMinTextSize, h = u.clearMinTextSize, p = t("../pie/helpers"), d = t("../pie/plot"), m = d.attachFxHandlers, g = d.determineInsideTextFont, v = d.layoutAreas, y = d.prerenderTitles, x = d.positionTitleOutside, b = d.formatSliceLabel; function _(t, e) { return "l" + (e[0] - t[0]) + "," + (e[1] - t[1]); } e.exports = function (t, e) { var r = t._context.staticPlot, u = t._fullLayout; h("funnelarea", u), y(e, t), v(e, u._size), a .makeTraceGroups(u._funnelarealayer, e, "trace") .each(function (e) { var h = n.select(this), d = e[0], v = d.trace; !(function (t) { if (!t.length) return; var e = t[0], r = e.trace, n = r.aspectratio, i = r.baseratio; i > 0.999 && (i = 0.999); var a, o = Math.pow(i, 2), s = e.vTotal, l = s, c = (s * o) / (1 - o) / s; function u() { var t, e = { x: (t = Math.sqrt(c)), y: -t }; return [e.x, e.y]; } var f, h, p = []; for (p.push(u()), f = t.length - 1; f > -1; f--) if (!(h = t[f]).hidden) { var d = h.v / l; (c += d), p.push(u()); } var m = 1 / 0, g = -1 / 0; for (f = 0; f < p.length; f++) (a = p[f]), (m = Math.min(m, a[1])), (g = Math.max(g, a[1])); for (f = 0; f < p.length; f++) p[f][1] -= (g + m) / 2; var v = p[p.length - 1][0], y = e.r, x = (g - m) / 2, b = y / v, _ = (y / x) * n; for (e.r = _ * x, f = 0; f < p.length; f++) (p[f][0] *= b), (p[f][1] *= _); var w = [-(a = p[0])[0], a[1]], T = [a[0], a[1]], k = 0; for (f = t.length - 1; f > -1; f--) if (!(h = t[f]).hidden) { var A = p[(k += 1)][0], M = p[k][1]; (h.TL = [-A, M]), (h.TR = [A, M]), (h.BL = w), (h.BR = T), (h.pxmid = ((S = h.TR), (E = h.BR), [ 0.5 * (S[0] + E[0]), 0.5 * (S[1] + E[1]), ])), (w = h.TL), (T = h.TR); } var S, E; })(e), h.each(function () { var h = n .select(this) .selectAll("g.slice") .data(e); h.enter().append("g").classed("slice", !0), h.exit().remove(), h.each(function (o, s) { if (o.hidden) n.select(this).selectAll("path,g").remove(); else { (o.pointNumber = o.i), (o.curveNumber = v.index); var h = d.cx, y = d.cy, x = n.select(this), w = x.selectAll("path.surface").data([o]); w .enter() .append("path") .classed("surface", !0) .style({ "pointer-events": r ? "none" : "all", }), x.call(m, t, e); var T = "M" + (h + o.TR[0]) + "," + (y + o.TR[1]) + _(o.TR, o.BR) + _(o.BR, o.BL) + _(o.BL, o.TL) + "Z"; w.attr("d", T), b(t, o, d); var k = p.castOption(v.textposition, o.pts), A = x .selectAll("g.slicetext") .data( o.text && "none" !== k ? [0] : [], ); A.enter() .append("g") .classed("slicetext", !0), A.exit().remove(), A.each(function () { var r = a.ensureSingle( n.select(this), "text", "", function (t) { t.attr("data-notex", 1); }, ), p = a.ensureUniformFontSize( t, g(v, o, u.font), ); r.text(o.text) .attr({ class: "slicetext", transform: "", "text-anchor": "middle", }) .call(i.font, p) .call(l.convertToTspans, t); var d, m, x, b = i.bBox(r.node()), _ = Math.min(o.BL[1], o.BR[1]) + y, w = Math.max(o.TL[1], o.TR[1]) + y; (m = Math.max(o.TL[0], o.BL[0]) + h), (x = Math.min(o.TR[0], o.BR[0]) + h), ((d = c(m, x, _, w, b, { isHorizontal: !0, constrained: !0, angle: 0, anchor: "middle", })).fontSize = p.size), f(v.type, d, u), (e[s].transform = d), a.setTransormAndDisplay(r, d); }); } }); var y = n .select(this) .selectAll("g.titletext") .data(v.title.text ? [0] : []); y.enter().append("g").classed("titletext", !0), y.exit().remove(), y.each(function () { var e = a.ensureSingle( n.select(this), "text", "", function (t) { t.attr("data-notex", 1); }, ), r = v.title.text; v._meta && (r = a.templateString(r, v._meta)), e .text(r) .attr({ class: "titletext", transform: "", "text-anchor": "middle", }) .call(i.font, v.title.font) .call(l.convertToTspans, t); var c = x(d, u._size); e.attr( "transform", s(c.x, c.y) + o(Math.min(1, c.scale)) + s(c.tx, c.ty), ); }); }); }); }; }, { "../../components/drawing": 389, "../../lib": 515, "../../lib/svg_text_utils": 541, "../bar/plot": 668, "../bar/uniform_text": 673, "../pie/helpers": 915, "../pie/plot": 919, "@plotly/d3": 58, }, ], 800: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../pie/style_one"), a = t("../bar/uniform_text").resizeText; e.exports = function (t) { var e = t._fullLayout._funnelarealayer.selectAll(".trace"); a(t, e, "funnelarea"), e.each(function (t) { var e = t[0].trace, r = n.select(this); r.style({ opacity: e.opacity }), r.selectAll("path.surface").each(function (t) { n.select(this).call(i, t, e); }); }); }; }, { "../bar/uniform_text": 673, "../pie/style_one": 921, "@plotly/d3": 58, }, ], 801: [ function (t, e, r) { "use strict"; var n = t("../scatter/attributes"), i = t("../../plots/attributes"), a = t("../../plots/font_attributes"), o = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, s = t("../../plots/template_attributes").hovertemplateAttrs, l = t("../../plots/template_attributes").texttemplateAttrs, c = t("../../components/colorscale/attributes"), u = t("../../lib/extend").extendFlat; e.exports = u( { z: { valType: "data_array", editType: "calc" }, x: u({}, n.x, { impliedEdits: { xtype: "array" } }), x0: u({}, n.x0, { impliedEdits: { xtype: "scaled" } }), dx: u({}, n.dx, { impliedEdits: { xtype: "scaled" } }), y: u({}, n.y, { impliedEdits: { ytype: "array" } }), y0: u({}, n.y0, { impliedEdits: { ytype: "scaled" } }), dy: u({}, n.dy, { impliedEdits: { ytype: "scaled" } }), xperiod: u({}, n.xperiod, { impliedEdits: { xtype: "scaled" }, }), yperiod: u({}, n.yperiod, { impliedEdits: { ytype: "scaled" }, }), xperiod0: u({}, n.xperiod0, { impliedEdits: { xtype: "scaled" }, }), yperiod0: u({}, n.yperiod0, { impliedEdits: { ytype: "scaled" }, }), xperiodalignment: u({}, n.xperiodalignment, { impliedEdits: { xtype: "scaled" }, }), yperiodalignment: u({}, n.yperiodalignment, { impliedEdits: { ytype: "scaled" }, }), text: { valType: "data_array", editType: "calc" }, hovertext: { valType: "data_array", editType: "calc" }, transpose: { valType: "boolean", dflt: !1, editType: "calc", }, xtype: { valType: "enumerated", values: ["array", "scaled"], editType: "calc+clearAxisTypes", }, ytype: { valType: "enumerated", values: ["array", "scaled"], editType: "calc+clearAxisTypes", }, zsmooth: { valType: "enumerated", values: ["fast", "best", !1], dflt: !1, editType: "calc", }, hoverongaps: { valType: "boolean", dflt: !0, editType: "none", }, connectgaps: { valType: "boolean", editType: "calc" }, xgap: { valType: "number", dflt: 0, min: 0, editType: "plot", }, ygap: { valType: "number", dflt: 0, min: 0, editType: "plot", }, xhoverformat: o("x"), yhoverformat: o("y"), zhoverformat: o("z", 1), hovertemplate: s(), texttemplate: l( { arrayOk: !1, editType: "plot" }, { keys: ["x", "y", "z", "text"] }, ), textfont: a({ editType: "plot", autoSize: !0, autoColor: !0, colorEditType: "style", }), showlegend: u({}, i.showlegend, { dflt: !1 }), }, { transforms: void 0 }, c("", { cLetter: "z", autoColorDflt: !1 }), ); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/font_attributes": 594, "../../plots/template_attributes": 642, "../scatter/attributes": 936, }, ], 802: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"), a = t("../../plots/cartesian/axes"), o = t("../../plots/cartesian/align_period"), s = t("../histogram2d/calc"), l = t("../../components/colorscale/calc"), c = t("./convert_column_xyz"), u = t("./clean_2d_array"), f = t("./interp2d"), h = t("./find_empties"), p = t("./make_bound_array"), d = t("../../constants/numerical").BADNUM; function m(t) { for (var e = [], r = t.length, n = 0; n < r; n++) { var i = t[n]; i !== d && e.push(i); } return e; } e.exports = function (t, e) { var r, g, v, y, x, b, _, w, T, k, A, M = a.getFromId(t, e.xaxis || "x"), S = a.getFromId(t, e.yaxis || "y"), E = n.traceIs(e, "contour"), L = n.traceIs(e, "histogram"), C = n.traceIs(e, "gl2d"), P = E ? "best" : e.zsmooth; if (((M._minDtick = 0), (S._minDtick = 0), L)) (y = (A = s(t, e)).orig_x), (r = A.x), (g = A.x0), (v = A.dx), (w = A.orig_y), (x = A.y), (b = A.y0), (_ = A.dy), (T = A.z); else { var I = e.z; i.isArray1D(I) ? (c(e, M, S, "x", "y", ["z"]), (r = e._x), (x = e._y), (I = e._z)) : ((y = e.x ? M.makeCalcdata(e, "x") : []), (w = e.y ? S.makeCalcdata(e, "y") : []), (r = o(e, M, "x", y).vals), (x = o(e, S, "y", w).vals), (e._x = r), (e._y = x)), (g = e.x0), (v = e.dx), (b = e.y0), (_ = e.dy), (T = u(I, e, M, S)); } function O(t) { (P = e._input.zsmooth = e.zsmooth = !1), i.warn('cannot use zsmooth: "fast": ' + t); } if ( ((M.rangebreaks || S.rangebreaks) && ((T = (function (t, e, r) { for (var n = [], i = -1, a = 0; a < r.length; a++) if (e[a] !== d) { i++, (n[i] = []); for (var o = 0; o < r[a].length; o++) t[o] !== d && n[i].push(r[a][o]); } return n; })(r, x, T)), L || ((r = m(r)), (x = m(x)), (e._x = r), (e._y = x))), L || (!E && !e.connectgaps) || ((e._emptypoints = h(T)), f(T, e._emptypoints)), "fast" === P) ) if ("log" === M.type || "log" === S.type) O("log axis found"); else if (!L) { if (r.length) { var z = (r[r.length - 1] - r[0]) / (r.length - 1), D = Math.abs(z / 100); for (k = 0; k < r.length - 1; k++) if (Math.abs(r[k + 1] - r[k] - z) > D) { O("x scale is not linear"); break; } } if (x.length && "fast" === P) { var R = (x[x.length - 1] - x[0]) / (x.length - 1), F = Math.abs(R / 100); for (k = 0; k < x.length - 1; k++) if (Math.abs(x[k + 1] - x[k] - R) > F) { O("y scale is not linear"); break; } } } var B = i.maxRowLength(T), N = "scaled" === e.xtype ? "" : r, j = p(e, N, g, v, B, M), U = "scaled" === e.ytype ? "" : x, V = p(e, U, b, _, T.length, S); C || ((e._extremes[M._id] = a.findExtremes(M, j)), (e._extremes[S._id] = a.findExtremes(S, V))); var H = { x: j, y: V, z: T, text: e._text || e.text, hovertext: e._hovertext || e.hovertext, }; if ( (e.xperiodalignment && y && (H.orig_x = y), e.yperiodalignment && w && (H.orig_y = w), N && N.length === j.length - 1 && (H.xCenter = N), U && U.length === V.length - 1 && (H.yCenter = U), L && ((H.xRanges = A.xRanges), (H.yRanges = A.yRanges), (H.pts = A.pts)), E || l(t, e, { vals: T, cLetter: "z" }), E && e.contours && "heatmap" === e.contours.coloring) ) { var q = { type: "contour" === e.type ? "heatmap" : "histogram2d", xcalendar: e.xcalendar, ycalendar: e.ycalendar, }; (H.xfill = p(q, N, g, v, B, M)), (H.yfill = p(q, U, b, _, T.length, S)); } return [H]; }; }, { "../../components/colorscale/calc": 375, "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/align_period": 563, "../../plots/cartesian/axes": 566, "../../registry": 647, "../histogram2d/calc": 835, "./clean_2d_array": 803, "./convert_column_xyz": 805, "./find_empties": 807, "./interp2d": 810, "./make_bound_array": 812, }, ], 803: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("../../constants/numerical").BADNUM; e.exports = function (t, e, r, o) { var s, l, c, u, f, h; function p(t) { if (n(t)) return +t; } if (e && e.transpose) { for (s = 0, f = 0; f < t.length; f++) s = Math.max(s, t[f].length); if (0 === s) return !1; (c = function (t) { return t.length; }), (u = function (t, e, r) { return (t[r] || [])[e]; }); } else (s = t.length), (c = function (t, e) { return t[e].length; }), (u = function (t, e, r) { return (t[e] || [])[r]; }); var d = function (t, e, r) { return e === a || r === a ? a : u(t, e, r); }; function m(t) { if ( e && "carpet" !== e.type && "contourcarpet" !== e.type && t && "category" === t.type && e["_" + t._id.charAt(0)].length ) { var r = t._id.charAt(0), n = {}, o = e["_" + r + "CategoryMap"] || e[r]; for (f = 0; f < o.length; f++) n[o[f]] = f; return function (e) { var r = n[t._categories[e]]; return r + 1 ? r : a; }; } return i.identity; } var g = m(r), v = m(o); o && "category" === o.type && (s = o._categories.length); var y = new Array(s); for (f = 0; f < s; f++) for ( l = r && "category" === r.type ? r._categories.length : c(t, f), y[f] = new Array(l), h = 0; h < l; h++ ) y[f][h] = p(d(t, v(f), g(h))); return y; }; }, { "../../constants/numerical": 491, "../../lib": 515, "fast-isnumeric": 190, }, ], 804: [ function (t, e, r) { "use strict"; e.exports = { min: "zmin", max: "zmax" }; }, {}, ], 805: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../constants/numerical").BADNUM, a = t("../../plots/cartesian/align_period"); e.exports = function (t, e, r, o, s, l) { var c = t._length, u = e.makeCalcdata(t, o), f = r.makeCalcdata(t, s); (u = a(t, e, o, u).vals), (f = a(t, r, s, f).vals); var h, p, d, m, g = t.text, v = void 0 !== g && n.isArray1D(g), y = t.hovertext, x = void 0 !== y && n.isArray1D(y), b = n.distinctVals(u), _ = b.vals, w = n.distinctVals(f), T = w.vals, k = [], A = T.length, M = _.length; for (h = 0; h < l.length; h++) k[h] = n.init2dArray(A, M); v && (d = n.init2dArray(A, M)), x && (m = n.init2dArray(A, M)); var S = n.init2dArray(A, M); for (h = 0; h < c; h++) if (u[h] !== i && f[h] !== i) { var E = n.findBin(u[h] + b.minDiff / 2, _), L = n.findBin(f[h] + w.minDiff / 2, T); for (p = 0; p < l.length; p++) { var C = t[l[p]]; (k[p][L][E] = C[h]), (S[L][E] = h); } v && (d[L][E] = g[h]), x && (m[L][E] = y[h]); } for ( t["_" + o] = _, t["_" + s] = T, p = 0; p < l.length; p++ ) t["_" + l[p]] = k[p]; v && (t._text = d), x && (t._hovertext = m), e && "category" === e.type && (t["_" + o + "CategoryMap"] = _.map(function (t) { return e._categories[t]; })), r && "category" === r.type && (t["_" + s + "CategoryMap"] = T.map(function (t) { return r._categories[t]; })), (t._after2before = S); }; }, { "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/align_period": 563, }, ], 806: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./xyz_defaults"), a = t("./label_defaults"), o = t("../scatter/period_defaults"), s = t("./style_defaults"), l = t("../../components/colorscale/defaults"), c = t("./attributes"); e.exports = function (t, e, r, u) { function f(r, i) { return n.coerce(t, e, c, r, i); } i(t, e, f, u) ? (o(t, e, u, f), f("xhoverformat"), f("yhoverformat"), f("text"), f("hovertext"), f("hovertemplate"), a(f, u), s(t, e, f, u), f("hoverongaps"), f("connectgaps", n.isArray1D(e.z) && !1 !== e.zsmooth), l(t, e, u, f, { prefix: "", cLetter: "z" })) : (e.visible = !1); }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "../scatter/period_defaults": 956, "./attributes": 801, "./label_defaults": 811, "./style_defaults": 815, "./xyz_defaults": 816, }, ], 807: [ function (t, e, r) { "use strict"; var n = t("../../lib").maxRowLength; e.exports = function (t) { var e, r, i, a, o, s, l, c, u = [], f = {}, h = [], p = t[0], d = [], m = [0, 0, 0], g = n(t); for (r = 0; r < t.length; r++) for (e = d, d = p, p = t[r + 1] || [], i = 0; i < g; i++) void 0 === d[i] && ((s = (void 0 !== d[i - 1] ? 1 : 0) + (void 0 !== d[i + 1] ? 1 : 0) + (void 0 !== e[i] ? 1 : 0) + (void 0 !== p[i] ? 1 : 0)) ? (0 === r && s++, 0 === i && s++, r === t.length - 1 && s++, i === d.length - 1 && s++, s < 4 && (f[[r, i]] = [r, i, s]), u.push([r, i, s])) : h.push([r, i])); for (; h.length; ) { for (l = {}, c = !1, o = h.length - 1; o >= 0; o--) (s = ((f[[(r = (a = h[o])[0]) - 1, (i = a[1])]] || m)[2] + (f[[r + 1, i]] || m)[2] + (f[[r, i - 1]] || m)[2] + (f[[r, i + 1]] || m)[2]) / 20) && ((l[a] = [r, i, s]), h.splice(o, 1), (c = !0)); if (!c) throw "findEmpties iterated with no new neighbors"; for (a in l) (f[a] = l[a]), u.push(l[a]); } return u.sort(function (t, e) { return e[2] - t[2]; }); }; }, { "../../lib": 515 }, ], 808: [ function (t, e, r) { "use strict"; var n = t("../../components/fx"), i = t("../../lib"), a = t("../../plots/cartesian/axes"), o = t("../../components/colorscale").extractOpts; e.exports = function (t, e, r, s, l) { l || (l = {}); var c, u, f, h, p = l.isContour, d = t.cd[0], m = d.trace, g = t.xa, v = t.ya, y = d.x, x = d.y, b = d.z, _ = d.xCenter, w = d.yCenter, T = d.zmask, k = m.zhoverformat, A = y, M = x; if (!1 !== t.index) { try { (f = Math.round(t.index[1])), (h = Math.round(t.index[0])); } catch (e) { return void i.error( "Error hovering on heatmap, pointNumber must be [row,col], found:", t.index, ); } if (f < 0 || f >= b[0].length || h < 0 || h > b.length) return; } else { if ( n.inbox(e - y[0], e - y[y.length - 1], 0) > 0 || n.inbox(r - x[0], r - x[x.length - 1], 0) > 0 ) return; if (p) { var S; for (A = [2 * y[0] - y[1]], S = 1; S < y.length; S++) A.push((y[S] + y[S - 1]) / 2); for ( A.push([2 * y[y.length - 1] - y[y.length - 2]]), M = [2 * x[0] - x[1]], S = 1; S < x.length; S++ ) M.push((x[S] + x[S - 1]) / 2); M.push([2 * x[x.length - 1] - x[x.length - 2]]); } (f = Math.max( 0, Math.min(A.length - 2, i.findBin(e, A)), )), (h = Math.max( 0, Math.min(M.length - 2, i.findBin(r, M)), )); } var E, L, C = g.c2p(y[f]), P = g.c2p(y[f + 1]), I = v.c2p(x[h]), O = v.c2p(x[h + 1]); p ? ((E = d.orig_x || y), (L = d.orig_y || x), (P = C), (c = E[f]), (O = I), (u = L[h])) : ((E = d.orig_x || _ || y), (L = d.orig_y || w || x), (c = _ ? E[f] : (E[f] + E[f + 1]) / 2), (u = w ? L[h] : (L[h] + L[h + 1]) / 2), g && "category" === g.type && (c = y[f]), v && "category" === v.type && (u = x[h]), m.zsmooth && ((C = P = g.c2p(c)), (I = O = v.c2p(u)))); var z = b[h][f]; if ( (T && !T[h][f] && (z = void 0), void 0 !== z || m.hoverongaps) ) { var D; Array.isArray(d.hovertext) && Array.isArray(d.hovertext[h]) ? (D = d.hovertext[h][f]) : Array.isArray(d.text) && Array.isArray(d.text[h]) && (D = d.text[h][f]); var R = o(m), F = { type: "linear", range: [R.min, R.max], hoverformat: k, _separators: g._separators, _numFormat: g._numFormat, }, B = a.tickText(F, z, "hover").text; return [ i.extendFlat(t, { index: m._after2before ? m._after2before[h][f] : [h, f], distance: t.maxHoverDistance, spikeDistance: t.maxSpikeDistance, x0: C, x1: P, y0: I, y1: O, xLabelVal: c, yLabelVal: u, zLabelVal: z, zLabel: B, text: D, }), ]; } }; }, { "../../components/colorscale": 379, "../../components/fx": 407, "../../lib": 515, "../../plots/cartesian/axes": 566, }, ], 809: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("./calc"), plot: t("./plot"), colorbar: t("./colorbar"), style: t("./style"), hoverPoints: t("./hover"), moduleType: "trace", name: "heatmap", basePlotModule: t("../../plots/cartesian"), categories: ["cartesian", "svg", "2dMap", "showLegend"], meta: {}, }; }, { "../../plots/cartesian": 578, "./attributes": 801, "./calc": 802, "./colorbar": 804, "./defaults": 806, "./hover": 808, "./plot": 813, "./style": 814, }, ], 810: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = [ [-1, 0], [1, 0], [0, -1], [0, 1], ]; function a(t) { return 0.5 - 0.25 * Math.min(1, 0.5 * t); } function o(t, e, r) { var n, a, o, s, l, c, u, f, h, p, d, m, g, v = 0; for (s = 0; s < e.length; s++) { for ( a = (n = e[s])[0], o = n[1], d = t[a][o], p = 0, h = 0, l = 0; l < 4; l++ ) (u = t[a + (c = i[l])[0]]) && void 0 !== (f = u[o + c[1]]) && (0 === p ? (m = g = f) : ((m = Math.min(m, f)), (g = Math.max(g, f))), h++, (p += f)); if (0 === h) throw "iterateInterp2d order is wrong: no defined neighbors"; (t[a][o] = p / h), void 0 === d ? h < 4 && (v = 1) : ((t[a][o] = (1 + r) * t[a][o] - r * d), g > m && (v = Math.max( v, Math.abs(t[a][o] - d) / (g - m), ))); } return v; } e.exports = function (t, e) { var r, i = 1; for (o(t, e), r = 0; r < e.length && !(e[r][2] < 4); r++); for (e = e.slice(r), r = 0; r < 100 && i > 0.01; r++) i = o(t, e, a(i)); return ( i > 0.01 && n.log("interp2d didn't converge quickly", i), t ); }; }, { "../../lib": 515 }, ], 811: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e) { t("texttemplate"); var r = n.extendFlat({}, e.font, { color: "auto", size: "auto", }); n.coerceFont(t, "textfont", r); }; }, { "../../lib": 515 }, ], 812: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib").isArrayOrTypedArray; e.exports = function (t, e, r, a, o, s) { var l, c, u, f = [], h = n.traceIs(t, "contour"), p = n.traceIs(t, "histogram"), d = n.traceIs(t, "gl2d"); if (i(e) && e.length > 1 && !p && "category" !== s.type) { var m = e.length; if (!(m <= o)) return h ? e.slice(0, o) : e.slice(0, o + 1); if (h || d) f = e.slice(0, o); else if (1 === o) f = [e[0] - 0.5, e[0] + 0.5]; else { for (f = [1.5 * e[0] - 0.5 * e[1]], u = 1; u < m; u++) f.push(0.5 * (e[u - 1] + e[u])); f.push(1.5 * e[m - 1] - 0.5 * e[m - 2]); } if (m < o) { var g = f[f.length - 1], v = g - f[f.length - 2]; for (u = m; u < o; u++) (g += v), f.push(g); } } else { var y = t[s._id.charAt(0) + "calendar"]; if (p) l = s.r2c(r, 0, y); else if (i(e) && 1 === e.length) l = e[0]; else if (void 0 === r) l = 0; else { l = ("log" === s.type ? s.d2c : s.r2c)(r, 0, y); } for (c = a || 1, u = h || d ? 0 : -0.5; u < o; u++) f.push(l + c * u); } return f; }; }, { "../../lib": 515, "../../registry": 647 }, ], 813: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("tinycolor2"), a = t("../../registry"), o = t("../../components/drawing"), s = t("../../plots/cartesian/axes"), l = t("../../lib"), c = t("../../lib/svg_text_utils"), u = t("../scatter/format_labels"), f = t("../../components/color"), h = t("../../components/colorscale").extractOpts, p = t( "../../components/colorscale", ).makeColorScaleFuncFromTrace, d = t("../../constants/xmlns_namespaces"), m = t("../../constants/alignment").LINE_SPACING; function g(t) { return t.selectAll("g.heatmap-label"); } function v(t) { g(t).remove(); } function y(t, e) { var r = e.length - 2, n = l.constrain(l.findBin(t, e), 0, r), i = e[n], a = e[n + 1], o = l.constrain(n + (t - i) / (a - i) - 0.5, 0, r), s = Math.round(o), c = Math.abs(o - s); return o && o !== r && c ? { bin0: s, frac: c, bin1: Math.round(s + c / (o - s)) } : { bin0: s, bin1: s, frac: 0 }; } function x(t, e) { var r = e.length - 1, n = l.constrain(l.findBin(t, e), 0, r), i = e[n], a = (t - i) / (e[n + 1] - i) || 0; return a <= 0 ? { bin0: n, bin1: n, frac: 0 } : a < 0.5 ? { bin0: n, bin1: n + 1, frac: a } : { bin0: n + 1, bin1: n, frac: 1 - a }; } function b(t, e, r) { (t[e] = r[0]), (t[e + 1] = r[1]), (t[e + 2] = r[2]), (t[e + 3] = Math.round(255 * r[3])); } e.exports = function (t, e, r, _) { var w = e.xaxis, T = e.yaxis; l.makeTraceGroups(_, r, "hm").each(function (e) { var r, _, k, A, M, S, E, L, C = n.select(this), P = e[0], I = P.trace, O = I.xgap || 0, z = I.ygap || 0, D = P.z, R = P.x, F = P.y, B = P.xCenter, N = P.yCenter, j = a.traceIs(I, "contour"), U = j ? "best" : I.zsmooth, V = D.length, H = l.maxRowLength(D), q = !1, G = !1; for (S = 0; void 0 === r && S < R.length - 1; ) (r = w.c2p(R[S])), S++; for (S = R.length - 1; void 0 === _ && S > 0; ) (_ = w.c2p(R[S])), S--; for ( _ < r && ((k = _), (_ = r), (r = k), (q = !0)), S = 0; void 0 === A && S < F.length - 1; ) (A = T.c2p(F[S])), S++; for (S = F.length - 1; void 0 === M && S > 0; ) (M = T.c2p(F[S])), S--; if ( (M < A && ((k = A), (A = M), (M = k), (G = !0)), j && ((B = R), (N = F), (R = P.xfill), (F = P.yfill)), "fast" !== U) ) { var Y = "best" === U ? 0 : 0.5; (r = Math.max(-Y * w._length, r)), (_ = Math.min((1 + Y) * w._length, _)), (A = Math.max(-Y * T._length, A)), (M = Math.min((1 + Y) * T._length, M)); } var W, Z, X = Math.round(_ - r), J = Math.round(M - A); if (X <= 0 || J <= 0) return ( C.selectAll("image").data([]).exit().remove(), void v(C) ); "fast" === U ? ((W = H), (Z = V)) : ((W = X), (Z = J)); var K = document.createElement("canvas"); (K.width = W), (K.height = Z); var Q, $, tt = K.getContext("2d"), et = p(I, { noNumericCheck: !0, returnArray: !0 }); "fast" === U ? ((Q = q ? function (t) { return H - 1 - t; } : l.identity), ($ = G ? function (t) { return V - 1 - t; } : l.identity)) : ((Q = function (t) { return l.constrain( Math.round(w.c2p(R[t]) - r), 0, X, ); }), ($ = function (t) { return l.constrain( Math.round(T.c2p(F[t]) - A), 0, J, ); })); var rt, nt, it, at, ot = $(0), st = [ot, ot], lt = q ? 0 : 1, ct = G ? 0 : 1, ut = 0, ft = 0, ht = 0, pt = 0; function dt(t, e) { if (void 0 !== t) { var r = et(t); return ( (r[0] = Math.round(r[0])), (r[1] = Math.round(r[1])), (r[2] = Math.round(r[2])), (ut += e), (ft += r[0] * e), (ht += r[1] * e), (pt += r[2] * e), r ); } return [0, 0, 0, 0]; } function mt(t, e, r, n) { var i = t[r.bin0]; if (void 0 === i) return dt(void 0, 1); var a, o = t[r.bin1], s = e[r.bin0], l = e[r.bin1], c = o - i || 0, u = s - i || 0; return ( (a = void 0 === o ? void 0 === l ? 0 : void 0 === s ? 2 * (l - i) : (2 * (2 * l - s - i)) / 3 : void 0 === l ? void 0 === s ? 0 : (2 * (2 * i - o - s)) / 3 : void 0 === s ? (2 * (2 * l - o - i)) / 3 : l + i - o - s), dt(i + r.frac * c + n.frac * (u + r.frac * a)) ); } if (U) { var gt, vt = 0; try { gt = new Uint8Array(X * J * 4); } catch (t) { gt = new Array(X * J * 4); } if ("best" === U) { var yt, xt, bt, _t = B || R, wt = N || F, Tt = new Array(_t.length), kt = new Array(wt.length), At = new Array(X), Mt = B ? x : y, St = N ? x : y; for (S = 0; S < _t.length; S++) Tt[S] = Math.round(w.c2p(_t[S]) - r); for (S = 0; S < wt.length; S++) kt[S] = Math.round(T.c2p(wt[S]) - A); for (S = 0; S < X; S++) At[S] = Mt(S, Tt); for (E = 0; E < J; E++) for ( xt = D[(yt = St(E, kt)).bin0], bt = D[yt.bin1], S = 0; S < X; S++, vt += 4 ) b(gt, vt, (at = mt(xt, bt, At[S], yt))); } else for (E = 0; E < V; E++) for (it = D[E], st = $(E), S = 0; S < X; S++) (at = dt(it[S], 1)), b(gt, (vt = 4 * (st * X + Q(S))), at); var Et = tt.createImageData(X, J); try { Et.data.set(gt); } catch (t) { var Lt = Et.data, Ct = Lt.length; for (E = 0; E < Ct; E++) Lt[E] = gt[E]; } tt.putImageData(Et, 0, 0); } else { var Pt = Math.floor(O / 2), It = Math.floor(z / 2); for (E = 0; E < V; E++) if ( ((it = D[E]), st.reverse(), (st[ct] = $(E + 1)), st[0] !== st[1] && void 0 !== st[0] && void 0 !== st[1]) ) for (rt = [(nt = Q(0)), nt], S = 0; S < H; S++) rt.reverse(), (rt[lt] = Q(S + 1)), rt[0] !== rt[1] && void 0 !== rt[0] && void 0 !== rt[1] && ((at = dt( it[S], (rt[1] - rt[0]) * (st[1] - st[0]), )), (tt.fillStyle = "rgba(" + at.join(",") + ")"), tt.fillRect( rt[0] + Pt, st[0] + It, rt[1] - rt[0] - O, st[1] - st[0] - z, )); } (ft = Math.round(ft / ut)), (ht = Math.round(ht / ut)), (pt = Math.round(pt / ut)); var Ot = i("rgb(" + ft + "," + ht + "," + pt + ")"); (t._hmpixcount = (t._hmpixcount || 0) + ut), (t._hmlumcount = (t._hmlumcount || 0) + ut * Ot.getLuminance()); var zt = C.selectAll("image").data(e); zt .enter() .append("svg:image") .attr({ xmlns: d.svg, preserveAspectRatio: "none" }), zt.attr({ height: J, width: X, x: r, y: A, "xlink:href": K.toDataURL("image/png"), }), v(C); var Dt = I.texttemplate; if (Dt) { var Rt = h(I), Ft = { type: "linear", range: [Rt.min, Rt.max], _separators: w._separators, _numFormat: w._numFormat, }, Bt = "histogram2dcontour" === I.type, Nt = "contour" === I.type, jt = Nt ? V - 1 : V, Ut = Nt ? 1 : 0, Vt = Nt ? H - 1 : H, Ht = []; for (S = Nt ? 1 : 0; S < jt; S++) { var qt; if (Nt) qt = P.y[S]; else if (Bt) { if (0 === S || S === V - 1) continue; qt = P.y[S]; } else if (P.yCenter) qt = P.yCenter[S]; else { if (S + 1 === V && void 0 === P.y[S + 1]) continue; qt = (P.y[S] + P.y[S + 1]) / 2; } var Gt = Math.round(T.c2p(qt)); if (!(0 > Gt || Gt > T._length)) for (E = Ut; E < Vt; E++) { var Yt; if (Nt) Yt = P.x[E]; else if (Bt) { if (0 === E || E === H - 1) continue; Yt = P.x[E]; } else if (P.xCenter) Yt = P.xCenter[E]; else { if (E + 1 === H && void 0 === P.x[E + 1]) continue; Yt = (P.x[E] + P.x[E + 1]) / 2; } var Wt = Math.round(w.c2p(Yt)); if (!(0 > Wt || Wt > w._length)) { var Zt = u({ x: Yt, y: qt }, I, t._fullLayout); (Zt.x = Yt), (Zt.y = qt); var Xt = P.z[S][E]; void 0 === Xt ? ((Zt.z = ""), (Zt.zLabel = "")) : ((Zt.z = Xt), (Zt.zLabel = s.tickText( Ft, Xt, "hover", ).text)); var Jt = P.text && P.text[S] && P.text[S][E]; (void 0 !== Jt && !1 !== Jt) || (Jt = ""), (Zt.text = Jt); var Kt = l.texttemplateString( Dt, Zt, t._fullLayout._d3locale, Zt, I._meta || {}, ); if (Kt) { var Qt = Kt.split("
"), $t = Qt.length, te = 0; for (L = 0; L < $t; L++) te = Math.max(te, Qt[L].length); Ht.push({ l: $t, c: te, t: Kt, x: Wt, y: Gt, z: Xt, }); } } } } var ee = I.textfont, re = ee.family, ne = ee.size, ie = t._fullLayout.font.size; if (!ne || "auto" === ne) { var ae = 1 / 0, oe = 1 / 0, se = 0, le = 0; for (L = 0; L < Ht.length; L++) { var ce = Ht[L]; if ( ((se = Math.max(se, ce.l)), (le = Math.max(le, ce.c)), L < Ht.length - 1) ) { var ue = Ht[L + 1], fe = Math.abs(ue.x - ce.x), he = Math.abs(ue.y - ce.y); fe && (ae = Math.min(ae, fe)), he && (oe = Math.min(oe, he)); } } isFinite(ae) && isFinite(oe) ? ((ae -= O), (oe -= z), (ae /= le), (oe /= se), (ae /= m / 2), (oe /= m), (ne = Math.min( Math.floor(ae), Math.floor(oe), ie, ))) : (ne = ie); } if (ne <= 0 || !isFinite(ne)) return; g(C) .data(Ht) .enter() .append("g") .classed("heatmap-label", 1) .append("text") .attr("text-anchor", "middle") .each(function (e) { var r = n.select(this), i = ee.color; (i && "auto" !== i) || (i = f.contrast("rgba(" + et(e.z).join() + ")")), r .attr("data-notex", 1) .call( c.positionText, (function (t) { return t.x; })(e), (function (t) { return t.y - ne * ((t.l * m) / 2 - 1); })(e), ) .call(o.font, re, ne, i) .text(e.t) .call(c.convertToTspans, t); }); } }); }; }, { "../../components/color": 367, "../../components/colorscale": 379, "../../components/drawing": 389, "../../constants/alignment": 483, "../../constants/xmlns_namespaces": 492, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plots/cartesian/axes": 566, "../../registry": 647, "../scatter/format_labels": 945, "@plotly/d3": 58, tinycolor2: 313, }, ], 814: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"); e.exports = function (t) { n.select(t) .selectAll(".hm image") .style("opacity", function (t) { return t.trace.opacity; }); }; }, { "@plotly/d3": 58 }, ], 815: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { !1 === r("zsmooth") && (r("xgap"), r("ygap")), r("zhoverformat"); }; }, {}, ], 816: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("../../registry"); function o(t, e) { var r = e(t); return ( "scaled" === (r ? e(t + "type", "array") : "scaled") && (e(t + "0"), e("d" + t)), r ); } e.exports = function (t, e, r, s, l, c) { var u, f, h = r("z"); if ( ((l = l || "x"), (c = c || "y"), void 0 === h || !h.length) ) return 0; if (i.isArray1D(t.z)) { (u = r(l)), (f = r(c)); var p = i.minRowLength(u), d = i.minRowLength(f); if (0 === p || 0 === d) return 0; e._length = Math.min(p, d, h.length); } else { if ( ((u = o(l, r)), (f = o(c, r)), !(function (t) { for ( var e, r = !0, a = !1, o = !1, s = 0; s < t.length; s++ ) { if (((e = t[s]), !i.isArrayOrTypedArray(e))) { r = !1; break; } e.length > 0 && (a = !0); for (var l = 0; l < e.length; l++) if (n(e[l])) { o = !0; break; } } return r && a && o; })(h)) ) return 0; r("transpose"), (e._length = null); } return ( "heatmapgl" === t.type || a.getComponentMethod( "calendars", "handleTraceDefaults", )(t, e, [l, c], s), !0 ); }; }, { "../../lib": 515, "../../registry": 647, "fast-isnumeric": 190, }, ], 817: [ function (t, e, r) { "use strict"; for ( var n = t("../heatmap/attributes"), i = t("../../components/colorscale/attributes"), a = t("../../lib/extend").extendFlat, o = t("../../plot_api/edit_types").overrideAll, s = [ "z", "x", "x0", "dx", "y", "y0", "dy", "text", "transpose", "xtype", "ytype", ], l = {}, c = 0; c < s.length; c++ ) { var u = s[c]; l[u] = n[u]; } (l.zsmooth = { valType: "enumerated", values: ["fast", !1], dflt: "fast", editType: "calc", }), a(l, i("", { cLetter: "z", autoColorDflt: !1 })), (e.exports = o(l, "calc", "nested")); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../heatmap/attributes": 801, }, ], 818: [ function (t, e, r) { "use strict"; var n = t("../../../stackgl_modules").gl_heatmap2d, i = t("../../plots/cartesian/axes"), a = t("../../lib/str2rgbarray"); function o(t, e) { (this.scene = t), (this.uid = e), (this.type = "heatmapgl"), (this.name = ""), (this.hoverinfo = "all"), (this.xData = []), (this.yData = []), (this.zData = []), (this.textLabels = []), (this.idToIndex = []), (this.bounds = [0, 0, 0, 0]), (this.options = { zsmooth: "fast", z: [], x: [], y: [], shape: [0, 0], colorLevels: [0], colorValues: [0, 0, 0, 1], }), (this.heatmap = n(t.glplot, this.options)), (this.heatmap._trace = this); } var s = o.prototype; (s.handlePick = function (t) { var e = this.options, r = e.shape, n = t.pointId, i = n % r[0], a = Math.floor(n / r[0]), o = n; return { trace: this, dataCoord: t.dataCoord, traceCoord: [e.x[i], e.y[a], e.z[o]], textLabel: this.textLabels[n], name: this.name, pointIndex: [a, i], hoverinfo: this.hoverinfo, }; }), (s.update = function (t, e) { var r = e[0]; (this.index = t.index), (this.name = t.name), (this.hoverinfo = t.hoverinfo); var n = r.z; this.options.z = [].concat.apply([], n); var o = n[0].length, s = n.length; (this.options.shape = [o, s]), (this.options.x = r.x), (this.options.y = r.y), (this.options.zsmooth = t.zsmooth); var l = (function (t) { for ( var e = t.colorscale, r = t.zmin, n = t.zmax, i = e.length, o = new Array(i), s = new Array(4 * i), l = 0; l < i; l++ ) { var c = e[l], u = a(c[1]); o[l] = r + c[0] * (n - r); for (var f = 0; f < 4; f++) s[4 * l + f] = u[f]; } return { colorLevels: o, colorValues: s }; })(t); (this.options.colorLevels = l.colorLevels), (this.options.colorValues = l.colorValues), (this.textLabels = [].concat.apply([], t.text)), this.heatmap.update(this.options); var c, u, f = this.scene.xaxis, h = this.scene.yaxis; !1 === t.zsmooth && ((c = { ppad: r.x[1] - r.x[0] }), (u = { ppad: r.y[1] - r.y[0] })), (t._extremes[f._id] = i.findExtremes(f, r.x, c)), (t._extremes[h._id] = i.findExtremes(h, r.y, u)); }), (s.dispose = function () { this.heatmap.dispose(); }), (e.exports = function (t, e, r) { var n = new o(t, e.uid); return n.update(e, r), n; }); }, { "../../../stackgl_modules": 1133, "../../lib/str2rgbarray": 540, "../../plots/cartesian/axes": 566, }, ], 819: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../heatmap/xyz_defaults"), a = t("../../components/colorscale/defaults"), o = t("./attributes"); e.exports = function (t, e, r, s) { function l(r, i) { return n.coerce(t, e, o, r, i); } i(t, e, l, s) ? (l("text"), l("zsmooth"), a(t, e, s, l, { prefix: "", cLetter: "z" })) : (e.visible = !1); }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "../heatmap/xyz_defaults": 816, "./attributes": 817, }, ], 820: [ function (t, e, r) { "use strict"; [ "*heatmapgl* trace is deprecated!", "Please consider switching to the *heatmap* or *image* trace types.", "Alternatively you could contribute/sponsor rewriting this trace type", "based on cartesian features and using regl framework.", ].join(" "); e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../heatmap/colorbar"), calc: t("../heatmap/calc"), plot: t("./convert"), moduleType: "trace", name: "heatmapgl", basePlotModule: t("../../plots/gl2d"), categories: ["gl", "gl2d", "2dMap"], meta: {}, }; }, { "../../plots/gl2d": 605, "../heatmap/calc": 802, "../heatmap/colorbar": 804, "./attributes": 817, "./convert": 818, "./defaults": 819, }, ], 821: [ function (t, e, r) { "use strict"; var n = t("../bar/attributes"), i = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, a = t("../../plots/template_attributes").hovertemplateAttrs, o = t("../../plots/template_attributes").texttemplateAttrs, s = t("../../plots/font_attributes"), l = t("./bin_attributes"), c = t("./constants"), u = t("../../lib/extend").extendFlat; e.exports = { x: { valType: "data_array", editType: "calc+clearAxisTypes", }, y: { valType: "data_array", editType: "calc+clearAxisTypes", }, xhoverformat: i("x"), yhoverformat: i("y"), text: u({}, n.text, {}), hovertext: u({}, n.hovertext, {}), orientation: n.orientation, histfunc: { valType: "enumerated", values: ["count", "sum", "avg", "min", "max"], dflt: "count", editType: "calc", }, histnorm: { valType: "enumerated", values: [ "", "percent", "probability", "density", "probability density", ], dflt: "", editType: "calc", }, cumulative: { enabled: { valType: "boolean", dflt: !1, editType: "calc", }, direction: { valType: "enumerated", values: ["increasing", "decreasing"], dflt: "increasing", editType: "calc", }, currentbin: { valType: "enumerated", values: ["include", "exclude", "half"], dflt: "include", editType: "calc", }, editType: "calc", }, nbinsx: { valType: "integer", min: 0, dflt: 0, editType: "calc", }, xbins: l("x", !0), nbinsy: { valType: "integer", min: 0, dflt: 0, editType: "calc", }, ybins: l("y", !0), autobinx: { valType: "boolean", dflt: null, editType: "calc", }, autobiny: { valType: "boolean", dflt: null, editType: "calc", }, bingroup: { valType: "string", dflt: "", editType: "calc" }, hovertemplate: a({}, { keys: c.eventDataKeys }), texttemplate: o( { arrayOk: !1, editType: "plot" }, { keys: ["label", "value"] }, ), textposition: u({}, n.textposition, { arrayOk: !1 }), textfont: s({ arrayOk: !1, editType: "plot", colorEditType: "style", }), outsidetextfont: s({ arrayOk: !1, editType: "plot", colorEditType: "style", }), insidetextfont: s({ arrayOk: !1, editType: "plot", colorEditType: "style", }), insidetextanchor: n.insidetextanchor, textangle: n.textangle, cliponaxis: n.cliponaxis, constraintext: n.constraintext, marker: n.marker, offsetgroup: n.offsetgroup, alignmentgroup: n.alignmentgroup, selected: n.selected, unselected: n.unselected, _deprecated: { bardir: n._deprecated.bardir }, }; }, { "../../lib/extend": 505, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/font_attributes": 594, "../../plots/template_attributes": 642, "../bar/attributes": 657, "./bin_attributes": 823, "./constants": 827, }, ], 822: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { for (var r = t.length, n = 0, i = 0; i < r; i++) e[i] ? ((t[i] /= e[i]), (n += t[i])) : (t[i] = null); return n; }; }, {}, ], 823: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { return { start: { valType: "any", editType: "calc" }, end: { valType: "any", editType: "calc" }, size: { valType: "any", editType: "calc" }, editType: "calc", }; }; }, {}, ], 824: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"); e.exports = { count: function (t, e, r) { return r[t]++, 1; }, sum: function (t, e, r, i) { var a = i[e]; return n(a) ? ((a = Number(a)), (r[t] += a), a) : 0; }, avg: function (t, e, r, i, a) { var o = i[e]; return n(o) && ((o = Number(o)), (r[t] += o), a[t]++), 0; }, min: function (t, e, r, i) { var a = i[e]; if (n(a)) { if (((a = Number(a)), !n(r[t]))) return (r[t] = a), a; if (r[t] > a) { var o = a - r[t]; return (r[t] = a), o; } } return 0; }, max: function (t, e, r, i) { var a = i[e]; if (n(a)) { if (((a = Number(a)), !n(r[t]))) return (r[t] = a), a; if (r[t] < a) { var o = a - r[t]; return (r[t] = a), o; } } return 0; }, }; }, { "fast-isnumeric": 190 }, ], 825: [ function (t, e, r) { "use strict"; var n = t("../../constants/numerical"), i = n.ONEAVGYEAR, a = n.ONEAVGMONTH, o = n.ONEDAY, s = n.ONEHOUR, l = n.ONEMIN, c = n.ONESEC, u = t("../../plots/cartesian/axes").tickIncrement; function f(t, e, r, n) { if (t * e <= 0) return 1 / 0; for ( var i = Math.abs(e - t), a = "date" === r.type, o = h(i, a), s = 0; s < 10; s++ ) { var l = h(80 * o, a); if (o === l) break; if (!p(l, t, e, a, r, n)) break; o = l; } return o; } function h(t, e) { return e && t > c ? t > o ? t > 1.1 * i ? i : t > 1.1 * a ? a : o : t > s ? s : t > l ? l : c : Math.pow(10, Math.floor(Math.log(t) / Math.LN10)); } function p(t, e, r, n, a, s) { if (n && t > o) { var l = d(e, a, s), c = d(r, a, s), u = t === i ? 0 : 1; return l[u] !== c[u]; } return Math.floor(r / t) - Math.floor(e / t) > 0.1; } function d(t, e, r) { var n = e.c2d(t, i, r).split("-"); return "" === n[0] && (n.unshift(), (n[0] = "-" + n[0])), n; } e.exports = function (t, e, r, n, a) { var s, l, c = -1.1 * e, h = -0.1 * e, p = t - h, d = r[0], m = r[1], g = Math.min( f(d + h, d + p, n, a), f(m + h, m + p, n, a), ), v = Math.min( f(d + c, d + h, n, a), f(m + c, m + h, n, a), ); if ( (g > v && v < Math.abs(m - d) / 4e3 ? ((s = g), (l = !1)) : ((s = Math.min(g, v)), (l = !0)), "date" === n.type && s > o) ) { var y = s === i ? 1 : 6, x = s === i ? "M12" : "M1"; return function (e, r) { var o = n.c2d(e, i, a), s = o.indexOf("-", y); s > 0 && (o = o.substr(0, s)); var c = n.d2c(o, 0, a); if (c < e) { var f = u(c, x, !1, a); (c + f) / 2 < e + t && (c = f); } return r && l ? u(c, x, !0, a) : c; }; } return function (e, r) { var n = s * Math.round(e / s); return ( n + s / 10 < e && n + 0.9 * s < e + t && (n += s), r && l && (n -= s), n ); }; }; }, { "../../constants/numerical": 491, "../../plots/cartesian/axes": 566, }, ], 826: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("../../registry"), o = t("../../plots/cartesian/axes"), s = t("../bar/arrays_to_calcdata"), l = t("./bin_functions"), c = t("./norm_functions"), u = t("./average"), f = t("./bin_label_vals"); function h(t, e, r, s, l) { var c, u, f, p, d, m, g, v = s + "bins", y = t._fullLayout, x = e["_" + s + "bingroup"], b = y._histogramBinOpts[x], _ = "overlay" === y.barmode, w = function (t) { return r.r2c(t, 0, p); }, T = function (t) { return r.c2r(t, 0, p); }, k = "date" === r.type ? function (t) { return t || 0 === t ? i.cleanDate(t, null, p) : null; } : function (t) { return n(t) ? Number(t) : null; }; function A(t, e, r) { e[t + "Found"] ? ((e[t] = k(e[t])), null === e[t] && (e[t] = r[t])) : ((m[t] = e[t] = r[t]), i.nestedProperty(u[0], v + "." + t).set(r[t])); } if (e["_" + s + "autoBinFinished"]) delete e["_" + s + "autoBinFinished"]; else { u = b.traces; var M = [], S = !0, E = !1, L = !1; for (c = 0; c < u.length; c++) if ((f = u[c]).visible) { var C = b.dirs[c]; (d = f["_" + C + "pos0"] = r.makeCalcdata(f, C)), (M = i.concat(M, d)), delete f["_" + s + "autoBinFinished"], !0 === e.visible && (S ? (S = !1) : (delete f._autoBin, (f["_" + s + "autoBinFinished"] = 1)), a.traceIs(f, "2dMap") && (E = !0), "histogram2dcontour" === f.type && (L = !0)); } p = u[0][s + "calendar"]; var P = o.autoBin( M, r, b.nbins, E, p, b.sizeFound && b.size, ), I = (u[0]._autoBin = {}); if ( ((m = I[b.dirs[0]] = {}), L && (b.size || (P.start = T( o.tickIncrement(w(P.start), P.size, !0, p), )), void 0 === b.end && (P.end = T( o.tickIncrement(w(P.end), P.size, !1, p), ))), _ && !a.traceIs(e, "2dMap") && 0 === P._dataSpan && "category" !== r.type && "multicategory" !== r.type) ) { if (l) return [P, d, !0]; P = (function (t, e, r, n, a) { var o, s, l, c = t._fullLayout, u = (function (t, e) { for ( var r = e.xaxis, n = e.yaxis, i = e.orientation, a = [], o = t._fullData, s = 0; s < o.length; s++ ) { var l = o[s]; "histogram" === l.type && !0 === l.visible && l.orientation === i && l.xaxis === r && l.yaxis === n && a.push(l); } return a; })(t, e), f = !1, p = 1 / 0, d = [e]; for (o = 0; o < u.length; o++) if ((s = u[o]) === e) f = !0; else if (f) { var m = h(t, s, r, n, !0), g = m[0], v = m[2]; (s["_" + n + "autoBinFinished"] = 1), (s["_" + n + "pos0"] = m[1]), v ? d.push(s) : (p = Math.min(p, g.size)); } else (l = c._histogramBinOpts[s["_" + n + "bingroup"]]), (p = Math.min(p, l.size || s[a].size)); var y = new Array(d.length); for (o = 0; o < d.length; o++) for ( var x = d[o]["_" + n + "pos0"], b = 0; b < x.length; b++ ) if (void 0 !== x[b]) { y[o] = x[b]; break; } isFinite(p) || (p = i.distinctVals(y).minDiff); for (o = 0; o < d.length; o++) { var _ = (s = d[o])[n + "calendar"], w = { start: r.c2r(y[o] - p / 2, 0, _), end: r.c2r(y[o] + p / 2, 0, _), size: p, }; (s._input[a] = s[a] = w), (l = c._histogramBinOpts[s["_" + n + "bingroup"]]) && i.extendFlat(l, w); } return e[a]; })(t, e, r, s, v); } (g = f.cumulative || {}).enabled && "include" !== g.currentbin && ("decreasing" === g.direction ? (P.start = T( o.tickIncrement(w(P.start), P.size, !0, p), )) : (P.end = T( o.tickIncrement(w(P.end), P.size, !1, p), ))), (b.size = P.size), b.sizeFound || ((m.size = P.size), i.nestedProperty(u[0], v + ".size").set(P.size)), A("start", b, P), A("end", b, P); } (d = e["_" + s + "pos0"]), delete e["_" + s + "pos0"]; var O = e._input[v] || {}, z = i.extendFlat({}, b), D = b.start, R = r.r2l(O.start), F = void 0 !== R; if ((b.startFound || F) && R !== r.r2l(D)) { var B = F ? R : i.aggNums(Math.min, null, d), N = { type: "category" === r.type || "multicategory" === r.type ? "linear" : r.type, r2l: r.r2l, dtick: b.size, tick0: D, calendar: p, range: [B, o.tickIncrement(B, b.size, !1, p)].map( r.l2r, ), }, j = o.tickFirst(N); j > r.r2l(B) && (j = o.tickIncrement(j, b.size, !0, p)), (z.start = r.l2r(j)), F || i.nestedProperty(e, v + ".start").set(z.start); } var U = b.end, V = r.r2l(O.end), H = void 0 !== V; if ((b.endFound || H) && V !== r.r2l(U)) { var q = H ? V : i.aggNums(Math.max, null, d); (z.end = r.l2r(q)), H || i.nestedProperty(e, v + ".start").set(z.end); } var G = "autobin" + s; return ( !1 === e._input[G] && ((e._input[v] = i.extendFlat({}, e[v] || {})), delete e._input[G], delete e[G]), [z, d] ); } e.exports = { calc: function (t, e) { var r, a, p, d, m = [], g = [], v = "h" === e.orientation, y = o.getFromId(t, v ? e.yaxis : e.xaxis), x = v ? "y" : "x", b = { x: "y", y: "x" }[x], _ = e[x + "calendar"], w = e.cumulative, T = h(t, e, y, x), k = T[0], A = T[1], M = "string" == typeof k.size, S = [], E = M ? S : k, L = [], C = [], P = [], I = 0, O = e.histnorm, z = e.histfunc, D = -1 !== O.indexOf("density"); w.enabled && D && ((O = O.replace(/ ?density$/, "")), (D = !1)); var R, F = "max" === z || "min" === z ? null : 0, B = l.count, N = c[O], j = !1, U = function (t) { return y.r2c(t, 0, _); }; for ( i.isArrayOrTypedArray(e[b]) && "count" !== z && ((R = e[b]), (j = "avg" === z), (B = l[z])), r = U(k.start), p = U(k.end) + (r - o.tickIncrement(r, k.size, !1, _)) / 1e6; r < p && m.length < 1e6 && ((a = o.tickIncrement(r, k.size, !1, _)), m.push((r + a) / 2), g.push(F), P.push([]), S.push(r), D && L.push(1 / (a - r)), j && C.push(0), !(a <= r)); ) r = a; S.push(r), M || "date" !== y.type || (E = { start: U(E.start), end: U(E.end), size: E.size, }), t._fullLayout._roundFnOpts || (t._fullLayout._roundFnOpts = {}); var V = e["_" + x + "bingroup"], H = { leftGap: 1 / 0, rightGap: 1 / 0 }; V && (t._fullLayout._roundFnOpts[V] || (t._fullLayout._roundFnOpts[V] = H), (H = t._fullLayout._roundFnOpts[V])); var q, G = g.length, Y = !0, W = H.leftGap, Z = H.rightGap, X = {}; for (r = 0; r < A.length; r++) { var J = A[r]; (d = i.findBin(J, E)) >= 0 && d < G && ((I += B(d, r, g, R, C)), Y && P[d].length && J !== A[P[d][0]] && (Y = !1), P[d].push(r), (X[r] = d), (W = Math.min(W, J - S[d])), (Z = Math.min(Z, S[d + 1] - J))); } (H.leftGap = W), (H.rightGap = Z), Y || (q = function (e, r) { return function () { var n = t._fullLayout._roundFnOpts[V]; return f(n.leftGap, n.rightGap, S, y, _)(e, r); }; }), j && (I = u(g, C)), N && N(g, I, L), w.enabled && (function (t, e, r) { var n, i, a; function o(e) { (a = t[e]), (t[e] /= 2); } function s(e) { (i = t[e]), (t[e] = a + i / 2), (a += i); } if ("half" === r) if ("increasing" === e) for (o(0), n = 1; n < t.length; n++) s(n); else for ( o(t.length - 1), n = t.length - 2; n >= 0; n-- ) s(n); else if ("increasing" === e) { for (n = 1; n < t.length; n++) t[n] += t[n - 1]; "exclude" === r && (t.unshift(0), t.pop()); } else { for (n = t.length - 2; n >= 0; n--) t[n] += t[n + 1]; "exclude" === r && (t.push(0), t.shift()); } })(g, w.direction, w.currentbin); var K = Math.min(m.length, g.length), Q = [], $ = 0, tt = K - 1; for (r = 0; r < K; r++) if (g[r]) { $ = r; break; } for (r = K - 1; r >= $; r--) if (g[r]) { tt = r; break; } for (r = $; r <= tt; r++) if (n(m[r]) && n(g[r])) { var et = { p: m[r], s: g[r], b: 0 }; w.enabled || ((et.pts = P[r]), Y ? (et.ph0 = et.ph1 = P[r].length ? A[P[r][0]] : m[r]) : ((e._computePh = !0), (et.ph0 = q(S[r])), (et.ph1 = q(S[r + 1], !0)))), Q.push(et); } return ( 1 === Q.length && (Q[0].width1 = o.tickIncrement(Q[0].p, k.size, !1, _) - Q[0].p), s(Q, e), i.isArrayOrTypedArray(e.selectedpoints) && i.tagSelected(Q, e, X), Q ); }, calcAllAutoBins: h, }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "../../registry": 647, "../bar/arrays_to_calcdata": 656, "./average": 822, "./bin_functions": 824, "./bin_label_vals": 825, "./norm_functions": 833, "fast-isnumeric": 190, }, ], 827: [ function (t, e, r) { "use strict"; e.exports = { eventDataKeys: ["binNumber"] }; }, {}, ], 828: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axis_ids"), a = t("../../registry").traceIs, o = t("../bar/defaults").handleGroupingDefaults, s = n.nestedProperty, l = t("../../plots/cartesian/constraints").getAxisGroup, c = [ { aStr: { x: "xbins.start", y: "ybins.start" }, name: "start", }, { aStr: { x: "xbins.end", y: "ybins.end" }, name: "end" }, { aStr: { x: "xbins.size", y: "ybins.size" }, name: "size", }, { aStr: { x: "nbinsx", y: "nbinsy" }, name: "nbins" }, ], u = ["x", "y"]; e.exports = function (t, e) { var r, f, h, p, d, m, g, v = (e._histogramBinOpts = {}), y = [], x = {}, b = []; function _(t, e) { return n.coerce(r._input, r, r._module.attributes, t, e); } function w(t) { return "v" === t.orientation ? "x" : "y"; } function T(t, r, a) { var o = t.uid + "__" + a; r || (r = o); var s = (function (t, r) { return i.getFromTrace({ _fullLayout: e }, t, r).type; })(t, a), l = t[a + "calendar"] || "", c = v[r], u = !0; c && (s === c.axType && l === c.calendar ? ((u = !1), c.traces.push(t), c.dirs.push(a)) : ((r = o), s !== c.axType && n.warn( [ "Attempted to group the bins of trace", t.index, "set on a", "type:" + s, "axis", "with bins on", "type:" + c.axType, "axis.", ].join(" "), ), l !== c.calendar && n.warn( [ "Attempted to group the bins of trace", t.index, "set with a", l, "calendar", "with bins", c.calendar ? "on a " + c.calendar + " calendar" : "w/o a set calendar", ].join(" "), ))), u && (v[r] = { traces: [t], dirs: [a], axType: s, calendar: t[a + "calendar"] || "", }), (t["_" + a + "bingroup"] = r); } for (d = 0; d < t.length; d++) (r = t[d]), a(r, "histogram") && (y.push(r), delete r._xautoBinFinished, delete r._yautoBinFinished, a(r, "2dMap") || o(r._input, r, e, _)); var k = e._alignmentOpts || {}; for (d = 0; d < y.length; d++) { if (((r = y[d]), (h = ""), !a(r, "2dMap"))) { if ( ((p = w(r)), "group" === e.barmode && r.alignmentgroup) ) { var A = r[p + "axis"], M = l(e, A) + r.orientation; (k[M] || {})[r.alignmentgroup] && (h = M); } h || "overlay" === e.barmode || (h = l(e, r.xaxis) + l(e, r.yaxis) + w(r)); } h ? (x[h] || (x[h] = []), x[h].push(r)) : b.push(r); } for (h in x) if (1 !== (f = x[h]).length) { var S = !1; for ( f.length && ((r = f[0]), (S = _("bingroup"))), h = S || h, d = 0; d < f.length; d++ ) { var E = (r = f[d])._input.bingroup; E && E !== h && n.warn( [ "Trace", r.index, "must match", "within bingroup", h + ".", "Ignoring its bingroup:", E, "setting.", ].join(" "), ), (r.bingroup = h), T(r, h, w(r)); } } else b.push(f[0]); for (d = 0; d < b.length; d++) { r = b[d]; var L = _("bingroup"); if (a(r, "2dMap")) for (g = 0; g < 2; g++) { var C = _( (p = u[g]) + "bingroup", L ? L + "__" + p : null, ); T(r, C, p); } else T(r, L, w(r)); } for (h in v) { var P = v[h]; for (f = P.traces, m = 0; m < c.length; m++) { var I, O, z = c[m], D = z.name; if ("nbins" !== D || !P.sizeFound) { for (d = 0; d < f.length; d++) { if ( ((r = f[d]), (p = P.dirs[d]), (I = z.aStr[p]), void 0 !== s(r._input, I).get()) ) { (P[D] = _(I)), (P[D + "Found"] = !0); break; } (O = (r._autoBin || {})[p] || {})[D] && s(r, I).set(O[D]); } if ("start" === D || "end" === D) for (; d < f.length; d++) (r = f[d])["_" + p + "bingroup"] && _(I, (O = (r._autoBin || {})[p] || {})[D]); "nbins" !== D || P.sizeFound || P.nbinsFound || ((r = f[0]), (P[D] = _(I))); } } } }; }, { "../../lib": 515, "../../plots/cartesian/axis_ids": 570, "../../plots/cartesian/constraints": 574, "../../registry": 647, "../bar/defaults": 661, }, ], 829: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"), a = t("../../components/color"), o = t("../bar/defaults").handleText, s = t("../bar/style_defaults"), l = t("./attributes"); e.exports = function (t, e, r, c) { function u(r, n) { return i.coerce(t, e, l, r, n); } var f = u("x"), h = u("y"); u("cumulative.enabled") && (u("cumulative.direction"), u("cumulative.currentbin")), u("text"); var p = u("textposition"); o(t, e, c, u, p, { moduleHasSelected: !0, moduleHasUnselected: !0, moduleHasConstrain: !0, moduleHasCliponaxis: !0, moduleHasTextangle: !0, moduleHasInsideanchor: !0, }), u("hovertext"), u("hovertemplate"), u("xhoverformat"), u("yhoverformat"); var d = u("orientation", h && !f ? "h" : "v"), m = "v" === d ? "x" : "y", g = "v" === d ? "y" : "x", v = f && h ? Math.min(i.minRowLength(f) && i.minRowLength(h)) : i.minRowLength(e[m] || []); if (v) { (e._length = v), n.getComponentMethod( "calendars", "handleTraceDefaults", )(t, e, ["x", "y"], c), e[g] && u("histfunc"), u("histnorm"), u("autobin" + m), s(t, e, u, r, c), i.coerceSelectionMarkerOpacity(e, u); var y = (e.marker.line || {}).color, x = n.getComponentMethod("errorbars", "supplyDefaults"); x(t, e, y || a.defaultLine, { axis: "y" }), x(t, e, y || a.defaultLine, { axis: "x", inherit: "y", }); } else e.visible = !1; }; }, { "../../components/color": 367, "../../lib": 515, "../../registry": 647, "../bar/defaults": 661, "../bar/style_defaults": 672, "./attributes": 821, }, ], 830: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n, i) { if ( ((t.x = "xVal" in e ? e.xVal : e.x), (t.y = "yVal" in e ? e.yVal : e.y), "zLabelVal" in e && (t.z = e.zLabelVal), e.xa && (t.xaxis = e.xa), e.ya && (t.yaxis = e.ya), !(r.cumulative || {}).enabled) ) { var a, o = Array.isArray(i) ? n[0].pts[i[0]][i[1]] : n[i].pts; if ( ((t.pointNumbers = o), (t.binNumber = t.pointNumber), delete t.pointNumber, delete t.pointIndex, r._indexToPoints) ) { a = []; for (var s = 0; s < o.length; s++) a = a.concat(r._indexToPoints[o[s]]); } else a = o; t.pointIndices = a; } return t; }; }, {}, ], 831: [ function (t, e, r) { "use strict"; var n = t("../bar/hover").hoverPoints, i = t("../../plots/cartesian/axes").hoverLabelText; e.exports = function (t, e, r, a, o) { var s = n(t, e, r, a, o); if (s) { var l = (t = s[0]).cd[t.index], c = t.cd[0].trace; if (!c.cumulative.enabled) { var u = "h" === c.orientation ? "y" : "x"; t[u + "Label"] = i( t[u + "a"], [l.ph0, l.ph1], c[u + "hoverformat"], ); } return s; } }; }, { "../../plots/cartesian/axes": 566, "../bar/hover": 664 }, ], 832: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), layoutAttributes: t("../bar/layout_attributes"), supplyDefaults: t("./defaults"), crossTraceDefaults: t("./cross_trace_defaults"), supplyLayoutDefaults: t("../bar/layout_defaults"), calc: t("./calc").calc, crossTraceCalc: t("../bar/cross_trace_calc").crossTraceCalc, plot: t("../bar/plot").plot, layerName: "barlayer", style: t("../bar/style").style, styleOnSelect: t("../bar/style").styleOnSelect, colorbar: t("../scatter/marker_colorbar"), hoverPoints: t("./hover"), selectPoints: t("../bar/select"), eventData: t("./event_data"), moduleType: "trace", name: "histogram", basePlotModule: t("../../plots/cartesian"), categories: [ "bar-like", "cartesian", "svg", "bar", "histogram", "oriented", "errorBarsOK", "showLegend", ], meta: {}, }; }, { "../../plots/cartesian": 578, "../bar/cross_trace_calc": 660, "../bar/layout_attributes": 666, "../bar/layout_defaults": 667, "../bar/plot": 668, "../bar/select": 669, "../bar/style": 671, "../scatter/marker_colorbar": 954, "./attributes": 821, "./calc": 826, "./cross_trace_defaults": 828, "./defaults": 829, "./event_data": 830, "./hover": 831, }, ], 833: [ function (t, e, r) { "use strict"; e.exports = { percent: function (t, e) { for (var r = t.length, n = 100 / e, i = 0; i < r; i++) t[i] *= n; }, probability: function (t, e) { for (var r = t.length, n = 0; n < r; n++) t[n] /= e; }, density: function (t, e, r, n) { var i = t.length; n = n || 1; for (var a = 0; a < i; a++) t[a] *= r[a] * n; }, "probability density": function (t, e, r, n) { var i = t.length; n && (e /= n); for (var a = 0; a < i; a++) t[a] *= r[a] / e; }, }; }, {}, ], 834: [ function (t, e, r) { "use strict"; var n = t("../histogram/attributes"), i = t("../histogram/bin_attributes"), a = t("../heatmap/attributes"), o = t("../../plots/attributes"), s = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, l = t("../../plots/template_attributes").hovertemplateAttrs, c = t("../../plots/template_attributes").texttemplateAttrs, u = t("../../components/colorscale/attributes"), f = t("../../lib/extend").extendFlat; e.exports = f( { x: n.x, y: n.y, z: { valType: "data_array", editType: "calc" }, marker: { color: { valType: "data_array", editType: "calc" }, editType: "calc", }, histnorm: n.histnorm, histfunc: n.histfunc, nbinsx: n.nbinsx, xbins: i("x"), nbinsy: n.nbinsy, ybins: i("y"), autobinx: n.autobinx, autobiny: n.autobiny, bingroup: f({}, n.bingroup, {}), xbingroup: f({}, n.bingroup, {}), ybingroup: f({}, n.bingroup, {}), xgap: a.xgap, ygap: a.ygap, zsmooth: a.zsmooth, xhoverformat: s("x"), yhoverformat: s("y"), zhoverformat: s("z", 1), hovertemplate: l({}, { keys: "z" }), texttemplate: c( { arrayOk: !1, editType: "plot" }, { keys: "z" }, ), textfont: a.textfont, showlegend: f({}, o.showlegend, { dflt: !1 }), }, u("", { cLetter: "z", autoColorDflt: !1 }), ); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/template_attributes": 642, "../heatmap/attributes": 801, "../histogram/attributes": 821, "../histogram/bin_attributes": 823, }, ], 835: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"), a = t("../histogram/bin_functions"), o = t("../histogram/norm_functions"), s = t("../histogram/average"), l = t("../histogram/bin_label_vals"), c = t("../histogram/calc").calcAllAutoBins; function u(t, e, r, n) { var i, a = new Array(t); if (n) for (i = 0; i < t; i++) a[i] = 1 / (e[i + 1] - e[i]); else { var o = 1 / r; for (i = 0; i < t; i++) a[i] = o; } return a; } function f(t, e) { return { start: t(e.start), end: t(e.end), size: e.size }; } function h(t, e, r, n, i, a) { var o, s = t.length - 1, c = new Array(s), u = l(r, n, t, i, a); for (o = 0; o < s; o++) { var f = (e || [])[o]; c[o] = void 0 === f ? [u(t[o]), u(t[o + 1], !0)] : [f, f]; } return c; } e.exports = function (t, e) { var r, l, p, d, m = i.getFromId(t, e.xaxis), g = i.getFromId(t, e.yaxis), v = e.xcalendar, y = e.ycalendar, x = function (t) { return m.r2c(t, 0, v); }, b = function (t) { return g.r2c(t, 0, y); }, _ = c(t, e, m, "x"), w = _[0], T = _[1], k = c(t, e, g, "y"), A = k[0], M = k[1], S = e._length; T.length > S && T.splice(S, T.length - S), M.length > S && M.splice(S, M.length - S); var E = [], L = [], C = [], P = "string" == typeof w.size, I = "string" == typeof A.size, O = [], z = [], D = P ? O : w, R = I ? z : A, F = 0, B = [], N = [], j = e.histnorm, U = e.histfunc, V = -1 !== j.indexOf("density"), H = "max" === U || "min" === U ? null : 0, q = a.count, G = o[j], Y = !1, W = [], Z = [], X = "z" in e ? e.z : "marker" in e && Array.isArray(e.marker.color) ? e.marker.color : ""; X && "count" !== U && ((Y = "avg" === U), (q = a[U])); var J = w.size, K = x(w.start), Q = x(w.end) + (K - i.tickIncrement(K, J, !1, v)) / 1e6; for (r = K; r < Q; r = i.tickIncrement(r, J, !1, v)) L.push(H), O.push(r), Y && C.push(0); O.push(r); var $, tt = L.length, et = (r - K) / tt, rt = (($ = K + et / 2), m.c2r($, 0, v)), nt = A.size, it = b(A.start), at = b(A.end) + (it - i.tickIncrement(it, nt, !1, y)) / 1e6; for (r = it; r < at; r = i.tickIncrement(r, nt, !1, y)) { E.push(L.slice()), z.push(r); var ot = new Array(tt); for (l = 0; l < tt; l++) ot[l] = []; N.push(ot), Y && B.push(C.slice()); } z.push(r); var st = E.length, lt = (r - it) / st, ct = (function (t) { return g.c2r(t, 0, y); })(it + lt / 2); V && ((W = u(L.length, D, et, P)), (Z = u(E.length, R, lt, I))), P || "date" !== m.type || (D = f(x, D)), I || "date" !== g.type || (R = f(b, R)); var ut = !0, ft = !0, ht = new Array(tt), pt = new Array(st), dt = 1 / 0, mt = 1 / 0, gt = 1 / 0, vt = 1 / 0; for (r = 0; r < S; r++) { var yt = T[r], xt = M[r]; (p = n.findBin(yt, D)), (d = n.findBin(xt, R)), p >= 0 && p < tt && d >= 0 && d < st && ((F += q(p, r, E[d], X, B[d])), N[d][p].push(r), ut && (void 0 === ht[p] ? (ht[p] = yt) : ht[p] !== yt && (ut = !1)), ft && (void 0 === pt[d] ? (pt[d] = xt) : pt[d] !== xt && (ft = !1)), (dt = Math.min(dt, yt - O[p])), (mt = Math.min(mt, O[p + 1] - yt)), (gt = Math.min(gt, xt - z[d])), (vt = Math.min(vt, z[d + 1] - xt))); } if (Y) for (d = 0; d < st; d++) F += s(E[d], B[d]); if (G) for (d = 0; d < st; d++) G(E[d], F, W, Z[d]); return { x: T, xRanges: h(O, ut && ht, dt, mt, m, v), x0: rt, dx: et, y: M, yRanges: h(z, ft && pt, gt, vt, g, y), y0: ct, dy: lt, z: E, pts: N, }; }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "../histogram/average": 822, "../histogram/bin_functions": 824, "../histogram/bin_label_vals": 825, "../histogram/calc": 826, "../histogram/norm_functions": 833, }, ], 836: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./sample_defaults"), a = t("../heatmap/style_defaults"), o = t("../../components/colorscale/defaults"), s = t("../heatmap/label_defaults"), l = t("./attributes"); e.exports = function (t, e, r, c) { function u(r, i) { return n.coerce(t, e, l, r, i); } i(t, e, u, c), !1 !== e.visible && (a(t, e, u, c), o(t, e, c, u, { prefix: "", cLetter: "z" }), u("hovertemplate"), s(u, c), u("xhoverformat"), u("yhoverformat")); }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "../heatmap/label_defaults": 811, "../heatmap/style_defaults": 815, "./attributes": 834, "./sample_defaults": 839, }, ], 837: [ function (t, e, r) { "use strict"; var n = t("../heatmap/hover"), i = t("../../plots/cartesian/axes").hoverLabelText; e.exports = function (t, e, r, a, o) { var s = n(t, e, r, a, o); if (s) { var l = (t = s[0]).index, c = l[0], u = l[1], f = t.cd[0], h = f.trace, p = f.xRanges[u], d = f.yRanges[c]; return ( (t.xLabel = i(t.xa, [p[0], p[1]], h.xhoverformat)), (t.yLabel = i(t.ya, [d[0], d[1]], h.yhoverformat)), s ); } }; }, { "../../plots/cartesian/axes": 566, "../heatmap/hover": 808 }, ], 838: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), crossTraceDefaults: t("../histogram/cross_trace_defaults"), calc: t("../heatmap/calc"), plot: t("../heatmap/plot"), layerName: "heatmaplayer", colorbar: t("../heatmap/colorbar"), style: t("../heatmap/style"), hoverPoints: t("./hover"), eventData: t("../histogram/event_data"), moduleType: "trace", name: "histogram2d", basePlotModule: t("../../plots/cartesian"), categories: [ "cartesian", "svg", "2dMap", "histogram", "showLegend", ], meta: {}, }; }, { "../../plots/cartesian": 578, "../heatmap/calc": 802, "../heatmap/colorbar": 804, "../heatmap/plot": 813, "../heatmap/style": 814, "../histogram/cross_trace_defaults": 828, "../histogram/event_data": 830, "./attributes": 834, "./defaults": 836, "./hover": 837, }, ], 839: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"); e.exports = function (t, e, r, a) { var o = r("x"), s = r("y"), l = i.minRowLength(o), c = i.minRowLength(s); l && c ? ((e._length = Math.min(l, c)), n.getComponentMethod( "calendars", "handleTraceDefaults", )(t, e, ["x", "y"], a), (r("z") || r("marker.color")) && r("histfunc"), r("histnorm"), r("autobinx"), r("autobiny")) : (e.visible = !1); }; }, { "../../lib": 515, "../../registry": 647 }, ], 840: [ function (t, e, r) { "use strict"; var n = t("../histogram2d/attributes"), i = t("../contour/attributes"), a = t("../../components/colorscale/attributes"), o = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, s = t("../../lib/extend").extendFlat; e.exports = s( { x: n.x, y: n.y, z: n.z, marker: n.marker, histnorm: n.histnorm, histfunc: n.histfunc, nbinsx: n.nbinsx, xbins: n.xbins, nbinsy: n.nbinsy, ybins: n.ybins, autobinx: n.autobinx, autobiny: n.autobiny, bingroup: n.bingroup, xbingroup: n.xbingroup, ybingroup: n.ybingroup, autocontour: i.autocontour, ncontours: i.ncontours, contours: i.contours, line: { color: i.line.color, width: s({}, i.line.width, { dflt: 0.5 }), dash: i.line.dash, smoothing: i.line.smoothing, editType: "plot", }, xhoverformat: o("x"), yhoverformat: o("y"), zhoverformat: o("z", 1), hovertemplate: n.hovertemplate, texttemplate: i.texttemplate, textfont: i.textfont, }, a("", { cLetter: "z", editTypeOverride: "calc" }), ); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/cartesian/axis_format_attributes": 569, "../contour/attributes": 744, "../histogram2d/attributes": 834, }, ], 841: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../histogram2d/sample_defaults"), a = t("../contour/contours_defaults"), o = t("../contour/style_defaults"), s = t("../heatmap/label_defaults"), l = t("./attributes"); e.exports = function (t, e, r, c) { function u(r, i) { return n.coerce(t, e, l, r, i); } i(t, e, u, c), !1 !== e.visible && (a(t, e, u, function (r) { return n.coerce2(t, e, l, r); }), o(t, e, u, c), u("xhoverformat"), u("yhoverformat"), u("hovertemplate"), e.contours && "heatmap" === e.contours.coloring && s(u, c)); }; }, { "../../lib": 515, "../contour/contours_defaults": 751, "../contour/style_defaults": 765, "../heatmap/label_defaults": 811, "../histogram2d/sample_defaults": 839, "./attributes": 840, }, ], 842: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), crossTraceDefaults: t("../histogram/cross_trace_defaults"), calc: t("../contour/calc"), plot: t("../contour/plot").plot, layerName: "contourlayer", style: t("../contour/style"), colorbar: t("../contour/colorbar"), hoverPoints: t("../contour/hover"), moduleType: "trace", name: "histogram2dcontour", basePlotModule: t("../../plots/cartesian"), categories: [ "cartesian", "svg", "2dMap", "contour", "histogram", "showLegend", ], meta: {}, }; }, { "../../plots/cartesian": 578, "../contour/calc": 745, "../contour/colorbar": 747, "../contour/hover": 757, "../contour/plot": 762, "../contour/style": 764, "../histogram/cross_trace_defaults": 828, "./attributes": 840, "./defaults": 841, }, ], 843: [ function (t, e, r) { "use strict"; var n = t( "../../plots/template_attributes", ).hovertemplateAttrs, i = t("../../plots/template_attributes").texttemplateAttrs, a = t("../../components/colorscale/attributes"), o = t("../../plots/domain").attributes, s = t("../pie/attributes"), l = t("../sunburst/attributes"), c = t("../treemap/attributes"), u = t("../treemap/constants"), f = t("../../lib/extend").extendFlat; e.exports = { labels: l.labels, parents: l.parents, values: l.values, branchvalues: l.branchvalues, count: l.count, level: l.level, maxdepth: l.maxdepth, tiling: { orientation: { valType: "enumerated", values: ["v", "h"], dflt: "h", editType: "plot", }, flip: c.tiling.flip, pad: { valType: "number", min: 0, dflt: 0, editType: "plot", }, editType: "calc", }, marker: f( { colors: l.marker.colors, line: l.marker.line, editType: "calc", }, a("marker", { colorAttr: "colors", anim: !1 }), ), leaf: l.leaf, pathbar: c.pathbar, text: s.text, textinfo: l.textinfo, texttemplate: i( { editType: "plot" }, { keys: u.eventDataKeys.concat(["label", "value"]) }, ), hovertext: s.hovertext, hoverinfo: l.hoverinfo, hovertemplate: n({}, { keys: u.eventDataKeys }), textfont: s.textfont, insidetextfont: s.insidetextfont, outsidetextfont: c.outsidetextfont, textposition: c.textposition, sort: s.sort, root: l.root, domain: o({ name: "icicle", trace: !0, editType: "calc" }), }; }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/domain": 593, "../../plots/template_attributes": 642, "../pie/attributes": 910, "../sunburst/attributes": 1058, "../treemap/attributes": 1084, "../treemap/constants": 1087, }, ], 844: [ function (t, e, r) { "use strict"; var n = t("../../plots/plots"); (r.name = "icicle"), (r.plot = function (t, e, i, a) { n.plotBasePlot(r.name, t, e, i, a); }), (r.clean = function (t, e, i, a) { n.cleanBasePlot(r.name, t, e, i, a); }); }, { "../../plots/plots": 628 }, ], 845: [ function (t, e, r) { "use strict"; var n = t("../sunburst/calc"); (r.calc = function (t, e) { return n.calc(t, e); }), (r.crossTraceCalc = function (t) { return n._runCrossTraceCalc("icicle", t); }); }, { "../sunburst/calc": 1060 }, ], 846: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("../../components/color"), o = t("../../plots/domain").defaults, s = t("../bar/defaults").handleText, l = t("../bar/constants").TEXTPAD, c = t("../../components/colorscale"), u = c.hasColorscale, f = c.handleDefaults; e.exports = function (t, e, r, c) { function h(r, a) { return n.coerce(t, e, i, r, a); } var p = h("labels"), d = h("parents"); if (p && p.length && d && d.length) { var m = h("values"); m && m.length ? h("branchvalues") : h("count"), h("level"), h("maxdepth"), h("tiling.orientation"), h("tiling.flip"), h("tiling.pad"); var g = h("text"); h("texttemplate"), e.texttemplate || h( "textinfo", Array.isArray(g) ? "text+label" : "label", ), h("hovertext"), h("hovertemplate"); var v = h("pathbar.visible"); s(t, e, c, h, "auto", { hasPathbar: v, moduleHasSelected: !1, moduleHasUnselected: !1, moduleHasConstrain: !1, moduleHasCliponaxis: !1, moduleHasTextangle: !1, moduleHasInsideanchor: !1, }), h("textposition"), h("marker.line.width") && h("marker.line.color", c.paper_bgcolor), h("marker.colors"); var y = (e._hasColorscale = u(t, "marker", "colors") || (t.marker || {}).coloraxis); y && f(t, e, c, h, { prefix: "marker.", cLetter: "c" }), h("leaf.opacity", y ? 1 : 0.7), (e._hovered = { marker: { line: { width: 2, color: a.contrast(c.paper_bgcolor), }, }, }), v && (h( "pathbar.thickness", e.pathbar.textfont.size + 2 * l, ), h("pathbar.side"), h("pathbar.edgeshape")), h("sort"), h("root.color"), o(e, c, h), (e._length = null); } else e.visible = !1; }; }, { "../../components/color": 367, "../../components/colorscale": 379, "../../lib": 515, "../../plots/domain": 593, "../bar/constants": 659, "../bar/defaults": 661, "./attributes": 843, }, ], 847: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../components/drawing"), o = t("../../lib/svg_text_utils"), s = t("./partition"), l = t("./style").styleOne, c = t("../treemap/constants"), u = t("../sunburst/helpers"), f = t("../sunburst/fx"), h = t("../sunburst/plot").formatSliceLabel; e.exports = function (t, e, r, p, d) { var m = d.width, g = d.height, v = d.viewX, y = d.viewY, x = d.pathSlice, b = d.toMoveInsideSlice, _ = d.strTransform, w = d.hasTransition, T = d.handleSlicesExit, k = d.makeUpdateSliceInterpolator, A = d.makeUpdateTextInterpolator, M = d.prevEntry, S = t._context.staticPlot, E = t._fullLayout, L = e[0].trace, C = -1 !== L.textposition.indexOf("left"), P = -1 !== L.textposition.indexOf("right"), I = -1 !== L.textposition.indexOf("bottom"), O = s(r, [m, g], { flipX: L.tiling.flip.indexOf("x") > -1, flipY: L.tiling.flip.indexOf("y") > -1, orientation: L.tiling.orientation, pad: { inner: L.tiling.pad }, maxDepth: L._maxDepth, }).descendants(), z = 1 / 0, D = -1 / 0; O.forEach(function (t) { var e = t.depth; e >= L._maxDepth ? ((t.x0 = t.x1 = (t.x0 + t.x1) / 2), (t.y0 = t.y1 = (t.y0 + t.y1) / 2)) : ((z = Math.min(z, e)), (D = Math.max(D, e))); }), (p = p.data(O, u.getPtId)), (L._maxVisibleLayers = isFinite(D) ? D - z + 1 : 0), p.enter().append("g").classed("slice", !0), T(p, !1, {}, [m, g], x), p.order(); var R = null; if (w && M) { var F = u.getPtId(M); p.each(function (t) { null === R && u.getPtId(t) === F && (R = { x0: t.x0, x1: t.x1, y0: t.y0, y1: t.y1 }); }); } var B = function () { return R || { x0: 0, x1: m, y0: 0, y1: g }; }, N = p; return ( w && (N = N.transition().each("end", function () { var e = n.select(this); u.setSliceCursor(e, t, { hideOnRoot: !0, hideOnLeaves: !1, isTransitioning: !1, }); })), N.each(function (s) { (s._x0 = v(s.x0)), (s._x1 = v(s.x1)), (s._y0 = y(s.y0)), (s._y1 = y(s.y1)), (s._hoverX = v(s.x1 - L.tiling.pad)), (s._hoverY = y( I ? s.y1 - L.tiling.pad / 2 : s.y0 + L.tiling.pad / 2, )); var p = n.select(this), d = i.ensureSingle( p, "path", "surface", function (t) { t.style("pointer-events", S ? "none" : "all"); }, ); w ? d.transition().attrTween("d", function (t) { var e = k(t, !1, B(), [m, g], { orientation: L.tiling.orientation, flipX: L.tiling.flip.indexOf("x") > -1, flipY: L.tiling.flip.indexOf("y") > -1, }); return function (t) { return x(e(t)); }; }) : d.attr("d", x), p .call(f, r, t, e, { styleOne: l, eventDataKeys: c.eventDataKeys, transitionTime: c.CLICK_TRANSITION_TIME, transitionEasing: c.CLICK_TRANSITION_EASING, }) .call(u.setSliceCursor, t, { isTransitioning: t._transitioning, }), d.call(l, s, L, { hovered: !1 }), s.x0 === s.x1 || s.y0 === s.y1 ? (s._text = "") : (s._text = h(s, r, L, e, E) || ""); var T = i.ensureSingle(p, "g", "slicetext"), M = i.ensureSingle(T, "text", "", function (t) { t.attr("data-notex", 1); }), O = i.ensureUniformFontSize( t, u.determineTextFont(L, s, E.font), ); M.text(s._text || " ") .classed("slicetext", !0) .attr( "text-anchor", P ? "end" : C ? "start" : "middle", ) .call(a.font, O) .call(o.convertToTspans, t), (s.textBB = a.bBox(M.node())), (s.transform = b(s, { fontSize: O.size })), (s.transform.fontSize = O.size), w ? M.transition().attrTween( "transform", function (t) { var e = A(t, !1, B(), [m, g]); return function (t) { return _(e(t)); }; }, ) : M.attr("transform", _(s)); }), R ); }; }, { "../../components/drawing": 389, "../../lib": 515, "../../lib/svg_text_utils": 541, "../sunburst/fx": 1063, "../sunburst/helpers": 1064, "../sunburst/plot": 1068, "../treemap/constants": 1087, "./partition": 851, "./style": 853, "@plotly/d3": 58, }, ], 848: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "icicle", basePlotModule: t("./base_plot"), categories: [], animatable: !0, attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyDefaults: t("./defaults"), supplyLayoutDefaults: t("./layout_defaults"), calc: t("./calc").calc, crossTraceCalc: t("./calc").crossTraceCalc, plot: t("./plot"), style: t("./style").style, colorbar: t("../scatter/marker_colorbar"), meta: {}, }; }, { "../scatter/marker_colorbar": 954, "./attributes": 843, "./base_plot": 844, "./calc": 845, "./defaults": 846, "./layout_attributes": 849, "./layout_defaults": 850, "./plot": 852, "./style": 853, }, ], 849: [ function (t, e, r) { "use strict"; e.exports = { iciclecolorway: { valType: "colorlist", editType: "calc" }, extendiciclecolors: { valType: "boolean", dflt: !0, editType: "calc", }, }; }, {}, ], 850: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"); e.exports = function (t, e) { function r(r, a) { return n.coerce(t, e, i, r, a); } r("iciclecolorway", e.colorway), r("extendiciclecolors"); }; }, { "../../lib": 515, "./layout_attributes": 849 }, ], 851: [ function (t, e, r) { "use strict"; var n = t("d3-hierarchy"), i = t("../treemap/flip_tree"); e.exports = function (t, e, r) { var a = r.flipX, o = r.flipY, s = "h" === r.orientation, l = r.maxDepth, c = e[0], u = e[1]; l && ((c = ((t.height + 1) * e[0]) / Math.min(t.height + 1, l)), (u = ((t.height + 1) * e[1]) / Math.min(t.height + 1, l))); var f = n .partition() .padding(r.pad.inner) .size(s ? [e[1], c] : [e[0], u])(t); return ( (s || a || o) && i(f, e, { swapXY: s, flipX: a, flipY: o }), f ); }; }, { "../treemap/flip_tree": 1092, "d3-hierarchy": 115 }, ], 852: [ function (t, e, r) { "use strict"; var n = t("../treemap/draw"), i = t("./draw_descendants"); e.exports = function (t, e, r, a) { return n(t, e, r, a, { type: "icicle", drawDescendants: i, }); }; }, { "../treemap/draw": 1089, "./draw_descendants": 847 }, ], 853: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/color"), a = t("../../lib"), o = t("../bar/uniform_text").resizeText; function s(t, e, r) { var n = e.data.data, o = !e.children, s = n.i, l = a.castOption(r, s, "marker.line.color") || i.defaultLine, c = a.castOption(r, s, "marker.line.width") || 0; t.style("stroke-width", c) .call(i.fill, n.color) .call(i.stroke, l) .style("opacity", o ? r.leaf.opacity : null); } e.exports = { style: function (t) { var e = t._fullLayout._iciclelayer.selectAll(".trace"); o(t, e, "icicle"), e.each(function (t) { var e = n.select(this), r = t[0].trace; e.style("opacity", r.opacity), e.selectAll("path.surface").each(function (t) { n.select(this).call(s, t, r); }); }); }, styleOne: s, }; }, { "../../components/color": 367, "../../lib": 515, "../bar/uniform_text": 673, "@plotly/d3": 58, }, ], 854: [ function (t, e, r) { "use strict"; for ( var n = t("../../plots/attributes"), i = t( "../../plots/template_attributes", ).hovertemplateAttrs, a = t("../../lib/extend").extendFlat, o = t("./constants").colormodel, s = ["rgb", "rgba", "rgba256", "hsl", "hsla"], l = [], c = [], u = 0; u < s.length; u++ ) { var f = o[s[u]]; l.push( "For the `" + s[u] + "` colormodel, it is [" + (f.zminDflt || f.min).join(", ") + "].", ), c.push( "For the `" + s[u] + "` colormodel, it is [" + (f.zmaxDflt || f.max).join(", ") + "].", ); } e.exports = a({ source: { valType: "string", editType: "calc" }, z: { valType: "data_array", editType: "calc" }, colormodel: { valType: "enumerated", values: s, editType: "calc", }, zsmooth: { valType: "enumerated", values: ["fast", !1], dflt: !1, editType: "plot", }, zmin: { valType: "info_array", items: [ { valType: "number", editType: "calc" }, { valType: "number", editType: "calc" }, { valType: "number", editType: "calc" }, { valType: "number", editType: "calc" }, ], editType: "calc", }, zmax: { valType: "info_array", items: [ { valType: "number", editType: "calc" }, { valType: "number", editType: "calc" }, { valType: "number", editType: "calc" }, { valType: "number", editType: "calc" }, ], editType: "calc", }, x0: { valType: "any", dflt: 0, editType: "calc+clearAxisTypes", }, y0: { valType: "any", dflt: 0, editType: "calc+clearAxisTypes", }, dx: { valType: "number", dflt: 1, editType: "calc" }, dy: { valType: "number", dflt: 1, editType: "calc" }, text: { valType: "data_array", editType: "plot" }, hovertext: { valType: "data_array", editType: "plot" }, hoverinfo: a({}, n.hoverinfo, { flags: ["x", "y", "z", "color", "name", "text"], dflt: "x+y+z+text+name", }), hovertemplate: i( {}, { keys: ["z", "color", "colormodel"] }, ), transforms: void 0, }); }, { "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/template_attributes": 642, "./constants": 856, }, ], 855: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./constants"), a = t("fast-isnumeric"), o = t("../../plots/cartesian/axes"), s = t("../../lib").maxRowLength, l = t("./helpers").getImageSize; function c(t, e, r, i) { return function (a) { return n.constrain((a - t) * e, r, i); }; } function u(t, e) { return function (r) { return n.constrain(r, t, e); }; } e.exports = function (t, e) { var r, n; if (e._hasZ) (r = e.z.length), (n = s(e.z)); else if (e._hasSource) { var f = l(e.source); (r = f.height), (n = f.width); } var h, p = o.getFromId(t, e.xaxis || "x"), d = o.getFromId(t, e.yaxis || "y"), m = p.d2c(e.x0) - e.dx / 2, g = d.d2c(e.y0) - e.dy / 2, v = [m, m + n * e.dx], y = [g, g + r * e.dy]; if (p && "log" === p.type) for (h = 0; h < n; h++) v.push(m + h * e.dx); if (d && "log" === d.type) for (h = 0; h < r; h++) y.push(g + h * e.dy); return ( (e._extremes[p._id] = o.findExtremes(p, v)), (e._extremes[d._id] = o.findExtremes(d, y)), (e._scaler = (function (t) { var e = i.colormodel[t.colormodel], r = (e.colormodel || t.colormodel).length; t._sArray = []; for (var n = 0; n < r; n++) e.min[n] !== t.zmin[n] || e.max[n] !== t.zmax[n] ? t._sArray.push( c( t.zmin[n], (e.max[n] - e.min[n]) / (t.zmax[n] - t.zmin[n]), e.min[n], e.max[n], ), ) : t._sArray.push(u(e.min[n], e.max[n])); return function (e) { for (var n = e.slice(0, r), i = 0; i < r; i++) { var o = n[i]; if (!a(o)) return !1; n[i] = t._sArray[i](o); } return n; }; })(e)), [{ x0: m, y0: g, z: e.z, w: n, h: r }] ); }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566, "./constants": 856, "./helpers": 859, "fast-isnumeric": 190, }, ], 856: [ function (t, e, r) { "use strict"; e.exports = { colormodel: { rgb: { min: [0, 0, 0], max: [255, 255, 255], fmt: function (t) { return t.slice(0, 3); }, suffix: ["", "", ""], }, rgba: { min: [0, 0, 0, 0], max: [255, 255, 255, 1], fmt: function (t) { return t.slice(0, 4); }, suffix: ["", "", "", ""], }, rgba256: { colormodel: "rgba", zminDflt: [0, 0, 0, 0], zmaxDflt: [255, 255, 255, 255], min: [0, 0, 0, 0], max: [255, 255, 255, 1], fmt: function (t) { return t.slice(0, 4); }, suffix: ["", "", "", ""], }, hsl: { min: [0, 0, 0], max: [360, 100, 100], fmt: function (t) { var e = t.slice(0, 3); return (e[1] = e[1] + "%"), (e[2] = e[2] + "%"), e; }, suffix: ["\xb0", "%", "%"], }, hsla: { min: [0, 0, 0, 0], max: [360, 100, 100, 1], fmt: function (t) { var e = t.slice(0, 4); return (e[1] = e[1] + "%"), (e[2] = e[2] + "%"), e; }, suffix: ["\xb0", "%", "%", ""], }, }, pixelatedStyle: [ "image-rendering: optimizeSpeed", "image-rendering: -moz-crisp-edges", "image-rendering: -o-crisp-edges", "image-rendering: -webkit-optimize-contrast", "image-rendering: optimize-contrast", "image-rendering: crisp-edges", "image-rendering: pixelated", "", ].join("; "), }; }, {}, ], 857: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("./constants"), o = t("../../snapshot/helpers").IMAGE_URL_PREFIX; e.exports = function (t, e) { function r(r, a) { return n.coerce(t, e, i, r, a); } r("source"), e.source && !e.source.match(o) && delete e.source, (e._hasSource = !!e.source); var s, l = r("z"); ((e._hasZ = !( void 0 === l || !l.length || !l[0] || !l[0].length )), e._hasZ || e._hasSource) ? (r("x0"), r("y0"), r("dx"), r("dy"), e._hasZ ? (r("colormodel", "rgb"), r( "zmin", (s = a.colormodel[e.colormodel]).zminDflt || s.min, ), r("zmax", s.zmaxDflt || s.max)) : e._hasSource && ((e.colormodel = "rgba256"), (s = a.colormodel[e.colormodel]), (e.zmin = s.zminDflt), (e.zmax = s.zmaxDflt)), r("zsmooth"), r("text"), r("hovertext"), r("hovertemplate"), (e._length = null)) : (e.visible = !1); }; }, { "../../lib": 515, "../../snapshot/helpers": 651, "./attributes": 854, "./constants": 856, }, ], 858: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { return ( "xVal" in e && (t.x = e.xVal), "yVal" in e && (t.y = e.yVal), e.xa && (t.xaxis = e.xa), e.ya && (t.yaxis = e.ya), (t.color = e.color), (t.colormodel = e.trace.colormodel), t.z || (t.z = e.color), t ); }; }, {}, ], 859: [ function (t, e, r) { "use strict"; var n = t("probe-image-size/sync"), i = t("../../snapshot/helpers").IMAGE_URL_PREFIX, a = t("buffer/").Buffer; r.getImageSize = function (t) { var e = t.replace(i, ""), r = new a(e, "base64"); return n(r); }; }, { "../../snapshot/helpers": 651, "buffer/": 85, "probe-image-size/sync": 277, }, ], 860: [ function (t, e, r) { "use strict"; var n = t("../../components/fx"), i = t("../../lib"), a = t("./constants"); e.exports = function (t, e, r) { var o = t.cd[0], s = o.trace, l = t.xa, c = t.ya; if ( !( n.inbox(e - o.x0, e - (o.x0 + o.w * s.dx), 0) > 0 || n.inbox(r - o.y0, r - (o.y0 + o.h * s.dy), 0) > 0 ) ) { var u, f = Math.floor((e - o.x0) / s.dx), h = Math.floor(Math.abs(r - o.y0) / s.dy); if ( (s._hasZ ? (u = o.z[h][f]) : s._hasSource && (u = s._canvas.el .getContext("2d", { willReadFrequently: !0 }) .getImageData(f, h, 1, 1).data), u) ) { var p, d = o.hi || s.hoverinfo; if (d) { var m = d.split("+"); -1 !== m.indexOf("all") && (m = ["color"]), -1 !== m.indexOf("color") && (p = !0); } var g, v = a.colormodel[s.colormodel], y = v.colormodel || s.colormodel, x = y.length, b = s._scaler(u), _ = v.suffix, w = []; (s.hovertemplate || p) && (w.push( "[" + [b[0] + _[0], b[1] + _[1], b[2] + _[2]].join( ", ", ), ), 4 === x && w.push(", " + b[3] + _[3]), w.push("]"), (w = w.join("")), (t.extraText = y.toUpperCase() + ": " + w)), Array.isArray(s.hovertext) && Array.isArray(s.hovertext[h]) ? (g = s.hovertext[h][f]) : Array.isArray(s.text) && Array.isArray(s.text[h]) && (g = s.text[h][f]); var T = c.c2p(o.y0 + (h + 0.5) * s.dy), k = o.x0 + (f + 0.5) * s.dx, A = o.y0 + (h + 0.5) * s.dy, M = "[" + u.slice(0, s.colormodel.length).join(", ") + "]"; return [ i.extendFlat(t, { index: [h, f], x0: l.c2p(o.x0 + f * s.dx), x1: l.c2p(o.x0 + (f + 1) * s.dx), y0: T, y1: T, color: b, xVal: k, xLabelVal: k, yVal: A, yLabelVal: A, zLabelVal: M, text: g, hovertemplateLabels: { zLabel: M, colorLabel: w, "color[0]Label": b[0] + _[0], "color[1]Label": b[1] + _[1], "color[2]Label": b[2] + _[2], "color[3]Label": b[3] + _[3], }, }), ]; } } }; }, { "../../components/fx": 407, "../../lib": 515, "./constants": 856, }, ], 861: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("./calc"), plot: t("./plot"), style: t("./style"), hoverPoints: t("./hover"), eventData: t("./event_data"), moduleType: "trace", name: "image", basePlotModule: t("../../plots/cartesian"), categories: [ "cartesian", "svg", "2dMap", "noSortingByValue", ], animatable: !1, meta: {}, }; }, { "../../plots/cartesian": 578, "./attributes": 854, "./calc": 855, "./defaults": 857, "./event_data": 858, "./hover": 860, "./plot": 862, "./style": 863, }, ], 862: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = i.strTranslate, o = t("../../constants/xmlns_namespaces"), s = t("./constants"), l = i.isIOS() || i.isSafari() || i.isIE(); e.exports = function (t, e, r, c) { var u = e.xaxis, f = e.yaxis, h = !(l || t._context._exportedPlot); i.makeTraceGroups(c, r, "im").each(function (e) { var r = n.select(this), l = e[0], c = l.trace, p = ("fast" === c.zsmooth || (!1 === c.zsmooth && h)) && !c._hasZ && c._hasSource && "linear" === u.type && "linear" === f.type; c._realImage = p; var d, m, g, v, y, x, b = l.z, _ = l.x0, w = l.y0, T = l.w, k = l.h, A = c.dx, M = c.dy; for (x = 0; void 0 === d && x < T; ) (d = u.c2p(_ + x * A)), x++; for (x = T; void 0 === m && x > 0; ) (m = u.c2p(_ + x * A)), x--; for (x = 0; void 0 === v && x < k; ) (v = f.c2p(w + x * M)), x++; for (x = k; void 0 === y && x > 0; ) (y = f.c2p(w + x * M)), x--; if ( (m < d && ((g = m), (m = d), (d = g)), y < v && ((g = v), (v = y), (y = g)), !p) ) { (d = Math.max(-0.5 * u._length, d)), (m = Math.min(1.5 * u._length, m)), (v = Math.max(-0.5 * f._length, v)), (y = Math.min(1.5 * f._length, y)); } var S = Math.round(m - d), E = Math.round(y - v); if (S <= 0 || E <= 0) { r.selectAll("image").data([]).exit().remove(); } else { var L = r.selectAll("image").data([e]); L.enter() .append("svg:image") .attr({ xmlns: o.svg, preserveAspectRatio: "none" }), L.exit().remove(); var C = !1 === c.zsmooth ? s.pixelatedStyle : ""; if (p) { var P = i.simpleMap(u.range, u.r2l), I = i.simpleMap(f.range, f.r2l), O = P[1] < P[0], z = I[1] > I[0]; if (O || z) { var D = d + S / 2, R = v + E / 2; C += "transform:" + a(D + "px", R + "px") + "scale(" + (O ? -1 : 1) + "," + (z ? -1 : 1) + ")" + a(-D + "px", -R + "px") + ";"; } } L.attr("style", C); var F = new Promise(function (t) { if (c._hasZ) t(); else if (c._hasSource) if ( c._canvas && c._canvas.el.width === T && c._canvas.el.height === k && c._canvas.source === c.source ) t(); else { var e = document.createElement("canvas"); (e.width = T), (e.height = k); var r = e.getContext("2d", { willReadFrequently: !0, }); c._image = c._image || new Image(); var n = c._image; (n.onload = function () { r.drawImage(n, 0, 0), (c._canvas = { el: e, source: c.source }), t(); }), n.setAttribute("src", c.source); } }).then(function () { var t; if (c._hasZ) t = B(function (t, e) { return b[e][t]; }).toDataURL("image/png"); else if (c._hasSource) if (p) t = c.source; else { var e = c._canvas.el .getContext("2d", { willReadFrequently: !0 }) .getImageData(0, 0, T, k).data; t = B(function (t, r) { var n = 4 * (r * T + t); return [e[n], e[n + 1], e[n + 2], e[n + 3]]; }).toDataURL("image/png"); } L.attr({ "xlink:href": t, height: E, width: S, x: d, y: v, }); }); t._promises.push(F); } function B(t) { var e = document.createElement("canvas"); (e.width = S), (e.height = E); var r, n = e.getContext("2d", { willReadFrequently: !0 }), a = function (t) { return i.constrain( Math.round(u.c2p(_ + t * A) - d), 0, S, ); }, o = function (t) { return i.constrain( Math.round(f.c2p(w + t * M) - v), 0, E, ); }, h = s.colormodel[c.colormodel], p = h.colormodel || c.colormodel, m = h.fmt; for (x = 0; x < l.w; x++) { var g = a(x), y = a(x + 1); if (y !== g && !isNaN(y) && !isNaN(g)) for (var b = 0; b < l.h; b++) { var T = o(b), k = o(b + 1); k === T || isNaN(k) || isNaN(T) || !t(x, b) || ((r = c._scaler(t(x, b))), (n.fillStyle = r ? p + "(" + m(r).join(",") + ")" : "rgba(0,0,0,0)"), n.fillRect(g, T, y - g, k - T)); } } return e; } }); }; }, { "../../constants/xmlns_namespaces": 492, "../../lib": 515, "./constants": 856, "@plotly/d3": 58, }, ], 863: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"); e.exports = function (t) { n.select(t) .selectAll(".im image") .style("opacity", function (t) { return t[0].trace.opacity; }); }; }, { "@plotly/d3": 58 }, ], 864: [ function (t, e, r) { "use strict"; var n = t("../../lib/extend").extendFlat, i = t("../../lib/extend").extendDeep, a = t("../../plot_api/edit_types").overrideAll, o = t("../../plots/font_attributes"), s = t("../../components/color/attributes"), l = t("../../plots/domain").attributes, c = t("../../plots/cartesian/layout_attributes"), u = t("../../plot_api/plot_template").templatedArray, f = t("../../constants/delta.js"), h = t( "../../plots/cartesian/axis_format_attributes", ).descriptionOnlyNumbers, p = o({ editType: "plot", colorEditType: "plot" }), d = { color: { valType: "color", editType: "plot" }, line: { color: { valType: "color", dflt: s.defaultLine, editType: "plot", }, width: { valType: "number", min: 0, dflt: 0, editType: "plot", }, editType: "calc", }, thickness: { valType: "number", min: 0, max: 1, dflt: 1, editType: "plot", }, editType: "calc", }, m = { valType: "info_array", items: [ { valType: "number", editType: "plot" }, { valType: "number", editType: "plot" }, ], editType: "plot", }, g = u("step", i({}, d, { range: m })); e.exports = { mode: { valType: "flaglist", editType: "calc", flags: ["number", "delta", "gauge"], dflt: "number", }, value: { valType: "number", editType: "calc", anim: !0 }, align: { valType: "enumerated", values: ["left", "center", "right"], editType: "plot", }, domain: l({ name: "indicator", trace: !0, editType: "calc", }), title: { text: { valType: "string", editType: "plot" }, align: { valType: "enumerated", values: ["left", "center", "right"], editType: "plot", }, font: n({}, p, {}), editType: "plot", }, number: { valueformat: { valType: "string", dflt: "", editType: "plot", description: h("value"), }, font: n({}, p, {}), prefix: { valType: "string", dflt: "", editType: "plot" }, suffix: { valType: "string", dflt: "", editType: "plot" }, editType: "plot", }, delta: { reference: { valType: "number", editType: "calc" }, position: { valType: "enumerated", values: ["top", "bottom", "left", "right"], dflt: "bottom", editType: "plot", }, relative: { valType: "boolean", editType: "plot", dflt: !1, }, valueformat: { valType: "string", editType: "plot", description: h("value"), }, increasing: { symbol: { valType: "string", dflt: f.INCREASING.SYMBOL, editType: "plot", }, color: { valType: "color", dflt: f.INCREASING.COLOR, editType: "plot", }, editType: "plot", }, decreasing: { symbol: { valType: "string", dflt: f.DECREASING.SYMBOL, editType: "plot", }, color: { valType: "color", dflt: f.DECREASING.COLOR, editType: "plot", }, editType: "plot", }, font: n({}, p, {}), prefix: { valType: "string", dflt: "", editType: "plot" }, suffix: { valType: "string", dflt: "", editType: "plot" }, editType: "calc", }, gauge: { shape: { valType: "enumerated", editType: "plot", dflt: "angular", values: ["angular", "bullet"], }, bar: i({}, d, { color: { dflt: "green" } }), bgcolor: { valType: "color", editType: "plot" }, bordercolor: { valType: "color", dflt: s.defaultLine, editType: "plot", }, borderwidth: { valType: "number", min: 0, dflt: 1, editType: "plot", }, axis: a( { range: m, visible: n({}, c.visible, { dflt: !0 }), tickmode: c.tickmode, nticks: c.nticks, tick0: c.tick0, dtick: c.dtick, tickvals: c.tickvals, ticktext: c.ticktext, ticks: n({}, c.ticks, { dflt: "outside" }), ticklen: c.ticklen, tickwidth: c.tickwidth, tickcolor: c.tickcolor, ticklabelstep: c.ticklabelstep, showticklabels: c.showticklabels, tickfont: o({}), tickangle: c.tickangle, tickformat: c.tickformat, tickformatstops: c.tickformatstops, tickprefix: c.tickprefix, showtickprefix: c.showtickprefix, ticksuffix: c.ticksuffix, showticksuffix: c.showticksuffix, separatethousands: c.separatethousands, exponentformat: c.exponentformat, minexponent: c.minexponent, showexponent: c.showexponent, editType: "plot", }, "plot", ), steps: g, threshold: { line: { color: n({}, d.line.color, {}), width: n({}, d.line.width, { dflt: 1 }), editType: "plot", }, thickness: n({}, d.thickness, { dflt: 0.85 }), value: { valType: "number", editType: "calc", dflt: !1, }, editType: "plot", }, editType: "plot", }, }; }, { "../../components/color/attributes": 366, "../../constants/delta.js": 485, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plot_api/plot_template": 555, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/cartesian/layout_attributes": 579, "../../plots/domain": 593, "../../plots/font_attributes": 594, }, ], 865: [ function (t, e, r) { "use strict"; var n = t("../../plots/plots"); (r.name = "indicator"), (r.plot = function (t, e, i, a) { n.plotBasePlot(r.name, t, e, i, a); }), (r.clean = function (t, e, i, a) { n.cleanBasePlot(r.name, t, e, i, a); }); }, { "../../plots/plots": 628 }, ], 866: [ function (t, e, r) { "use strict"; e.exports = { calc: function (t, e) { var r = [], n = e.value; "number" != typeof e._lastValue && (e._lastValue = e.value); var i = e._lastValue, a = i; return ( e._hasDelta && "number" == typeof e.delta.reference && (a = e.delta.reference), (r[0] = { y: n, lastY: i, delta: n - a, relativeDelta: (n - a) / a, }), r ); }, }; }, {}, ], 867: [ function (t, e, r) { "use strict"; e.exports = { defaultNumberFontSize: 80, bulletNumberDomainSize: 0.25, bulletPadding: 0.025, innerRadius: 0.75, valueThickness: 0.5, titlePadding: 5, horizontalPadding: 10, }; }, {}, ], 868: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("../../plots/domain").defaults, o = t("../../plot_api/plot_template"), s = t("../../plots/array_container_defaults"), l = t("./constants.js"), c = t("../../plots/cartesian/tick_value_defaults"), u = t("../../plots/cartesian/tick_mark_defaults"), f = t("../../plots/cartesian/tick_label_defaults"), h = t("../../plots/cartesian/prefix_suffix_defaults"); function p(t, e) { function r(r, a) { return n.coerce(t, e, i.gauge.steps, r, a); } r("color"), r("line.color"), r("line.width"), r("range"), r("thickness"); } e.exports = { supplyDefaults: function (t, e, r, d) { function m(r, a) { return n.coerce(t, e, i, r, a); } a(e, d, m), m("mode"), (e._hasNumber = -1 !== e.mode.indexOf("number")), (e._hasDelta = -1 !== e.mode.indexOf("delta")), (e._hasGauge = -1 !== e.mode.indexOf("gauge")); var g = m("value"); e._range = [0, "number" == typeof g ? 1.5 * g : 1]; var v, y, x, b, _, w, T = new Array(2); function k(t, e) { return n.coerce(x, b, i.gauge, t, e); } function A(t, e) { return n.coerce(_, w, i.gauge.axis, t, e); } if ( (e._hasNumber && (m("number.valueformat"), m("number.font.color", d.font.color), m("number.font.family", d.font.family), m("number.font.size"), void 0 === e.number.font.size && ((e.number.font.size = l.defaultNumberFontSize), (T[0] = !0)), m("number.prefix"), m("number.suffix"), (v = e.number.font.size)), e._hasDelta && (m("delta.font.color", d.font.color), m("delta.font.family", d.font.family), m("delta.font.size"), void 0 === e.delta.font.size && ((e.delta.font.size = (e._hasNumber ? 0.5 : 1) * (v || l.defaultNumberFontSize)), (T[1] = !0)), m("delta.reference", e.value), m("delta.relative"), m("delta.valueformat", e.delta.relative ? "2%" : ""), m("delta.increasing.symbol"), m("delta.increasing.color"), m("delta.decreasing.symbol"), m("delta.decreasing.color"), m("delta.position"), m("delta.prefix"), m("delta.suffix"), (y = e.delta.font.size)), (e._scaleNumbers = ((!e._hasNumber || T[0]) && (!e._hasDelta || T[1])) || !1), m("title.font.color", d.font.color), m("title.font.family", d.font.family), m( "title.font.size", 0.25 * (v || y || l.defaultNumberFontSize), ), m("title.text"), e._hasGauge) ) { (x = t.gauge) || (x = {}), (b = o.newContainer(e, "gauge")), k("shape"), (e._isBullet = "bullet" === e.gauge.shape) || m("title.align", "center"), (e._isAngular = "angular" === e.gauge.shape) || m("align", "center"), k("bgcolor", d.paper_bgcolor), k("borderwidth"), k("bordercolor"), k("bar.color"), k("bar.line.color"), k("bar.line.width"), k( "bar.thickness", l.valueThickness * ("bullet" === e.gauge.shape ? 0.5 : 1), ), s(x, b, { name: "steps", handleItemDefaults: p }), k("threshold.value"), k("threshold.thickness"), k("threshold.line.width"), k("threshold.line.color"), (_ = {}), x && (_ = x.axis || {}), (w = o.newContainer(b, "axis")), A("visible"), (e._range = A("range", e._range)); var M = { outerTicks: !0 }; c(_, w, A, "linear"), h(_, w, A, "linear", M), f(_, w, A, "linear", M), u(_, w, A, M); } else m("title.align", "center"), m("align", "center"), (e._isAngular = e._isBullet = !1); e._length = null; }, }; }, { "../../lib": 515, "../../plot_api/plot_template": 555, "../../plots/array_container_defaults": 561, "../../plots/cartesian/prefix_suffix_defaults": 583, "../../plots/cartesian/tick_label_defaults": 587, "../../plots/cartesian/tick_mark_defaults": 588, "../../plots/cartesian/tick_value_defaults": 589, "../../plots/domain": 593, "./attributes": 864, "./constants.js": 867, }, ], 869: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "indicator", basePlotModule: t("./base_plot"), categories: ["svg", "noOpacity", "noHover"], animatable: !0, attributes: t("./attributes"), supplyDefaults: t("./defaults").supplyDefaults, calc: t("./calc").calc, plot: t("./plot"), meta: {}, }; }, { "./attributes": 864, "./base_plot": 865, "./calc": 866, "./defaults": 868, "./plot": 870, }, ], 870: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("d3-interpolate").interpolate, a = t("d3-interpolate").interpolateNumber, o = t("../../lib"), s = o.strScale, l = o.strTranslate, c = o.rad2deg, u = t("../../constants/alignment").MID_SHIFT, f = t("../../components/drawing"), h = t("./constants"), p = t("../../lib/svg_text_utils"), d = t("../../plots/cartesian/axes"), m = t("../../plots/cartesian/axis_defaults"), g = t("../../plots/cartesian/position_defaults"), v = t("../../plots/cartesian/layout_attributes"), y = t("../../components/color"), x = { left: "start", center: "middle", right: "end" }, b = { left: 0, center: 0.5, right: 1 }, _ = /[yzafpn\xb5mkMGTPEZY]/; function w(t) { return t && t.duration > 0; } function T(t) { t.each(function (t) { y.stroke(n.select(this), t.line.color); }) .each(function (t) { y.fill(n.select(this), t.color); }) .style("stroke-width", function (t) { return t.line.width; }); } function k(t, e, r) { var n = t._fullLayout, i = o.extendFlat( { type: "linear", ticks: "outside", range: r, showline: !0, }, e, ), a = { type: "linear", _id: "x" + e._id }, s = { letter: "x", font: n.font, noHover: !0, noTickson: !0, }; function l(t, e) { return o.coerce(i, a, v, t, e); } return m(i, a, l, s, n), g(i, a, l, s), a; } function A(t, e, r) { return [ Math.min(e / t.width, r / t.height), t, e + "x" + r, ]; } function M(t, e, r, i) { var a = document.createElementNS( "http://www.w3.org/2000/svg", "text", ), o = n.select(a); return ( o .text(t) .attr("x", 0) .attr("y", 0) .attr("text-anchor", r) .attr("data-unformatted", t) .call(p.convertToTspans, i) .call(f.font, e), f.bBox(o.node()) ); } function S(t, e, r, n, i, a) { var s = "_cache" + e; (t[s] && t[s].key === i) || (t[s] = { key: i, value: r }); var l = o.aggNums(a, null, [t[s].value, n], 2); return (t[s].value = l), l; } e.exports = function (t, e, r, m) { var g, v = t._fullLayout; w(r) && m && (g = m()), o .makeTraceGroups(v._indicatorlayer, e, "trace") .each(function (e) { var m, E, L, C, P, I = e[0].trace, O = n.select(this), z = I._hasGauge, D = I._isAngular, R = I._isBullet, F = I.domain, B = { w: v._size.w * (F.x[1] - F.x[0]), h: v._size.h * (F.y[1] - F.y[0]), l: v._size.l + v._size.w * F.x[0], r: v._size.r + v._size.w * (1 - F.x[1]), t: v._size.t + v._size.h * (1 - F.y[1]), b: v._size.b + v._size.h * F.y[0], }, N = B.l + B.w / 2, j = B.t + B.h / 2, U = Math.min(B.w / 2, B.h), V = h.innerRadius * U, H = I.align || "center"; if (((E = j), z)) { if ( (D && ((m = N), (E = j + U / 2), (L = function (t) { return (function (t, e) { var r = Math.sqrt( (t.width / 2) * (t.width / 2) + t.height * t.height, ); return [e / r, t, e]; })(t, 0.9 * V); })), R) ) { var q = h.bulletPadding, G = 1 - h.bulletNumberDomainSize + q; (m = B.l + (G + (1 - G) * b[H]) * B.w), (L = function (t) { return A( t, (h.bulletNumberDomainSize - q) * B.w, B.h, ); }); } } else (m = B.l + b[H] * B.w), (L = function (t) { return A(t, B.w, B.h); }); !(function (t, e, r, i) { var c, u, h, m = r[0].trace, g = i.numbersX, v = i.numbersY, T = m.align || "center", A = x[T], E = i.transitionOpts, L = i.onComplete, C = o.ensureSingle(e, "g", "numbers"), P = []; m._hasNumber && P.push("number"); m._hasDelta && (P.push("delta"), "left" === m.delta.position && P.reverse()); var I = C.selectAll("text").data(P); function O(e, r, n, i) { if ( !e.match("s") || n >= 0 == i >= 0 || r(n).slice(-1).match(_) || r(i).slice(-1).match(_) ) return r; var a = e .slice() .replace("s", "f") .replace(/\d+/, function (t) { return parseInt(t) - 1; }), o = k(t, { tickformat: a }); return function (t) { return Math.abs(t) < 1 ? d.tickText(o, t).text : r(t); }; } I.enter().append("text"), I.attr("text-anchor", function () { return A; }) .attr("class", function (t) { return t; }) .attr("x", null) .attr("y", null) .attr("dx", null) .attr("dy", null), I.exit().remove(); var z, D = m.mode + m.align; m._hasDelta && ((z = (function () { var e = k( t, { tickformat: m.delta.valueformat }, m._range, ); e.setScale(), d.prepTicks(e); var i = function (t) { return d.tickText(e, t).text; }, o = m.delta.suffix, s = m.delta.prefix, l = function (t) { return m.delta.relative ? t.relativeDelta : t.delta; }, c = function (t, e) { return 0 === t || "number" != typeof t || isNaN(t) ? "-" : (t > 0 ? m.delta.increasing.symbol : m.delta.decreasing.symbol) + s + e(t) + o; }, h = function (t) { return t.delta >= 0 ? m.delta.increasing.color : m.delta.decreasing.color; }; void 0 === m._deltaLastValue && (m._deltaLastValue = l(r[0])); var g = C.select("text.delta"); function v() { g.text(c(l(r[0]), i)) .call(y.fill, h(r[0])) .call(p.convertToTspans, t); } return ( g .call(f.font, m.delta.font) .call( y.fill, h({ delta: m._deltaLastValue }), ), w(E) ? g .transition() .duration(E.duration) .ease(E.easing) .tween("text", function () { var t = n.select(this), e = l(r[0]), o = m._deltaLastValue, s = O(m.delta.valueformat, i, o, e), u = a(o, e); return ( (m._deltaLastValue = e), function (e) { t.text(c(u(e), s)), t.call( y.fill, h({ delta: u(e) }), ); } ); }) .each("end", function () { v(), L && L(); }) .each("interrupt", function () { v(), L && L(); }) : v(), (u = M(c(l(r[0]), i), m.delta.font, A, t)), g ); })()), (D += m.delta.position + m.delta.font.size + m.delta.font.family + m.delta.valueformat), (D += m.delta.increasing.symbol + m.delta.decreasing.symbol), (h = u)); m._hasNumber && (!(function () { var e = k( t, { tickformat: m.number.valueformat }, m._range, ); e.setScale(), d.prepTicks(e); var i = function (t) { return d.tickText(e, t).text; }, o = m.number.suffix, s = m.number.prefix, l = C.select("text.number"); function u() { var e = "number" == typeof r[0].y ? s + i(r[0].y) + o : "-"; l.text(e) .call(f.font, m.number.font) .call(p.convertToTspans, t); } w(E) ? l .transition() .duration(E.duration) .ease(E.easing) .each("end", function () { u(), L && L(); }) .each("interrupt", function () { u(), L && L(); }) .attrTween("text", function () { var t = n.select(this), e = a(r[0].lastY, r[0].y); m._lastValue = r[0].y; var l = O( m.number.valueformat, i, r[0].lastY, r[0].y, ); return function (r) { t.text(s + l(e(r)) + o); }; }) : u(), (c = M( s + i(r[0].y) + o, m.number.font, A, t, )); })(), (D += m.number.font.size + m.number.font.family + m.number.valueformat + m.number.suffix + m.number.prefix), (h = c)); if (m._hasDelta && m._hasNumber) { var R, F, B = [ (c.left + c.right) / 2, (c.top + c.bottom) / 2, ], N = [ (u.left + u.right) / 2, (u.top + u.bottom) / 2, ], j = 0.75 * m.delta.font.size; "left" === m.delta.position && ((R = S( m, "deltaPos", 0, -1 * (c.width * b[m.align] + u.width * (1 - b[m.align]) + j), D, Math.min, )), (F = B[1] - N[1]), (h = { width: c.width + u.width + j, height: Math.max(c.height, u.height), left: u.left + R, right: c.right, top: Math.min(c.top, u.top + F), bottom: Math.max(c.bottom, u.bottom + F), })), "right" === m.delta.position && ((R = S( m, "deltaPos", 0, c.width * (1 - b[m.align]) + u.width * b[m.align] + j, D, Math.max, )), (F = B[1] - N[1]), (h = { width: c.width + u.width + j, height: Math.max(c.height, u.height), left: c.left, right: u.right + R, top: Math.min(c.top, u.top + F), bottom: Math.max(c.bottom, u.bottom + F), })), "bottom" === m.delta.position && ((R = null), (F = u.height), (h = { width: Math.max(c.width, u.width), height: c.height + u.height, left: Math.min(c.left, u.left), right: Math.max(c.right, u.right), top: c.bottom - c.height, bottom: c.bottom + u.height, })), "top" === m.delta.position && ((R = null), (F = c.top), (h = { width: Math.max(c.width, u.width), height: c.height + u.height, left: Math.min(c.left, u.left), right: Math.max(c.right, u.right), top: c.bottom - c.height - u.height, bottom: c.bottom, })), z.attr({ dx: R, dy: F }); } (m._hasNumber || m._hasDelta) && C.attr("transform", function () { var t = i.numbersScaler(h); D += t[2]; var e, r = S( m, "numbersScale", 1, t[0], D, Math.min, ); m._scaleNumbers || (r = 1), (e = m._isAngular ? v - r * h.bottom : v - (r * (h.top + h.bottom)) / 2), (m._numbersTop = r * h.top + e); var n = h[T]; "center" === T && (n = (h.left + h.right) / 2); var a = g - r * n; return ( (a = S( m, "numbersTranslate", 0, a, D, Math.max, )), l(a, e) + s(r) ); }); })(t, O, e, { numbersX: m, numbersY: E, numbersScaler: L, transitionOpts: r, onComplete: g, }), z && ((C = { range: I.gauge.axis.range, color: I.gauge.bgcolor, line: { color: I.gauge.bordercolor, width: 0 }, thickness: 1, }), (P = { range: I.gauge.axis.range, color: "rgba(0, 0, 0, 0)", line: { color: I.gauge.bordercolor, width: I.gauge.borderwidth, }, thickness: 1, })); var Y = O.selectAll("g.angular").data(D ? e : []); Y.exit().remove(); var W = O.selectAll("g.angularaxis").data(D ? e : []); W.exit().remove(), D && (function (t, e, r, a) { var o, s, f, h, p = r[0].trace, m = a.size, g = a.radius, v = a.innerRadius, y = a.gaugeBg, x = a.gaugeOutline, b = [m.l + m.w / 2, m.t + m.h / 2 + g / 2], _ = a.gauge, A = a.layer, M = a.transitionOpts, S = a.onComplete, E = Math.PI / 2; function L(t) { var e = p.gauge.axis.range[0], r = ((t - e) / (p.gauge.axis.range[1] - e)) * Math.PI - E; return r < -E ? -E : r > E ? E : r; } function C(t) { return n.svg .arc() .innerRadius( (v + g) / 2 - (t / 2) * (g - v), ) .outerRadius( (v + g) / 2 + (t / 2) * (g - v), ) .startAngle(-E); } function P(t) { t.attr("d", function (t) { return C(t.thickness) .startAngle(L(t.range[0])) .endAngle(L(t.range[1]))(); }); } _.enter().append("g").classed("angular", !0), _.attr("transform", l(b[0], b[1])), A.enter() .append("g") .classed("angularaxis", !0) .classed("crisp", !0), A.selectAll( "g.xangularaxistick,path,text", ).remove(), ((o = k(t, p.gauge.axis)).type = "linear"), (o.range = p.gauge.axis.range), (o._id = "xangularaxis"), (o.ticklabeloverflow = "allow"), o.setScale(); var I = function (t) { return ( ((o.range[0] - t.x) / (o.range[1] - o.range[0])) * Math.PI + Math.PI ); }, O = {}, z = d.makeLabelFns(o, 0).labelStandoff; (O.xFn = function (t) { var e = I(t); return Math.cos(e) * z; }), (O.yFn = function (t) { var e = I(t), r = Math.sin(e) > 0 ? 0.2 : 1; return ( -Math.sin(e) * (z + t.fontSize * r) + Math.abs(Math.cos(e)) * (t.fontSize * u) ); }), (O.anchorFn = function (t) { var e = I(t), r = Math.cos(e); return Math.abs(r) < 0.1 ? "middle" : r > 0 ? "start" : "end"; }), (O.heightFn = function (t, e, r) { var n = I(t); return -0.5 * (1 + Math.sin(n)) * r; }); var D = function (t) { return l( b[0] + g * Math.cos(t), b[1] - g * Math.sin(t), ); }; f = function (t) { return D(I(t)); }; if ( ((s = d.calcTicks(o)), (h = d.getTickSigns(o)[2]), o.visible) ) { h = "inside" === o.ticks ? -1 : 1; var R = (o.linewidth || 1) / 2; d.drawTicks(t, o, { vals: s, layer: A, path: "M" + h * R + ",0h" + h * o.ticklen, transFn: function (t) { var e = I(t); return D(e) + "rotate(" + -c(e) + ")"; }, }), d.drawLabels(t, o, { vals: s, layer: A, transFn: f, labelFns: O, }); } var F = [y].concat(p.gauge.steps), B = _.selectAll("g.bg-arc").data(F); B.enter() .append("g") .classed("bg-arc", !0) .append("path"), B.select("path").call(P).call(T), B.exit().remove(); var N = C(p.gauge.bar.thickness), j = _.selectAll("g.value-arc").data([ p.gauge.bar, ]); j.enter() .append("g") .classed("value-arc", !0) .append("path"); var U = j.select("path"); w(M) ? (U.transition() .duration(M.duration) .ease(M.easing) .each("end", function () { S && S(); }) .each("interrupt", function () { S && S(); }) .attrTween( "d", ((V = N), (H = L(r[0].lastY)), (q = L(r[0].y)), function () { var t = i(H, q); return function (e) { return V.endAngle(t(e))(); }; }), ), (p._lastValue = r[0].y)) : U.attr( "d", "number" == typeof r[0].y ? N.endAngle(L(r[0].y)) : "M0,0Z", ); var V, H, q; U.call(T), j.exit().remove(), (F = []); var G = p.gauge.threshold.value; (G || 0 === G) && F.push({ range: [G, G], color: p.gauge.threshold.color, line: { color: p.gauge.threshold.line.color, width: p.gauge.threshold.line.width, }, thickness: p.gauge.threshold.thickness, }); var Y = _.selectAll("g.threshold-arc").data(F); Y.enter() .append("g") .classed("threshold-arc", !0) .append("path"), Y.select("path").call(P).call(T), Y.exit().remove(); var W = _.selectAll("g.gauge-outline").data([ x, ]); W.enter() .append("g") .classed("gauge-outline", !0) .append("path"), W.select("path").call(P).call(T), W.exit().remove(); })(t, 0, e, { radius: U, innerRadius: V, gauge: Y, layer: W, size: B, gaugeBg: C, gaugeOutline: P, transitionOpts: r, onComplete: g, }); var Z = O.selectAll("g.bullet").data(R ? e : []); Z.exit().remove(); var X = O.selectAll("g.bulletaxis").data(R ? e : []); X.exit().remove(), R && (function (t, e, r, n) { var i, a, o, s, c, u = r[0].trace, f = n.gauge, p = n.layer, m = n.gaugeBg, g = n.gaugeOutline, v = n.size, x = u.domain, b = n.transitionOpts, _ = n.onComplete; f.enter().append("g").classed("bullet", !0), f.attr("transform", l(v.l, v.t)), p .enter() .append("g") .classed("bulletaxis", !0) .classed("crisp", !0), p .selectAll("g.xbulletaxistick,path,text") .remove(); var A = v.h, M = u.gauge.bar.thickness * A, S = x.x[0], E = x.x[0] + (x.x[1] - x.x[0]) * (u._hasNumber || u._hasDelta ? 1 - h.bulletNumberDomainSize : 1); ((i = k(t, u.gauge.axis))._id = "xbulletaxis"), (i.domain = [S, E]), i.setScale(), (a = d.calcTicks(i)), (o = d.makeTransTickFn(i)), (s = d.getTickSigns(i)[2]), (c = v.t + v.h), i.visible && (d.drawTicks(t, i, { vals: "inside" === i.ticks ? d.clipEnds(i, a) : a, layer: p, path: d.makeTickPath(i, c, s), transFn: o, }), d.drawLabels(t, i, { vals: a, layer: p, transFn: o, labelFns: d.makeLabelFns(i, c), })); function L(t) { t.attr("width", function (t) { return Math.max( 0, i.c2p(t.range[1]) - i.c2p(t.range[0]), ); }) .attr("x", function (t) { return i.c2p(t.range[0]); }) .attr("y", function (t) { return 0.5 * (1 - t.thickness) * A; }) .attr("height", function (t) { return t.thickness * A; }); } var C = [m].concat(u.gauge.steps), P = f.selectAll("g.bg-bullet").data(C); P.enter() .append("g") .classed("bg-bullet", !0) .append("rect"), P.select("rect").call(L).call(T), P.exit().remove(); var I = f .selectAll("g.value-bullet") .data([u.gauge.bar]); I.enter() .append("g") .classed("value-bullet", !0) .append("rect"), I.select("rect") .attr("height", M) .attr("y", (A - M) / 2) .call(T), w(b) ? I.select("rect") .transition() .duration(b.duration) .ease(b.easing) .each("end", function () { _ && _(); }) .each("interrupt", function () { _ && _(); }) .attr( "width", Math.max( 0, i.c2p( Math.min( u.gauge.axis.range[1], r[0].y, ), ), ), ) : I.select("rect").attr( "width", "number" == typeof r[0].y ? Math.max( 0, i.c2p( Math.min( u.gauge.axis.range[1], r[0].y, ), ), ) : 0, ); I.exit().remove(); var O = r.filter(function () { return ( u.gauge.threshold.value || 0 === u.gauge.threshold.value ); }), z = f.selectAll("g.threshold-bullet").data(O); z .enter() .append("g") .classed("threshold-bullet", !0) .append("line"), z .select("line") .attr("x1", i.c2p(u.gauge.threshold.value)) .attr("x2", i.c2p(u.gauge.threshold.value)) .attr( "y1", ((1 - u.gauge.threshold.thickness) / 2) * A, ) .attr( "y2", (1 - (1 - u.gauge.threshold.thickness) / 2) * A, ) .call( y.stroke, u.gauge.threshold.line.color, ) .style( "stroke-width", u.gauge.threshold.line.width, ), z.exit().remove(); var D = f .selectAll("g.gauge-outline") .data([g]); D.enter() .append("g") .classed("gauge-outline", !0) .append("rect"), D.select("rect").call(L).call(T), D.exit().remove(); })(t, 0, e, { gauge: Z, layer: X, size: B, gaugeBg: C, gaugeOutline: P, transitionOpts: r, onComplete: g, }); var J = O.selectAll("text.title").data(e); J.exit().remove(), J.enter().append("text").classed("title", !0), J.attr("text-anchor", function () { return R ? x.right : x[I.title.align]; }) .text(I.title.text) .call(f.font, I.title.font) .call(p.convertToTspans, t), J.attr("transform", function () { var t, e = B.l + B.w * b[I.title.align], r = h.titlePadding, n = f.bBox(J.node()); if (z) { if (D) if (I.gauge.axis.visible) t = f.bBox(W.node()).top - r - n.bottom; else t = B.t + B.h / 2 - U / 2 - n.bottom - r; R && ((t = E - (n.top + n.bottom) / 2), (e = B.l - h.bulletPadding * B.w)); } else t = I._numbersTop - r - n.bottom; return l(e, t); }); }); }; }, { "../../components/color": 367, "../../components/drawing": 389, "../../constants/alignment": 483, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plots/cartesian/axes": 566, "../../plots/cartesian/axis_defaults": 568, "../../plots/cartesian/layout_attributes": 579, "../../plots/cartesian/position_defaults": 582, "./constants": 867, "@plotly/d3": 58, "d3-interpolate": 116, }, ], 871: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/attributes"), i = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, a = t("../../plots/template_attributes").hovertemplateAttrs, o = t("../mesh3d/attributes"), s = t("../../plots/attributes"), l = t("../../lib/extend").extendFlat, c = t("../../plot_api/edit_types").overrideAll; var u = (e.exports = c( l( { x: { valType: "data_array" }, y: { valType: "data_array" }, z: { valType: "data_array" }, value: { valType: "data_array" }, isomin: { valType: "number" }, isomax: { valType: "number" }, surface: { show: { valType: "boolean", dflt: !0 }, count: { valType: "integer", dflt: 2, min: 1 }, fill: { valType: "number", min: 0, max: 1, dflt: 1 }, pattern: { valType: "flaglist", flags: ["A", "B", "C", "D", "E"], extras: ["all", "odd", "even"], dflt: "all", }, }, spaceframe: { show: { valType: "boolean", dflt: !1 }, fill: { valType: "number", min: 0, max: 1, dflt: 0.15, }, }, slices: { x: { show: { valType: "boolean", dflt: !1 }, locations: { valType: "data_array", dflt: [] }, fill: { valType: "number", min: 0, max: 1, dflt: 1, }, }, y: { show: { valType: "boolean", dflt: !1 }, locations: { valType: "data_array", dflt: [] }, fill: { valType: "number", min: 0, max: 1, dflt: 1, }, }, z: { show: { valType: "boolean", dflt: !1 }, locations: { valType: "data_array", dflt: [] }, fill: { valType: "number", min: 0, max: 1, dflt: 1, }, }, }, caps: { x: { show: { valType: "boolean", dflt: !0 }, fill: { valType: "number", min: 0, max: 1, dflt: 1, }, }, y: { show: { valType: "boolean", dflt: !0 }, fill: { valType: "number", min: 0, max: 1, dflt: 1, }, }, z: { show: { valType: "boolean", dflt: !0 }, fill: { valType: "number", min: 0, max: 1, dflt: 1, }, }, }, text: { valType: "string", dflt: "", arrayOk: !0 }, hovertext: { valType: "string", dflt: "", arrayOk: !0 }, hovertemplate: a(), xhoverformat: i("x"), yhoverformat: i("y"), zhoverformat: i("z"), valuehoverformat: i("value", 1), showlegend: l({}, s.showlegend, { dflt: !1 }), }, n("", { colorAttr: "`value`", showScaleDflt: !0, editTypeOverride: "calc", }), { opacity: o.opacity, lightposition: o.lightposition, lighting: o.lighting, flatshading: o.flatshading, contour: o.contour, hoverinfo: l({}, s.hoverinfo), }, ), "calc", "nested", )); (u.flatshading.dflt = !0), (u.lighting.facenormalsepsilon.dflt = 0), (u.x.editType = u.y.editType = u.z.editType = u.value.editType = "calc+clearAxisTypes"), (u.transforms = void 0); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/template_attributes": 642, "../mesh3d/attributes": 876, }, ], 872: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/calc"), i = t("../streamtube/calc").processGrid, a = t("../streamtube/calc").filter; e.exports = function (t, e) { (e._len = Math.min( e.x.length, e.y.length, e.z.length, e.value.length, )), (e._x = a(e.x, e._len)), (e._y = a(e.y, e._len)), (e._z = a(e.z, e._len)), (e._value = a(e.value, e._len)); var r = i(e); (e._gridFill = r.fill), (e._Xs = r.Xs), (e._Ys = r.Ys), (e._Zs = r.Zs), (e._len = r.len); for (var o = 1 / 0, s = -1 / 0, l = 0; l < e._len; l++) { var c = e._value[l]; (o = Math.min(o, c)), (s = Math.max(s, c)); } (e._minValues = o), (e._maxValues = s), (e._vMin = void 0 === e.isomin || null === e.isomin ? o : e.isomin), (e._vMax = void 0 === e.isomax || null === e.isomin ? s : e.isomax), n(t, e, { vals: [e._vMin, e._vMax], containerStr: "", cLetter: "c", }); }; }, { "../../components/colorscale/calc": 375, "../streamtube/calc": 1054, }, ], 873: [ function (t, e, r) { "use strict"; var n = t("../../../stackgl_modules").gl_mesh3d, i = t("../../lib/gl_format_color").parseColorScale, a = t("../../lib/str2rgbarray"), o = t("../../components/colorscale").extractOpts, s = t("../../plots/gl3d/zip3"), l = function (t, e) { for (var r = e.length - 1; r > 0; r--) { var n = Math.min(e[r], e[r - 1]), i = Math.max(e[r], e[r - 1]); if (i > n && n < t && t <= i) return { id: r, distRatio: (i - t) / (i - n) }; } return { id: 0, distRatio: 0 }; }; function c(t, e, r) { (this.scene = t), (this.uid = r), (this.mesh = e), (this.name = ""), (this.data = null), (this.showContour = !1); } var u = c.prototype; (u.handlePick = function (t) { if (t.object === this.mesh) { var e = t.data.index, r = this.data._meshX[e], n = this.data._meshY[e], i = this.data._meshZ[e], a = this.data._Ys.length, o = this.data._Zs.length, s = l(r, this.data._Xs).id, c = l(n, this.data._Ys).id, u = l(i, this.data._Zs).id, f = (t.index = u + o * c + o * a * s); t.traceCoordinate = [ this.data._meshX[f], this.data._meshY[f], this.data._meshZ[f], this.data._value[f], ]; var h = this.data.hovertext || this.data.text; return ( Array.isArray(h) && void 0 !== h[f] ? (t.textLabel = h[f]) : h && (t.textLabel = h), !0 ); } }), (u.update = function (t) { var e = this.scene, r = e.fullSceneLayout; function n(t, e, r, n) { return e.map(function (e) { return t.d2l(e, 0, n) * r; }); } this.data = h(t); var l = { positions: s( n(r.xaxis, t._meshX, e.dataScale[0], t.xcalendar), n(r.yaxis, t._meshY, e.dataScale[1], t.ycalendar), n(r.zaxis, t._meshZ, e.dataScale[2], t.zcalendar), ), cells: s(t._meshI, t._meshJ, t._meshK), lightPosition: [ t.lightposition.x, t.lightposition.y, t.lightposition.z, ], ambient: t.lighting.ambient, diffuse: t.lighting.diffuse, specular: t.lighting.specular, roughness: t.lighting.roughness, fresnel: t.lighting.fresnel, vertexNormalsEpsilon: t.lighting.vertexnormalsepsilon, faceNormalsEpsilon: t.lighting.facenormalsepsilon, opacity: t.opacity, contourEnable: t.contour.show, contourColor: a(t.contour.color).slice(0, 3), contourWidth: t.contour.width, useFacetNormals: t.flatshading, }, c = o(t); (l.vertexIntensity = t._meshIntensity), (l.vertexIntensityBounds = [c.min, c.max]), (l.colormap = i(t)), this.mesh.update(l); }), (u.dispose = function () { this.scene.glplot.remove(this.mesh), this.mesh.dispose(); }); var f = ["xyz", "xzy", "yxz", "yzx", "zxy", "zyx"]; function h(t) { (t._meshI = []), (t._meshJ = []), (t._meshK = []); var e, r, n, i, a, o, s, c = t.surface.show, u = t.spaceframe.show, h = t.surface.fill, p = t.spaceframe.fill, d = !1, m = !1, g = 0, v = t._Xs, y = t._Ys, x = t._Zs, b = v.length, _ = y.length, w = x.length, T = f.indexOf( t._gridFill.replace(/-/g, "").replace(/\+/g, ""), ), k = function (t, e, r) { switch (T) { case 5: return r + w * e + w * _ * t; case 4: return r + w * t + w * b * e; case 3: return e + _ * r + _ * w * t; case 2: return e + _ * t + _ * b * r; case 1: return t + b * r + b * w * e; default: return t + b * e + b * _ * r; } }, A = t._minValues, M = t._maxValues, S = t._vMin, E = t._vMax; function L(t, e, s) { for (var l = o.length, c = r; c < l; c++) if (t === n[c] && e === i[c] && s === a[c]) return c; return -1; } function C() { r = e; } function P() { (n = []), (i = []), (a = []), (o = []), (e = 0), C(); } function I(t, r, s, l) { return ( n.push(t), i.push(r), a.push(s), o.push(l), ++e - 1 ); } function O(t, e, r) { for (var n = [], i = 0; i < t.length; i++) n[i] = t[i] * (1 - r) + r * e[i]; return n; } function z(t) { s = t; } function D(t, e) { return "all" === t || null === t || t.indexOf(e) > -1; } function R(t, e) { return null === t ? e : t; } function F(e, r, n) { C(); var i, a, o, l = [r], c = [n]; if (s >= 1) (l = [r]), (c = [n]); else if (s > 0) { var u = (function (t, e) { var r = t[0], n = t[1], i = t[2], a = (function (t, e, r) { for (var n = [], i = 0; i < t.length; i++) n[i] = (t[i] + e[i] + r[i]) / 3; return n; })(r, n, i), o = Math.sqrt(1 - s), l = O(a, r, o), c = O(a, n, o), u = O(a, i, o), f = e[0], h = e[1], p = e[2]; return { xyzv: [ [r, n, c], [c, l, r], [n, i, u], [u, c, n], [i, r, l], [l, u, i], ], abc: [ [f, h, -1], [-1, -1, f], [h, p, -1], [-1, -1, h], [p, f, -1], [-1, -1, p], ], }; })(r, n); (l = u.xyzv), (c = u.abc); } for (var f = 0; f < l.length; f++) { (r = l[f]), (n = c[f]); for (var h = [], p = 0; p < 3; p++) { var d = r[p][0], m = r[p][1], v = r[p][2], y = r[p][3], x = n[p] > -1 ? n[p] : L(d, m, v); h[p] = x > -1 ? x : I(d, m, v, R(e, y)); } (i = h[0]), (a = h[1]), (o = h[2]), t._meshI.push(i), t._meshJ.push(a), t._meshK.push(o), ++g; } } function B(t, e, r, n) { var i = t[3]; i < r && (i = r), i > n && (i = n); for ( var a = (t[3] - i) / (t[3] - e[3] + 1e-9), o = [], s = 0; s < 4; s++ ) o[s] = (1 - a) * t[s] + a * e[s]; return o; } function N(t, e, r) { return t >= e && t <= r; } function j(t) { var e = 0.001 * (E - S); return t >= S - e && t <= E + e; } function U(e) { for (var r = [], n = 0; n < 4; n++) { var i = e[n]; r.push([t._x[i], t._y[i], t._z[i], t._value[i]]); } return r; } function V(t, e, r, n, i, a) { a || (a = 1), (r = [-1, -1, -1]); var o = !1, s = [ N(e[0][3], n, i), N(e[1][3], n, i), N(e[2][3], n, i), ]; if (!s[0] && !s[1] && !s[2]) return !1; var l = function (t, e, r) { return j(e[0][3]) && j(e[1][3]) && j(e[2][3]) ? (F(t, e, r), !0) : a < 3 && V(t, e, r, S, E, ++a); }; if (s[0] && s[1] && s[2]) return l(t, e, r) || o; var c = !1; return ( [ [0, 1, 2], [2, 0, 1], [1, 2, 0], ].forEach(function (a) { if (s[a[0]] && s[a[1]] && !s[a[2]]) { var u = e[a[0]], f = e[a[1]], h = e[a[2]], p = B(h, u, n, i), d = B(h, f, n, i); (o = l(t, [d, p, u], [-1, -1, r[a[0]]]) || o), (o = l(t, [u, f, d], [r[a[0]], r[a[1]], -1]) || o), (c = !0); } }), c || [ [0, 1, 2], [1, 2, 0], [2, 0, 1], ].forEach(function (a) { if (s[a[0]] && !s[a[1]] && !s[a[2]]) { var u = e[a[0]], f = e[a[1]], h = e[a[2]], p = B(f, u, n, i), d = B(h, u, n, i); (o = l(t, [d, p, u], [-1, -1, r[a[0]]]) || o), (c = !0); } }), o ); } function H(t, e, r, n) { var i = !1, a = U(e), o = [ N(a[0][3], r, n), N(a[1][3], r, n), N(a[2][3], r, n), N(a[3][3], r, n), ]; if (!(o[0] || o[1] || o[2] || o[3])) return i; if (o[0] && o[1] && o[2] && o[3]) return ( m && (i = (function (t, e, r) { var n = function (n, i, a) { F(t, [e[n], e[i], e[a]], [r[n], r[i], r[a]]); }; n(0, 1, 2), n(3, 0, 1), n(2, 3, 0), n(1, 2, 3); })(t, a, e) || i), i ); var s = !1; return ( [ [0, 1, 2, 3], [3, 0, 1, 2], [2, 3, 0, 1], [1, 2, 3, 0], ].forEach(function (l) { if (o[l[0]] && o[l[1]] && o[l[2]] && !o[l[3]]) { var c = a[l[0]], u = a[l[1]], f = a[l[2]], h = a[l[3]]; if (m) i = F(t, [c, u, f], [e[l[0]], e[l[1]], e[l[2]]]) || i; else { var p = B(h, c, r, n), d = B(h, u, r, n), g = B(h, f, r, n); i = F(null, [p, d, g], [-1, -1, -1]) || i; } s = !0; } }), s ? i : ([ [0, 1, 2, 3], [1, 2, 3, 0], [2, 3, 0, 1], [3, 0, 1, 2], [0, 2, 3, 1], [1, 3, 2, 0], ].forEach(function (l) { if (o[l[0]] && o[l[1]] && !o[l[2]] && !o[l[3]]) { var c = a[l[0]], u = a[l[1]], f = a[l[2]], h = a[l[3]], p = B(f, c, r, n), d = B(f, u, r, n), g = B(h, u, r, n), v = B(h, c, r, n); m ? ((i = F(t, [c, v, p], [e[l[0]], -1, -1]) || i), (i = F(t, [u, d, g], [e[l[1]], -1, -1]) || i)) : (i = (function (t, e, r) { var n = function (n, i, a) { F( t, [e[n], e[i], e[a]], [r[n], r[i], r[a]], ); }; n(0, 1, 2), n(2, 3, 0); })( null, [p, d, g, v], [-1, -1, -1, -1], ) || i), (s = !0); } }), s || [ [0, 1, 2, 3], [1, 2, 3, 0], [2, 3, 0, 1], [3, 0, 1, 2], ].forEach(function (l) { if ( o[l[0]] && !o[l[1]] && !o[l[2]] && !o[l[3]] ) { var c = a[l[0]], u = a[l[1]], f = a[l[2]], h = a[l[3]], p = B(u, c, r, n), d = B(f, c, r, n), g = B(h, c, r, n); m ? ((i = F(t, [c, p, d], [e[l[0]], -1, -1]) || i), (i = F(t, [c, d, g], [e[l[0]], -1, -1]) || i), (i = F(t, [c, g, p], [e[l[0]], -1, -1]) || i)) : (i = F(null, [p, d, g], [-1, -1, -1]) || i), (s = !0); } }), i) ); } function q(t, e, r, n, i, a, o, s, l, c, u) { var f = !1; return ( d && (D(t, "A") && (f = H(null, [e, r, n, a], c, u) || f), D(t, "B") && (f = H(null, [r, n, i, l], c, u) || f), D(t, "C") && (f = H(null, [r, a, o, l], c, u) || f), D(t, "D") && (f = H(null, [n, a, s, l], c, u) || f), D(t, "E") && (f = H(null, [r, n, a, l], c, u) || f)), m && (f = H(t, [r, n, a, l], c, u) || f), f ); } function G(t, e, r, n, i, a, o, s) { return [ !0 === s[0] || V(t, U([e, r, n]), [e, r, n], a, o), !0 === s[1] || V(t, U([n, i, e]), [n, i, e], a, o), ]; } function Y(t, e, r, n, i, a, o, s, l) { return s ? G(t, e, r, i, n, a, o, l) : G(t, r, i, n, e, a, o, l); } function W(t, e, r, n, i, a, o) { var s, l, c, u, f = !1, h = function () { (f = V(t, [s, l, c], [-1, -1, -1], i, a) || f), (f = V(t, [c, u, s], [-1, -1, -1], i, a) || f); }, p = o[0], d = o[1], m = o[2]; return ( p && ((s = O( U([k(e, r - 0, n - 0)])[0], U([k(e - 1, r - 0, n - 0)])[0], p, )), (l = O( U([k(e, r - 0, n - 1)])[0], U([k(e - 1, r - 0, n - 1)])[0], p, )), (c = O( U([k(e, r - 1, n - 1)])[0], U([k(e - 1, r - 1, n - 1)])[0], p, )), (u = O( U([k(e, r - 1, n - 0)])[0], U([k(e - 1, r - 1, n - 0)])[0], p, )), h()), d && ((s = O( U([k(e - 0, r, n - 0)])[0], U([k(e - 0, r - 1, n - 0)])[0], d, )), (l = O( U([k(e - 0, r, n - 1)])[0], U([k(e - 0, r - 1, n - 1)])[0], d, )), (c = O( U([k(e - 1, r, n - 1)])[0], U([k(e - 1, r - 1, n - 1)])[0], d, )), (u = O( U([k(e - 1, r, n - 0)])[0], U([k(e - 1, r - 1, n - 0)])[0], d, )), h()), m && ((s = O( U([k(e - 0, r - 0, n)])[0], U([k(e - 0, r - 0, n - 1)])[0], m, )), (l = O( U([k(e - 0, r - 1, n)])[0], U([k(e - 0, r - 1, n - 1)])[0], m, )), (c = O( U([k(e - 1, r - 1, n)])[0], U([k(e - 1, r - 1, n - 1)])[0], m, )), (u = O( U([k(e - 1, r - 0, n)])[0], U([k(e - 1, r - 0, n - 1)])[0], m, )), h()), f ); } function Z(t, e, r, n, i, a, o, s, l, c, u, f) { var h = t; return f ? (d && "even" === t && (h = null), q(h, e, r, n, i, a, o, s, l, c, u)) : (d && "odd" === t && (h = null), q(h, l, s, o, a, i, n, r, e, c, u)); } function X(t, e, r, n, i) { for (var a = [], o = 0, s = 0; s < e.length; s++) for (var l = e[s], c = 1; c < w; c++) for (var u = 1; u < _; u++) a.push( Y( t, k(l, u - 1, c - 1), k(l, u - 1, c), k(l, u, c - 1), k(l, u, c), r, n, (l + u + c) % 2, i && i[o] ? i[o] : [], ), ), o++; return a; } function J(t, e, r, n, i) { for (var a = [], o = 0, s = 0; s < e.length; s++) for (var l = e[s], c = 1; c < b; c++) for (var u = 1; u < w; u++) a.push( Y( t, k(c - 1, l, u - 1), k(c, l, u - 1), k(c - 1, l, u), k(c, l, u), r, n, (c + l + u) % 2, i && i[o] ? i[o] : [], ), ), o++; return a; } function K(t, e, r, n, i) { for (var a = [], o = 0, s = 0; s < e.length; s++) for (var l = e[s], c = 1; c < _; c++) for (var u = 1; u < b; u++) a.push( Y( t, k(u - 1, c - 1, l), k(u - 1, c, l), k(u, c - 1, l), k(u, c, l), r, n, (u + c + l) % 2, i && i[o] ? i[o] : [], ), ), o++; return a; } function Q(t, e, r) { for (var n = 1; n < w; n++) for (var i = 1; i < _; i++) for (var a = 1; a < b; a++) Z( t, k(a - 1, i - 1, n - 1), k(a - 1, i - 1, n), k(a - 1, i, n - 1), k(a - 1, i, n), k(a, i - 1, n - 1), k(a, i - 1, n), k(a, i, n - 1), k(a, i, n), e, r, (a + i + n) % 2, ); } function $(t, e, r) { (d = !0), Q(t, e, r), (d = !1); } function tt(t, e, r, n, i, a) { for (var o = [], s = 0, l = 0; l < e.length; l++) for (var c = e[l], u = 1; u < w; u++) for (var f = 1; f < _; f++) o.push( W(t, c, f, u, r, n, i[l], a && a[s] && a[s]), ), s++; return o; } function et(t, e, r, n, i, a) { for (var o = [], s = 0, l = 0; l < e.length; l++) for (var c = e[l], u = 1; u < b; u++) for (var f = 1; f < w; f++) o.push( W(t, u, c, f, r, n, i[l], a && a[s] && a[s]), ), s++; return o; } function rt(t, e, r, n, i, a) { for (var o = [], s = 0, l = 0; l < e.length; l++) for (var c = e[l], u = 1; u < _; u++) for (var f = 1; f < b; f++) o.push( W(t, f, u, c, r, n, i[l], a && a[s] && a[s]), ), s++; return o; } function nt(t, e) { for (var r = [], n = t; n < e; n++) r.push(n); return r; } return ( (function () { if ( (P(), (function () { for (var e = 0; e < b; e++) for (var r = 0; r < _; r++) for (var n = 0; n < w; n++) { var i = k(e, r, n); I(t._x[i], t._y[i], t._z[i], t._value[i]); } })(), u && p && (z(p), (m = !0), Q(null, S, E), (m = !1)), c && h) ) { z(h); for ( var e = t.surface.pattern, r = t.surface.count, s = 0; s < r; s++ ) { var f = 1 === r ? 0.5 : s / (r - 1), d = (1 - f) * S + f * E, T = Math.abs(d - A) > Math.abs(d - M) ? [A, d] : [d, M]; $(e, T[0], T[1]); } } var L = [ [Math.min(S, M), Math.max(S, M)], [Math.min(A, E), Math.max(A, E)], ]; ["x", "y", "z"].forEach(function (e) { for (var r = [], n = 0; n < L.length; n++) { var i = 0, a = L[n][0], o = L[n][1], s = t.slices[e]; if (s.show && s.fill) { z(s.fill); var c = [], u = [], f = []; if (s.locations.length) for (var h = 0; h < s.locations.length; h++) { var p = l( s.locations[h], "x" === e ? v : "y" === e ? y : x, ); 0 === p.distRatio ? c.push(p.id) : p.id > 0 && (u.push(p.id), "x" === e ? f.push([p.distRatio, 0, 0]) : "y" === e ? f.push([0, p.distRatio, 0]) : f.push([0, 0, p.distRatio])); } else c = nt( 1, "x" === e ? b - 1 : "y" === e ? _ - 1 : w - 1, ); u.length > 0 && ((r[i] = "x" === e ? tt(null, u, a, o, f, r[i]) : "y" === e ? et(null, u, a, o, f, r[i]) : rt(null, u, a, o, f, r[i])), i++), c.length > 0 && ((r[i] = "x" === e ? X(null, c, a, o, r[i]) : "y" === e ? J(null, c, a, o, r[i]) : K(null, c, a, o, r[i])), i++); } var d = t.caps[e]; d.show && d.fill && (z(d.fill), (r[i] = "x" === e ? X(null, [0, b - 1], a, o, r[i]) : "y" === e ? J(null, [0, _ - 1], a, o, r[i]) : K(null, [0, w - 1], a, o, r[i])), i++); } }), 0 === g && P(), (t._meshX = n), (t._meshY = i), (t._meshZ = a), (t._meshIntensity = o), (t._Xs = v), (t._Ys = y), (t._Zs = x); })(), t ); } e.exports = { findNearestOnAxis: l, generateIsoMeshes: h, createIsosurfaceTrace: function (t, e) { var r = t.glplot.gl, i = n({ gl: r }), a = new c(t, i, e.uid); return (i._trace = a), a.update(e), t.glplot.add(i), a; }, }; }, { "../../../stackgl_modules": 1133, "../../components/colorscale": 379, "../../lib/gl_format_color": 511, "../../lib/str2rgbarray": 540, "../../plots/gl3d/zip3": 618, }, ], 874: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../registry"), a = t("./attributes"), o = t("../../components/colorscale/defaults"); function s(t, e, r, n, a) { var s = a("isomin"), l = a("isomax"); null != l && null != s && s > l && ((e.isomin = null), (e.isomax = null)); var c = a("x"), u = a("y"), f = a("z"), h = a("value"); c && c.length && u && u.length && f && f.length && h && h.length ? (i.getComponentMethod( "calendars", "handleTraceDefaults", )(t, e, ["x", "y", "z"], n), a("valuehoverformat"), ["x", "y", "z"].forEach(function (t) { a(t + "hoverformat"); var e = "caps." + t; a(e + ".show") && a(e + ".fill"); var r = "slices." + t; a(r + ".show") && (a(r + ".fill"), a(r + ".locations")); }), a("spaceframe.show") && a("spaceframe.fill"), a("surface.show") && (a("surface.count"), a("surface.fill"), a("surface.pattern")), a("contour.show") && (a("contour.color"), a("contour.width")), [ "text", "hovertext", "hovertemplate", "lighting.ambient", "lighting.diffuse", "lighting.specular", "lighting.roughness", "lighting.fresnel", "lighting.vertexnormalsepsilon", "lighting.facenormalsepsilon", "lightposition.x", "lightposition.y", "lightposition.z", "flatshading", "opacity", ].forEach(function (t) { a(t); }), o(t, e, n, a, { prefix: "", cLetter: "c" }), (e._length = null)) : (e.visible = !1); } e.exports = { supplyDefaults: function (t, e, r, i) { s(t, e, r, i, function (r, i) { return n.coerce(t, e, a, r, i); }); }, supplyIsoDefaults: s, }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "../../registry": 647, "./attributes": 871, }, ], 875: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults").supplyDefaults, calc: t("./calc"), colorbar: { min: "cmin", max: "cmax" }, plot: t("./convert").createIsosurfaceTrace, moduleType: "trace", name: "isosurface", basePlotModule: t("../../plots/gl3d"), categories: ["gl3d", "showLegend"], meta: {}, }; }, { "../../plots/gl3d": 607, "./attributes": 871, "./calc": 872, "./convert": 873, "./defaults": 874, }, ], 876: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/attributes"), i = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, a = t("../../plots/template_attributes").hovertemplateAttrs, o = t("../surface/attributes"), s = t("../../plots/attributes"), l = t("../../lib/extend").extendFlat; e.exports = l( { x: { valType: "data_array", editType: "calc+clearAxisTypes", }, y: { valType: "data_array", editType: "calc+clearAxisTypes", }, z: { valType: "data_array", editType: "calc+clearAxisTypes", }, i: { valType: "data_array", editType: "calc" }, j: { valType: "data_array", editType: "calc" }, k: { valType: "data_array", editType: "calc" }, text: { valType: "string", dflt: "", arrayOk: !0, editType: "calc", }, hovertext: { valType: "string", dflt: "", arrayOk: !0, editType: "calc", }, hovertemplate: a({ editType: "calc" }), xhoverformat: i("x"), yhoverformat: i("y"), zhoverformat: i("z"), delaunayaxis: { valType: "enumerated", values: ["x", "y", "z"], dflt: "z", editType: "calc", }, alphahull: { valType: "number", dflt: -1, editType: "calc", }, intensity: { valType: "data_array", editType: "calc" }, intensitymode: { valType: "enumerated", values: ["vertex", "cell"], dflt: "vertex", editType: "calc", }, color: { valType: "color", editType: "calc" }, vertexcolor: { valType: "data_array", editType: "calc" }, facecolor: { valType: "data_array", editType: "calc" }, transforms: void 0, }, n("", { colorAttr: "`intensity`", showScaleDflt: !0, editTypeOverride: "calc", }), { opacity: o.opacity, flatshading: { valType: "boolean", dflt: !1, editType: "calc", }, contour: { show: l({}, o.contours.x.show, {}), color: o.contours.x.color, width: o.contours.x.width, editType: "calc", }, lightposition: { x: l({}, o.lightposition.x, { dflt: 1e5 }), y: l({}, o.lightposition.y, { dflt: 1e5 }), z: l({}, o.lightposition.z, { dflt: 0 }), editType: "calc", }, lighting: l( { vertexnormalsepsilon: { valType: "number", min: 0, max: 1, dflt: 1e-12, editType: "calc", }, facenormalsepsilon: { valType: "number", min: 0, max: 1, dflt: 1e-6, editType: "calc", }, editType: "calc", }, o.lighting, ), hoverinfo: l({}, s.hoverinfo, { editType: "calc" }), showlegend: l({}, s.showlegend, { dflt: !1 }), }, ); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/template_attributes": 642, "../surface/attributes": 1070, }, ], 877: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/calc"); e.exports = function (t, e) { e.intensity && n(t, e, { vals: e.intensity, containerStr: "", cLetter: "c", }); }; }, { "../../components/colorscale/calc": 375 }, ], 878: [ function (t, e, r) { "use strict"; var n = t("../../../stackgl_modules").gl_mesh3d, i = t("../../../stackgl_modules").delaunay_triangulate, a = t("../../../stackgl_modules").alpha_shape, o = t("../../../stackgl_modules").convex_hull, s = t("../../lib/gl_format_color").parseColorScale, l = t("../../lib/str2rgbarray"), c = t("../../components/colorscale").extractOpts, u = t("../../plots/gl3d/zip3"); function f(t, e, r) { (this.scene = t), (this.uid = r), (this.mesh = e), (this.name = ""), (this.color = "#fff"), (this.data = null), (this.showContour = !1); } var h = f.prototype; function p(t) { for (var e = [], r = t.length, n = 0; n < r; n++) e[n] = l(t[n]); return e; } function d(t, e, r, n) { for (var i = [], a = e.length, o = 0; o < a; o++) i[o] = t.d2l(e[o], 0, n) * r; return i; } function m(t) { for (var e = [], r = t.length, n = 0; n < r; n++) e[n] = Math.round(t[n]); return e; } function g(t, e) { for (var r = t.length, n = 0; n < r; n++) if (t[n] <= -0.5 || t[n] >= e - 0.5) return !1; return !0; } (h.handlePick = function (t) { if (t.object === this.mesh) { var e = (t.index = t.data.index); t.data._cellCenter ? (t.traceCoordinate = t.data.dataCoordinate) : (t.traceCoordinate = [ this.data.x[e], this.data.y[e], this.data.z[e], ]); var r = this.data.hovertext || this.data.text; return ( Array.isArray(r) && void 0 !== r[e] ? (t.textLabel = r[e]) : r && (t.textLabel = r), !0 ); } }), (h.update = function (t) { var e = this.scene, r = e.fullSceneLayout; this.data = t; var n, f = t.x.length, h = u( d(r.xaxis, t.x, e.dataScale[0], t.xcalendar), d(r.yaxis, t.y, e.dataScale[1], t.ycalendar), d(r.zaxis, t.z, e.dataScale[2], t.zcalendar), ); if (t.i && t.j && t.k) { if ( t.i.length !== t.j.length || t.j.length !== t.k.length || !g(t.i, f) || !g(t.j, f) || !g(t.k, f) ) return; n = u(m(t.i), m(t.j), m(t.k)); } else n = 0 === t.alphahull ? o(h) : t.alphahull > 0 ? a(t.alphahull, h) : (function (t, e) { for ( var r = ["x", "y", "z"].indexOf(t), n = [], a = e.length, o = 0; o < a; o++ ) n[o] = [ e[o][(r + 1) % 3], e[o][(r + 2) % 3], ]; return i(n); })(t.delaunayaxis, h); var v = { positions: h, cells: n, lightPosition: [ t.lightposition.x, t.lightposition.y, t.lightposition.z, ], ambient: t.lighting.ambient, diffuse: t.lighting.diffuse, specular: t.lighting.specular, roughness: t.lighting.roughness, fresnel: t.lighting.fresnel, vertexNormalsEpsilon: t.lighting.vertexnormalsepsilon, faceNormalsEpsilon: t.lighting.facenormalsepsilon, opacity: t.opacity, contourEnable: t.contour.show, contourColor: l(t.contour.color).slice(0, 3), contourWidth: t.contour.width, useFacetNormals: t.flatshading, }; if (t.intensity) { var y = c(t); this.color = "#fff"; var x = t.intensitymode; (v[x + "Intensity"] = t.intensity), (v[x + "IntensityBounds"] = [y.min, y.max]), (v.colormap = s(t)); } else t.vertexcolor ? ((this.color = t.vertexcolor[0]), (v.vertexColors = p(t.vertexcolor))) : t.facecolor ? ((this.color = t.facecolor[0]), (v.cellColors = p(t.facecolor))) : ((this.color = t.color), (v.meshColor = l(t.color))); this.mesh.update(v); }), (h.dispose = function () { this.scene.glplot.remove(this.mesh), this.mesh.dispose(); }), (e.exports = function (t, e) { var r = t.glplot.gl, i = n({ gl: r }), a = new f(t, i, e.uid); return (i._trace = a), a.update(e), t.glplot.add(i), a; }); }, { "../../../stackgl_modules": 1133, "../../components/colorscale": 379, "../../lib/gl_format_color": 511, "../../lib/str2rgbarray": 540, "../../plots/gl3d/zip3": 618, }, ], 879: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"), a = t("../../components/colorscale/defaults"), o = t("./attributes"); e.exports = function (t, e, r, s) { function l(r, n) { return i.coerce(t, e, o, r, n); } function c(t) { var e = t.map(function (t) { var e = l(t); return e && i.isArrayOrTypedArray(e) ? e : null; }); return ( e.every(function (t) { return t && t.length === e[0].length; }) && e ); } c(["x", "y", "z"]) ? (c(["i", "j", "k"]), (!e.i || (e.j && e.k)) && (!e.j || (e.k && e.i)) && (!e.k || (e.i && e.j)) ? (n.getComponentMethod( "calendars", "handleTraceDefaults", )(t, e, ["x", "y", "z"], s), [ "lighting.ambient", "lighting.diffuse", "lighting.specular", "lighting.roughness", "lighting.fresnel", "lighting.vertexnormalsepsilon", "lighting.facenormalsepsilon", "lightposition.x", "lightposition.y", "lightposition.z", "flatshading", "alphahull", "delaunayaxis", "opacity", ].forEach(function (t) { l(t); }), l("contour.show") && (l("contour.color"), l("contour.width")), "intensity" in t ? (l("intensity"), l("intensitymode"), a(t, e, s, l, { prefix: "", cLetter: "c" })) : ((e.showscale = !1), "facecolor" in t ? l("facecolor") : "vertexcolor" in t ? l("vertexcolor") : l("color", r)), l("text"), l("hovertext"), l("hovertemplate"), l("xhoverformat"), l("yhoverformat"), l("zhoverformat"), (e._length = null)) : (e.visible = !1)) : (e.visible = !1); }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "../../registry": 647, "./attributes": 876, }, ], 880: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("./calc"), colorbar: { min: "cmin", max: "cmax" }, plot: t("./convert"), moduleType: "trace", name: "mesh3d", basePlotModule: t("../../plots/gl3d"), categories: ["gl3d", "showLegend"], meta: {}, }; }, { "../../plots/gl3d": 607, "./attributes": 876, "./calc": 877, "./convert": 878, "./defaults": 879, }, ], 881: [ function (t, e, r) { "use strict"; var n = t("../../lib").extendFlat, i = t("../scatter/attributes"), a = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, o = t("../../components/drawing/attributes").dash, s = t("../../components/fx/attributes"), l = t("../../constants/delta.js"), c = l.INCREASING.COLOR, u = l.DECREASING.COLOR, f = i.line; function h(t) { return { line: { color: n({}, f.color, { dflt: t }), width: f.width, dash: o, editType: "style", }, editType: "style", }; } e.exports = { xperiod: i.xperiod, xperiod0: i.xperiod0, xperiodalignment: i.xperiodalignment, xhoverformat: a("x"), yhoverformat: a("y"), x: { valType: "data_array", editType: "calc+clearAxisTypes", }, open: { valType: "data_array", editType: "calc" }, high: { valType: "data_array", editType: "calc" }, low: { valType: "data_array", editType: "calc" }, close: { valType: "data_array", editType: "calc" }, line: { width: n({}, f.width, {}), dash: n({}, o, {}), editType: "style", }, increasing: h(c), decreasing: h(u), text: { valType: "string", dflt: "", arrayOk: !0, editType: "calc", }, hovertext: { valType: "string", dflt: "", arrayOk: !0, editType: "calc", }, tickwidth: { valType: "number", min: 0, max: 0.5, dflt: 0.3, editType: "calc", }, hoverlabel: n({}, s.hoverlabel, { split: { valType: "boolean", dflt: !1, editType: "style", }, }), }; }, { "../../components/drawing/attributes": 388, "../../components/fx/attributes": 398, "../../constants/delta.js": 485, "../../lib": 515, "../../plots/cartesian/axis_format_attributes": 569, "../scatter/attributes": 936, }, ], 882: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = n._, a = t("../../plots/cartesian/axes"), o = t("../../plots/cartesian/align_period"), s = t("../../constants/numerical").BADNUM; function l(t, e, r, n) { return { o: t, h: e, l: r, c: n }; } function c(t, e, r, o, l, c) { for ( var u = l.makeCalcdata(e, "open"), f = l.makeCalcdata(e, "high"), h = l.makeCalcdata(e, "low"), p = l.makeCalcdata(e, "close"), d = Array.isArray(e.text), m = Array.isArray(e.hovertext), g = !0, v = null, y = !!e.xperiodalignment, x = [], b = 0; b < o.length; b++ ) { var _ = o[b], w = u[b], T = f[b], k = h[b], A = p[b]; if (_ !== s && w !== s && T !== s && k !== s && A !== s) { A === w ? null !== v && A !== v && (g = A > v) : (g = A > w), (v = A); var M = c(w, T, k, A); (M.pos = _), (M.yc = (w + A) / 2), (M.i = b), (M.dir = g ? "increasing" : "decreasing"), (M.x = M.pos), (M.y = [k, T]), y && (M.orig_p = r[b]), d && (M.tx = e.text[b]), m && (M.htx = e.hovertext[b]), x.push(M); } else x.push({ pos: _, empty: !0 }); } return ( (e._extremes[l._id] = a.findExtremes(l, n.concat(h, f), { padded: !0, })), x.length && (x[0].t = { labels: { open: i(t, "open:") + " ", high: i(t, "high:") + " ", low: i(t, "low:") + " ", close: i(t, "close:") + " ", }, }), x ); } e.exports = { calc: function (t, e) { var r = a.getFromId(t, e.xaxis), i = a.getFromId(t, e.yaxis), s = (function (t, e, r) { var i = r._minDiff; if (!i) { var a, s = t._fullData, l = []; for (i = 1 / 0, a = 0; a < s.length; a++) { var c = s[a]; if ( "ohlc" === c.type && !0 === c.visible && c.xaxis === e._id ) { l.push(c); var u = e.makeCalcdata(c, "x"); c._origX = u; var f = o(r, e, "x", u).vals; c._xcalc = f; var h = n.distinctVals(f).minDiff; h && isFinite(h) && (i = Math.min(i, h)); } } for ( i === 1 / 0 && (i = 1), a = 0; a < l.length; a++ ) l[a]._minDiff = i; } return i * r.tickwidth; })(t, r, e), u = e._minDiff; e._minDiff = null; var f = e._origX; e._origX = null; var h = e._xcalc; e._xcalc = null; var p = c(t, e, f, h, i, l); return ( (e._extremes[r._id] = a.findExtremes(r, h, { vpad: u / 2, })), p.length ? (n.extendFlat(p[0].t, { wHover: u / 2, tickLen: s, }), p) : [{ t: { empty: !0 } }] ); }, calcCommon: c, }; }, { "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/align_period": 563, "../../plots/cartesian/axes": 566, }, ], 883: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./ohlc_defaults"), a = t("../scatter/period_defaults"), o = t("./attributes"); function s(t, e, r, n) { r(n + ".line.color"), r(n + ".line.width", e.line.width), r(n + ".line.dash", e.line.dash); } e.exports = function (t, e, r, l) { function c(r, i) { return n.coerce(t, e, o, r, i); } i(t, e, c, l) ? (a(t, e, l, c, { x: !0 }), c("xhoverformat"), c("yhoverformat"), c("line.width"), c("line.dash"), s(t, e, c, "increasing"), s(t, e, c, "decreasing"), c("text"), c("hovertext"), c("tickwidth"), (l._requestRangeslider[e.xaxis] = !0)) : (e.visible = !1); }; }, { "../../lib": 515, "../scatter/period_defaults": 956, "./attributes": 881, "./ohlc_defaults": 886, }, ], 884: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../../lib"), a = t("../../components/fx"), o = t("../../components/color"), s = t("../../lib").fillText, l = t("../../constants/delta.js"), c = { increasing: l.INCREASING.SYMBOL, decreasing: l.DECREASING.SYMBOL, }; function u(t, e, r, n) { var i, s, l = t.cd, c = t.xa, u = l[0].trace, f = l[0].t, h = u.type, p = "ohlc" === h ? "l" : "min", d = "ohlc" === h ? "h" : "max", m = f.bPos || 0, g = f.bdPos || f.tickLen, v = f.wHover, y = Math.min( 1, g / Math.abs(c.r2c(c.range[1]) - c.r2c(c.range[0])), ); function x(t) { var r = (function (t) { return t.pos + m - e; })(t); return a.inbox(r - v, r + v, i); } function b(t) { var e = t[p], n = t[d]; return e === n || a.inbox(e - r, n - r, i); } function _(t) { return (x(t) + b(t)) / 2; } (i = t.maxHoverDistance - y), (s = t.maxSpikeDistance - y); var w = a.getDistanceFunction(n, x, b, _); if ((a.getClosest(l, w, t), !1 === t.index)) return null; var T = l[t.index]; if (T.empty) return null; var k = u[T.dir], A = k.line.color; return ( o.opacity(A) && k.line.width ? (t.color = A) : (t.color = k.fillcolor), (t.x0 = c.c2p(T.pos + m - g, !0)), (t.x1 = c.c2p(T.pos + m + g, !0)), (t.xLabelVal = void 0 !== T.orig_p ? T.orig_p : T.pos), (t.spikeDistance = (_(T) * s) / i), (t.xSpike = c.c2p(T.pos, !0)), t ); } function f(t, e, r, a) { var o = t.cd, s = t.ya, l = o[0].trace, c = o[0].t, f = [], h = u(t, e, r, a); if (!h) return []; var p = o[h.index].hi || l.hoverinfo, d = p.split("+"); if (!("all" === p || -1 !== d.indexOf("y"))) return []; for ( var m = ["high", "open", "close", "low"], g = {}, v = 0; v < m.length; v++ ) { var y, x = m[v], b = l[x][h.index], _ = s.c2p(b, !0); b in g ? ((y = g[b]).yLabel += "
" + c.labels[x] + n.hoverLabelText(s, b, l.yhoverformat)) : (((y = i.extendFlat({}, h)).y0 = y.y1 = _), (y.yLabelVal = b), (y.yLabel = c.labels[x] + n.hoverLabelText(s, b, l.yhoverformat)), (y.name = ""), f.push(y), (g[b] = y)); } return f; } function h(t, e, r, i) { var a = t.cd, o = t.ya, l = a[0].trace, f = a[0].t, h = u(t, e, r, i); if (!h) return []; var p = a[h.index], d = (h.index = p.i), m = p.dir; function g(t) { return ( f.labels[t] + n.hoverLabelText(o, l[t][d], l.yhoverformat) ); } var v = p.hi || l.hoverinfo, y = v.split("+"), x = "all" === v, b = x || -1 !== y.indexOf("y"), _ = x || -1 !== y.indexOf("text"), w = b ? [ g("open"), g("high"), g("low"), g("close") + " " + c[m], ] : []; return ( _ && s(p, l, w), (h.extraText = w.join("
")), (h.y0 = h.y1 = o.c2p(p.yc, !0)), [h] ); } e.exports = { hoverPoints: function (t, e, r, n) { return t.cd[0].trace.hoverlabel.split ? f(t, e, r, n) : h(t, e, r, n); }, hoverSplit: f, hoverOnPoints: h, }; }, { "../../components/color": 367, "../../components/fx": 407, "../../constants/delta.js": 485, "../../lib": 515, "../../plots/cartesian/axes": 566, }, ], 885: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "ohlc", basePlotModule: t("../../plots/cartesian"), categories: ["cartesian", "svg", "showLegend"], meta: {}, attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("./calc").calc, plot: t("./plot"), style: t("./style"), hoverPoints: t("./hover").hoverPoints, selectPoints: t("./select"), }; }, { "../../plots/cartesian": 578, "./attributes": 881, "./calc": 882, "./defaults": 883, "./hover": 884, "./plot": 887, "./select": 888, "./style": 889, }, ], 886: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"); e.exports = function (t, e, r, a) { var o = r("x"), s = r("open"), l = r("high"), c = r("low"), u = r("close"); if ( (r("hoverlabel.split"), n.getComponentMethod("calendars", "handleTraceDefaults")( t, e, ["x"], a, ), s && l && c && u) ) { var f = Math.min(s.length, l.length, c.length, u.length); return ( o && (f = Math.min(f, i.minRowLength(o))), (e._length = f), f ); } }; }, { "../../lib": 515, "../../registry": 647 }, ], 887: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"); e.exports = function (t, e, r, a) { var o = e.yaxis, s = e.xaxis, l = !!s.rangebreaks; i.makeTraceGroups(a, r, "trace ohlc").each(function (t) { var e = n.select(this), r = t[0], a = r.t; if (!0 !== r.trace.visible || a.empty) e.remove(); else { var c = a.tickLen, u = e.selectAll("path").data(i.identity); u.enter().append("path"), u.exit().remove(), u.attr("d", function (t) { if (t.empty) return "M0,0Z"; var e = s.c2p(t.pos - c, !0), r = s.c2p(t.pos + c, !0), n = l ? (e + r) / 2 : s.c2p(t.pos, !0); return ( "M" + e + "," + o.c2p(t.o, !0) + "H" + n + "M" + n + "," + o.c2p(t.h, !0) + "V" + o.c2p(t.l, !0) + "M" + r + "," + o.c2p(t.c, !0) + "H" + n ); }); } }); }; }, { "../../lib": 515, "@plotly/d3": 58 }, ], 888: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r, n = t.cd, i = t.xaxis, a = t.yaxis, o = [], s = n[0].t.bPos || 0; if (!1 === e) for (r = 0; r < n.length; r++) n[r].selected = 0; else for (r = 0; r < n.length; r++) { var l = n[r]; e.contains( [i.c2p(l.pos + s), a.c2p(l.yc)], null, l.i, t, ) ? (o.push({ pointNumber: l.i, x: i.c2d(l.pos), y: a.c2d(l.yc), }), (l.selected = 1)) : (l.selected = 0); } return o; }; }, {}, ], 889: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/drawing"), a = t("../../components/color"); e.exports = function (t, e, r) { var o = r || n.select(t).selectAll("g.ohlclayer").selectAll("g.trace"); o.style("opacity", function (t) { return t[0].trace.opacity; }), o.each(function (t) { var e = t[0].trace; n.select(this) .selectAll("path") .each(function (t) { if (!t.empty) { var r = e[t.dir].line; n.select(this) .style("fill", "none") .call(a.stroke, r.color) .call(i.dashLine, r.dash, r.width) .style( "opacity", e.selectedpoints && !t.selected ? 0.3 : 1, ); } }); }); }; }, { "../../components/color": 367, "../../components/drawing": 389, "@plotly/d3": 58, }, ], 890: [ function (t, e, r) { "use strict"; var n = t("../../lib/extend").extendFlat, i = t("../../plots/attributes"), a = t("../../plots/font_attributes"), o = t("../../components/colorscale/attributes"), s = t("../../plots/template_attributes").hovertemplateAttrs, l = t("../../plots/domain").attributes, c = n( { editType: "calc" }, o("line", { editTypeOverride: "calc" }), { shape: { valType: "enumerated", values: ["linear", "hspline"], dflt: "linear", editType: "plot", }, hovertemplate: s( { editType: "plot", arrayOk: !1 }, { keys: ["count", "probability"] }, ), }, ); e.exports = { domain: l({ name: "parcats", trace: !0, editType: "calc" }), hoverinfo: n({}, i.hoverinfo, { flags: ["count", "probability"], editType: "plot", arrayOk: !1, }), hoveron: { valType: "enumerated", values: ["category", "color", "dimension"], dflt: "category", editType: "plot", }, hovertemplate: s( { editType: "plot", arrayOk: !1 }, { keys: [ "count", "probability", "category", "categorycount", "colorcount", "bandcolorcount", ], }, ), arrangement: { valType: "enumerated", values: ["perpendicular", "freeform", "fixed"], dflt: "perpendicular", editType: "plot", }, bundlecolors: { valType: "boolean", dflt: !0, editType: "plot", }, sortpaths: { valType: "enumerated", values: ["forward", "backward"], dflt: "forward", editType: "plot", }, labelfont: a({ editType: "calc" }), tickfont: a({ editType: "calc" }), dimensions: { _isLinkedToArray: "dimension", label: { valType: "string", editType: "calc" }, categoryorder: { valType: "enumerated", values: [ "trace", "category ascending", "category descending", "array", ], dflt: "trace", editType: "calc", }, categoryarray: { valType: "data_array", editType: "calc", }, ticktext: { valType: "data_array", editType: "calc" }, values: { valType: "data_array", dflt: [], editType: "calc", }, displayindex: { valType: "integer", editType: "calc" }, editType: "calc", visible: { valType: "boolean", dflt: !0, editType: "calc", }, }, line: c, counts: { valType: "number", min: 0, dflt: 1, arrayOk: !0, editType: "calc", }, customdata: void 0, hoverlabel: void 0, ids: void 0, legendgroup: void 0, legendrank: void 0, opacity: void 0, selectedpoints: void 0, showlegend: void 0, }; }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/domain": 593, "../../plots/font_attributes": 594, "../../plots/template_attributes": 642, }, ], 891: [ function (t, e, r) { "use strict"; var n = t("../../plots/get_data").getModuleCalcData, i = t("./plot"); (r.name = "parcats"), (r.plot = function (t, e, r, a) { var o = n(t.calcdata, "parcats"); if (o.length) { var s = o[0]; i(t, s, r, a); } }), (r.clean = function (t, e, r, n) { var i = n._has && n._has("parcats"), a = e._has && e._has("parcats"); i && !a && n._paperdiv.selectAll(".parcats").remove(); }); }, { "../../plots/get_data": 602, "./plot": 896 }, ], 892: [ function (t, e, r) { "use strict"; var n = t("../../lib/gup").wrap, i = t("../../components/colorscale/helpers").hasColorscale, a = t("../../components/colorscale/calc"), o = t("../../lib/filter_unique.js"), s = t("../../components/drawing"), l = t("../../lib"), c = t("fast-isnumeric"); function u(t, e, r) { t.valueInds.push(e), (t.count += r); } function f(t, e, r) { return { categoryInds: t, color: e, rawColor: r, valueInds: [], count: 0, }; } function h(t, e, r) { t.valueInds.push(e), (t.count += r); } e.exports = function (t, e) { var r = l.filterVisible(e.dimensions); if (0 === r.length) return []; var p, d, m, g = r.map(function (t) { var e; if ("trace" === t.categoryorder) e = null; else if ("array" === t.categoryorder) e = t.categoryarray; else { e = o(t.values); for (var r = !0, n = 0; n < e.length; n++) if (!c(e[n])) { r = !1; break; } e.sort(r ? l.sorterAsc : void 0), "category descending" === t.categoryorder && (e = e.reverse()); } return (function (t, e) { e = null == e ? [] : e.map(function (t) { return t; }); var r = {}, n = {}, i = []; e.forEach(function (t, e) { (r[t] = 0), (n[t] = e); }); for (var a = 0; a < t.length; a++) { var o, s = t[a]; void 0 === r[s] ? ((r[s] = 1), (o = e.push(s) - 1), (n[s] = o)) : (r[s]++, (o = n[s])), i.push(o); } var l = e.map(function (t) { return r[t]; }); return { uniqueValues: e, uniqueCounts: l, inds: i }; })(t.values, e); }); (p = l.isArrayOrTypedArray(e.counts) ? e.counts : [e.counts]), (function (t) { var e; if ( (function (t) { for ( var e = new Array(t.length), r = 0; r < t.length; r++ ) { if (t[r] < 0 || t[r] >= t.length) return !1; if (void 0 !== e[t[r]]) return !1; e[t[r]] = !0; } return !0; })( t.map(function (t) { return t.displayindex; }), ) ) for (e = 0; e < t.length; e++) t[e]._displayindex = t[e].displayindex; else for (e = 0; e < t.length; e++) t[e]._displayindex = e; })(r), r.forEach(function (t, e) { !(function (t, e) { (t._categoryarray = e.uniqueValues), null === t.ticktext || void 0 === t.ticktext ? (t._ticktext = []) : (t._ticktext = t.ticktext.slice()); for ( var r = t._ticktext.length; r < e.uniqueValues.length; r++ ) t._ticktext.push(e.uniqueValues[r]); })(t, g[e]); }); var v, y = e.line; y ? (i(e, "line") && a(t, e, { vals: e.line.color, containerStr: "line", cLetter: "c", }), (v = s.tryColorscale(y))) : (v = l.identity); var x, b, _, w, T, k = r[0].values.length, A = {}, M = g.map(function (t) { return t.inds; }); for (m = 0, x = 0; x < k; x++) { var S = []; for (b = 0; b < M.length; b++) S.push(M[b][x]); (d = p[x % p.length]), (m += d); var E = ((_ = x), (w = void 0), (T = void 0), l.isArrayOrTypedArray(y.color) ? (T = w = y.color[_ % y.color.length]) : (w = y.color), { color: v(w), rawColor: T }), L = S + "-" + E.rawColor; void 0 === A[L] && (A[L] = f(S, E.color, E.rawColor)), h(A[L], x, d); } var C, P = r.map(function (t, e) { return (function (t, e, r, n, i) { return { dimensionInd: t, containerInd: e, displayInd: r, dimensionLabel: n, count: i, categories: [], dragX: null, }; })(e, t._index, t._displayindex, t.label, m); }); for (x = 0; x < k; x++) for (d = p[x % p.length], b = 0; b < P.length; b++) { var I = P[b].containerInd, O = g[b].inds[x], z = P[b].categories; if (void 0 === z[O]) { var D = e.dimensions[I]._categoryarray[O], R = e.dimensions[I]._ticktext[O]; z[O] = { dimensionInd: b, categoryInd: (C = O), categoryValue: D, displayInd: C, categoryLabel: R, valueInds: [], count: 0, dragY: null, }; } u(z[O], x, d); } return n( (function (t, e, r) { var n = t .map(function (t) { return t.categories.length; }) .reduce(function (t, e) { return Math.max(t, e); }); return { dimensions: t, paths: e, trace: void 0, maxCats: n, count: r, }; })(P, A, m), ); }; }, { "../../components/colorscale/calc": 375, "../../components/colorscale/helpers": 378, "../../components/drawing": 389, "../../lib": 515, "../../lib/filter_unique.js": 506, "../../lib/gup": 512, "fast-isnumeric": 190, }, ], 893: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/colorscale/helpers").hasColorscale, a = t("../../components/colorscale/defaults"), o = t("../../plots/domain").defaults, s = t("../../plots/array_container_defaults"), l = t("./attributes"), c = t("../parcoords/merge_length"); function u(t, e) { function r(r, i) { return n.coerce(t, e, l.dimensions, r, i); } var i = r("values"), a = r("visible"); if (((i && i.length) || (a = e.visible = !1), a)) { r("label"), r("displayindex", e._index); var o, s = t.categoryarray, c = Array.isArray(s) && s.length > 0; c && (o = "array"); var u = r("categoryorder", o); "array" === u ? (r("categoryarray"), r("ticktext")) : (delete t.categoryarray, delete t.ticktext), c || "array" !== u || (e.categoryorder = "trace"); } } e.exports = function (t, e, r, f) { function h(r, i) { return n.coerce(t, e, l, r, i); } var p = s(t, e, { name: "dimensions", handleItemDefaults: u, }), d = (function (t, e, r, o, s) { s("line.shape"), s("line.hovertemplate"); var l = s("line.color", o.colorway[0]); if (i(t, "line") && n.isArrayOrTypedArray(l)) { if (l.length) return ( s("line.colorscale"), a(t, e, o, s, { prefix: "line.", cLetter: "c" }), l.length ); e.line.color = r; } return 1 / 0; })(t, e, r, f, h); o(e, f, h), (Array.isArray(p) && p.length) || (e.visible = !1), c(e, p, "values", d), h("hoveron"), h("hovertemplate"), h("arrangement"), h("bundlecolors"), h("sortpaths"), h("counts"); var m = { family: f.font.family, size: Math.round(f.font.size), color: f.font.color, }; n.coerceFont(h, "labelfont", m); var g = { family: f.font.family, size: Math.round(f.font.size / 1.2), color: f.font.color, }; n.coerceFont(h, "tickfont", g); }; }, { "../../components/colorscale/defaults": 377, "../../components/colorscale/helpers": 378, "../../lib": 515, "../../plots/array_container_defaults": 561, "../../plots/domain": 593, "../parcoords/merge_length": 907, "./attributes": 890, }, ], 894: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("./calc"), plot: t("./plot"), colorbar: { container: "line", min: "cmin", max: "cmax" }, moduleType: "trace", name: "parcats", basePlotModule: t("./base_plot"), categories: ["noOpacity"], meta: {}, }; }, { "./attributes": 890, "./base_plot": 891, "./calc": 892, "./defaults": 893, "./plot": 896, }, ], 895: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("d3-interpolate").interpolateNumber, a = t("../../plot_api/plot_api"), o = t("../../components/fx"), s = t("../../lib"), l = s.strTranslate, c = t("../../components/drawing"), u = t("tinycolor2"), f = t("../../lib/svg_text_utils"); function h(t, e, r, i) { var a = e._context.staticPlot, o = t.map(F.bind(0, e, r)), u = i.selectAll("g.parcatslayer").data([null]); u.enter() .append("g") .attr("class", "parcatslayer") .style("pointer-events", a ? "none" : "all"); var h = u.selectAll("g.trace.parcats").data(o, p), y = h.enter().append("g").attr("class", "trace parcats"); h.attr("transform", function (t) { return l(t.x, t.y); }), y.append("g").attr("class", "paths"); var x = h .select("g.paths") .selectAll("path.path") .data(function (t) { return t.paths; }, p); x.attr("fill", function (t) { return t.model.color; }); var w = x .enter() .append("path") .attr("class", "path") .attr("stroke-opacity", 0) .attr("fill", function (t) { return t.model.color; }) .attr("fill-opacity", 0); _(w), x.attr("d", function (t) { return t.svgD; }), w.empty() || x.sort(m), x.exit().remove(), x.on("mouseover", g).on("mouseout", v).on("click", b), y.append("g").attr("class", "dimensions"); var A = h .select("g.dimensions") .selectAll("g.dimension") .data(function (t) { return t.dimensions; }, p); A.enter().append("g").attr("class", "dimension"), A.attr("transform", function (t) { return l(t.x, 0); }), A.exit().remove(); var M = A.selectAll("g.category").data(function (t) { return t.categories; }, p), S = M.enter().append("g").attr("class", "category"); M.attr("transform", function (t) { return l(0, t.y); }), S.append("rect") .attr("class", "catrect") .attr("pointer-events", "none"), M.select("rect.catrect") .attr("fill", "none") .attr("width", function (t) { return t.width; }) .attr("height", function (t) { return t.height; }), T(S); var E = M.selectAll("rect.bandrect").data(function (t) { return t.bands; }, p); E.each(function () { s.raiseToTop(this); }), E.attr("fill", function (t) { return t.color; }); var z = E.enter() .append("rect") .attr("class", "bandrect") .attr("stroke-opacity", 0) .attr("fill", function (t) { return t.color; }) .attr("fill-opacity", 0); E.attr("fill", function (t) { return t.color; }) .attr("width", function (t) { return t.width; }) .attr("height", function (t) { return t.height; }) .attr("y", function (t) { return t.y; }) .attr("cursor", function (t) { return "fixed" === t.parcatsViewModel.arrangement ? "default" : "perpendicular" === t.parcatsViewModel.arrangement ? "ns-resize" : "move"; }), k(z), E.exit().remove(), S.append("text") .attr("class", "catlabel") .attr("pointer-events", "none"); var D = e._fullLayout.paper_bgcolor; M.select("text.catlabel") .attr("text-anchor", function (t) { return d(t) ? "start" : "end"; }) .attr("alignment-baseline", "middle") .style("text-shadow", f.makeTextShadow(D)) .style("fill", "rgb(0, 0, 0)") .attr("x", function (t) { return d(t) ? t.width + 5 : -5; }) .attr("y", function (t) { return t.height / 2; }) .text(function (t) { return t.model.categoryLabel; }) .each(function (t) { c.font( n.select(this), t.parcatsViewModel.categorylabelfont, ), f.convertToTspans(n.select(this), e); }), S.append("text").attr("class", "dimlabel"), M.select("text.dimlabel") .attr("text-anchor", "middle") .attr("alignment-baseline", "baseline") .attr("cursor", function (t) { return "fixed" === t.parcatsViewModel.arrangement ? "default" : "ew-resize"; }) .attr("x", function (t) { return t.width / 2; }) .attr("y", -5) .text(function (t, e) { return 0 === e ? t.parcatsViewModel.model.dimensions[ t.model.dimensionInd ].dimensionLabel : null; }) .each(function (t) { c.font(n.select(this), t.parcatsViewModel.labelfont); }), M.selectAll("rect.bandrect") .on("mouseover", L) .on("mouseout", C), M.exit().remove(), A.call( n.behavior .drag() .origin(function (t) { return { x: t.x, y: 0 }; }) .on("dragstart", P) .on("drag", I) .on("dragend", O), ), h.each(function (t) { (t.traceSelection = n.select(this)), (t.pathSelection = n .select(this) .selectAll("g.paths") .selectAll("path.path")), (t.dimensionSelection = n .select(this) .selectAll("g.dimensions") .selectAll("g.dimension")); }), h.exit().remove(); } function p(t) { return t.key; } function d(t) { var e = t.parcatsViewModel.dimensions.length, r = t.parcatsViewModel.dimensions[e - 1].model.dimensionInd; return t.model.dimensionInd === r; } function m(t, e) { return t.model.rawColor > e.model.rawColor ? 1 : t.model.rawColor < e.model.rawColor ? -1 : 0; } function g(t) { if ( !t.parcatsViewModel.dragDimension && -1 === t.parcatsViewModel.hoverinfoItems.indexOf("skip") ) { s.raiseToTop(this), w(n.select(this)); var e = y(t), r = x(t); if ( (t.parcatsViewModel.graphDiv.emit("plotly_hover", { points: e, event: n.event, constraints: r, }), -1 === t.parcatsViewModel.hoverinfoItems.indexOf("none")) ) { var i, a, l, c = n.mouse(this)[0], f = t.parcatsViewModel.graphDiv, h = t.parcatsViewModel.trace, p = f._fullLayout, d = p._paperdiv.node().getBoundingClientRect(), m = t.parcatsViewModel.graphDiv.getBoundingClientRect(); for (l = 0; l < t.leftXs.length - 1; l++) if ( t.leftXs[l] + t.dimWidths[l] - 2 <= c && c <= t.leftXs[l + 1] + 2 ) { var g = t.parcatsViewModel.dimensions[l], v = t.parcatsViewModel.dimensions[l + 1]; (i = (g.x + g.width + v.x) / 2), (a = (t.topYs[l] + t.topYs[l + 1] + t.height) / 2); break; } var b = t.parcatsViewModel.x + i, _ = t.parcatsViewModel.y + a, T = u.mostReadable(t.model.color, ["black", "white"]), k = t.model.count, A = k / t.parcatsViewModel.model.count, M = { countLabel: k, probabilityLabel: A.toFixed(3) }, S = []; -1 !== t.parcatsViewModel.hoverinfoItems.indexOf("count") && S.push(["Count:", M.countLabel].join(" ")), -1 !== t.parcatsViewModel.hoverinfoItems.indexOf( "probability", ) && S.push(["P:", M.probabilityLabel].join(" ")); var E = S.join("
"), L = n.mouse(f)[0]; o.loneHover( { trace: h, x: b - d.left + m.left, y: _ - d.top + m.top, text: E, color: t.model.color, borderColor: "black", fontFamily: 'Monaco, "Courier New", monospace', fontSize: 10, fontColor: T, idealAlign: L < b ? "right" : "left", hovertemplate: (h.line || {}).hovertemplate, hovertemplateLabels: M, eventData: [ { data: h._input, fullData: h, count: k, probability: A, }, ], }, { container: p._hoverlayer.node(), outerContainer: p._paper.node(), gd: f, }, ); } } } function v(t) { if ( !t.parcatsViewModel.dragDimension && (_(n.select(this)), o.loneUnhover( t.parcatsViewModel.graphDiv._fullLayout._hoverlayer.node(), ), t.parcatsViewModel.pathSelection.sort(m), -1 === t.parcatsViewModel.hoverinfoItems.indexOf("skip")) ) { var e = y(t), r = x(t); t.parcatsViewModel.graphDiv.emit("plotly_unhover", { points: e, event: n.event, constraints: r, }); } } function y(t) { for ( var e = [], r = z(t.parcatsViewModel), n = 0; n < t.model.valueInds.length; n++ ) { var i = t.model.valueInds[n]; e.push({ curveNumber: r, pointNumber: i }); } return e; } function x(t) { for ( var e = {}, r = t.parcatsViewModel.model.dimensions, n = 0; n < r.length; n++ ) { var i = r[n], a = i.categories[t.model.categoryInds[n]]; e[i.containerInd] = a.categoryValue; } return ( void 0 !== t.model.rawColor && (e.color = t.model.rawColor), e ); } function b(t) { if ( -1 === t.parcatsViewModel.hoverinfoItems.indexOf("skip") ) { var e = y(t), r = x(t); t.parcatsViewModel.graphDiv.emit("plotly_click", { points: e, event: n.event, constraints: r, }); } } function _(t) { t.attr("fill", function (t) { return t.model.color; }) .attr("fill-opacity", 0.6) .attr("stroke", "lightgray") .attr("stroke-width", 0.2) .attr("stroke-opacity", 1); } function w(t) { t.attr("fill-opacity", 0.8) .attr("stroke", function (t) { return u.mostReadable(t.model.color, [ "black", "white", ]); }) .attr("stroke-width", 0.3); } function T(t) { t.select("rect.catrect") .attr("stroke", "black") .attr("stroke-width", 1) .attr("stroke-opacity", 1); } function k(t) { t.attr("stroke", "black") .attr("stroke-width", 0.2) .attr("stroke-opacity", 1) .attr("fill-opacity", 1); } function A(t) { var e = t.parcatsViewModel.pathSelection, r = t.categoryViewModel.model.dimensionInd, n = t.categoryViewModel.model.categoryInd; return e.filter(function (e) { return ( e.model.categoryInds[r] === n && e.model.color === t.color ); }); } function M(t, e, r) { var i = n.select(t).datum(), a = i.categoryViewModel.model, o = i.parcatsViewModel.graphDiv, s = n.select(t.parentNode).selectAll("rect.bandrect"), l = []; s.each(function (t) { A(t).each(function (t) { Array.prototype.push.apply(l, y(t)); }); }); var c = {}; (c[a.dimensionInd] = a.categoryValue), o.emit(e, { points: l, event: r, constraints: c }); } function S(t, e, r) { var i = n.select(t).datum(), a = i.categoryViewModel.model, o = i.parcatsViewModel.graphDiv, s = A(i), l = []; s.each(function (t) { Array.prototype.push.apply(l, y(t)); }); var c = {}; (c[a.dimensionInd] = a.categoryValue), void 0 !== i.rawColor && (c.color = i.rawColor), o.emit(e, { points: l, event: r, constraints: c }); } function E(t, e, r) { t._fullLayout._calcInverseTransform(t); var i, a, o = t._fullLayout._invScaleX, s = t._fullLayout._invScaleY, l = n.select(r.parentNode).select("rect.catrect"), c = l.node().getBoundingClientRect(), u = l.datum(), f = u.parcatsViewModel, h = f.model.dimensions[u.model.dimensionInd], p = f.trace, d = c.top + c.height / 2; f.dimensions.length > 1 && h.displayInd === f.dimensions.length - 1 ? ((i = c.left), (a = "left")) : ((i = c.left + c.width), (a = "right")); var m = u.model.count, g = u.model.categoryLabel, v = m / u.parcatsViewModel.model.count, y = { countLabel: m, categoryLabel: g, probabilityLabel: v.toFixed(3), }, x = []; -1 !== u.parcatsViewModel.hoverinfoItems.indexOf("count") && x.push(["Count:", y.countLabel].join(" ")), -1 !== u.parcatsViewModel.hoverinfoItems.indexOf( "probability", ) && x.push( [ "P(" + y.categoryLabel + "):", y.probabilityLabel, ].join(" "), ); var b = x.join("
"); return { trace: p, x: o * (i - e.left), y: s * (d - e.top), text: b, color: "lightgray", borderColor: "black", fontFamily: 'Monaco, "Courier New", monospace', fontSize: 12, fontColor: "black", idealAlign: a, hovertemplate: p.hovertemplate, hovertemplateLabels: y, eventData: [ { data: p._input, fullData: p, count: m, category: g, probability: v, }, ], }; } function L(t) { if ( !t.parcatsViewModel.dragDimension && -1 === t.parcatsViewModel.hoverinfoItems.indexOf("skip") ) { if (n.mouse(this)[1] < -1) return; var e, r = t.parcatsViewModel.graphDiv, i = r._fullLayout, a = i._paperdiv.node().getBoundingClientRect(), l = t.parcatsViewModel.hoveron; if ( ("color" === l ? (!(function (t) { var e = n.select(t).datum(), r = A(e); w(r), r.each(function () { s.raiseToTop(this); }), n .select(t.parentNode) .selectAll("rect.bandrect") .filter(function (t) { return t.color === e.color; }) .each(function () { s.raiseToTop(this), n .select(this) .attr("stroke", "black") .attr("stroke-width", 1.5); }); })(this), S(this, "plotly_hover", n.event)) : (!(function (t) { n .select(t.parentNode) .selectAll("rect.bandrect") .each(function (t) { var e = A(t); w(e), e.each(function () { s.raiseToTop(this); }); }), n .select(t.parentNode) .select("rect.catrect") .attr("stroke", "black") .attr("stroke-width", 2.5); })(this), M(this, "plotly_hover", n.event)), -1 === t.parcatsViewModel.hoverinfoItems.indexOf("none")) ) "category" === l ? (e = E(r, a, this)) : "color" === l ? (e = (function (t, e, r) { t._fullLayout._calcInverseTransform(t); var i, a, o = t._fullLayout._invScaleX, s = t._fullLayout._invScaleY, l = r.getBoundingClientRect(), c = n.select(r).datum(), f = c.categoryViewModel, h = f.parcatsViewModel, p = h.model.dimensions[f.model.dimensionInd], d = h.trace, m = l.y + l.height / 2; h.dimensions.length > 1 && p.displayInd === h.dimensions.length - 1 ? ((i = l.left), (a = "left")) : ((i = l.left + l.width), (a = "right")); var g = f.model.categoryLabel, v = c.parcatsViewModel.model.count, y = 0; c.categoryViewModel.bands.forEach(function (t) { t.color === c.color && (y += t.count); }); var x = f.model.count, b = 0; h.pathSelection.each(function (t) { t.model.color === c.color && (b += t.model.count); }); var _ = y / v, w = y / b, T = y / x, k = { countLabel: v, categoryLabel: g, probabilityLabel: _.toFixed(3), }, A = []; -1 !== f.parcatsViewModel.hoverinfoItems.indexOf( "count", ) && A.push(["Count:", k.countLabel].join(" ")), -1 !== f.parcatsViewModel.hoverinfoItems.indexOf( "probability", ) && (A.push( "P(color \u2229 " + g + "): " + k.probabilityLabel, ), A.push( "P(" + g + " | color): " + w.toFixed(3), ), A.push( "P(color | " + g + "): " + T.toFixed(3), )); var M = A.join("
"), S = u.mostReadable(c.color, [ "black", "white", ]); return { trace: d, x: o * (i - e.left), y: s * (m - e.top), text: M, color: c.color, borderColor: "black", fontFamily: 'Monaco, "Courier New", monospace', fontColor: S, fontSize: 10, idealAlign: a, hovertemplate: d.hovertemplate, hovertemplateLabels: k, eventData: [ { data: d._input, fullData: d, category: g, count: v, probability: _, categorycount: x, colorcount: b, bandcolorcount: y, }, ], }; })(r, a, this)) : "dimension" === l && (e = (function (t, e, r) { var i = []; return ( n .select(r.parentNode.parentNode) .selectAll("g.category") .select("rect.catrect") .each(function () { i.push(E(t, e, this)); }), i ); })(r, a, this)), e && o.loneHover(e, { container: i._hoverlayer.node(), outerContainer: i._paper.node(), gd: r, }); } } function C(t) { var e = t.parcatsViewModel; if ( !e.dragDimension && (_(e.pathSelection), T(e.dimensionSelection.selectAll("g.category")), k( e.dimensionSelection .selectAll("g.category") .selectAll("rect.bandrect"), ), o.loneUnhover(e.graphDiv._fullLayout._hoverlayer.node()), e.pathSelection.sort(m), -1 === e.hoverinfoItems.indexOf("skip")) ) { "color" === t.parcatsViewModel.hoveron ? S(this, "plotly_unhover", n.event) : M(this, "plotly_unhover", n.event); } } function P(t) { "fixed" !== t.parcatsViewModel.arrangement && ((t.dragDimensionDisplayInd = t.model.displayInd), (t.initialDragDimensionDisplayInds = t.parcatsViewModel.model.dimensions.map(function (t) { return t.displayInd; })), (t.dragHasMoved = !1), (t.dragCategoryDisplayInd = null), n .select(this) .selectAll("g.category") .select("rect.catrect") .each(function (e) { var r = n.mouse(this)[0], i = n.mouse(this)[1]; -2 <= r && r <= e.width + 2 && -2 <= i && i <= e.height + 2 && ((t.dragCategoryDisplayInd = e.model.displayInd), (t.initialDragCategoryDisplayInds = t.model.categories.map(function (t) { return t.displayInd; })), (e.model.dragY = e.y), s.raiseToTop(this.parentNode), n .select(this.parentNode) .selectAll("rect.bandrect") .each(function (e) { e.y < i && i <= e.y + e.height && (t.potentialClickBand = this); })); }), (t.parcatsViewModel.dragDimension = t), o.loneUnhover( t.parcatsViewModel.graphDiv._fullLayout._hoverlayer.node(), )); } function I(t) { if ( "fixed" !== t.parcatsViewModel.arrangement && ((t.dragHasMoved = !0), null !== t.dragDimensionDisplayInd) ) { var e = t.dragDimensionDisplayInd, r = e - 1, i = e + 1, a = t.parcatsViewModel.dimensions[e]; if (null !== t.dragCategoryDisplayInd) { var o = a.categories[t.dragCategoryDisplayInd]; o.model.dragY += n.event.dy; var s = o.model.dragY, l = o.model.displayInd, c = a.categories, u = c[l - 1], f = c[l + 1]; void 0 !== u && s < u.y + u.height / 2 && ((o.model.displayInd = u.model.displayInd), (u.model.displayInd = l)), void 0 !== f && s + o.height > f.y + f.height / 2 && ((o.model.displayInd = f.model.displayInd), (f.model.displayInd = l)), (t.dragCategoryDisplayInd = o.model.displayInd); } if ( null === t.dragCategoryDisplayInd || "freeform" === t.parcatsViewModel.arrangement ) { a.model.dragX = n.event.x; var h = t.parcatsViewModel.dimensions[r], p = t.parcatsViewModel.dimensions[i]; void 0 !== h && a.model.dragX < h.x + h.width && ((a.model.displayInd = h.model.displayInd), (h.model.displayInd = e)), void 0 !== p && a.model.dragX + a.width > p.x && ((a.model.displayInd = p.model.displayInd), (p.model.displayInd = t.dragDimensionDisplayInd)), (t.dragDimensionDisplayInd = a.model.displayInd); } j(t.parcatsViewModel), N(t.parcatsViewModel), R(t.parcatsViewModel), D(t.parcatsViewModel); } } function O(t) { if ( "fixed" !== t.parcatsViewModel.arrangement && null !== t.dragDimensionDisplayInd ) { n.select(this) .selectAll("text") .attr("font-weight", "normal"); var e = {}, r = z(t.parcatsViewModel), i = t.parcatsViewModel.model.dimensions.map( function (t) { return t.displayInd; }, ), o = t.initialDragDimensionDisplayInds.some( function (t, e) { return t !== i[e]; }, ); o && i.forEach(function (r, n) { var i = t.parcatsViewModel.model.dimensions[n].containerInd; e["dimensions[" + i + "].displayindex"] = r; }); var s = !1; if (null !== t.dragCategoryDisplayInd) { var l = t.model.categories.map(function (t) { return t.displayInd; }); if ( (s = t.initialDragCategoryDisplayInds.some( function (t, e) { return t !== l[e]; }, )) ) { var c = t.model.categories .slice() .sort(function (t, e) { return t.displayInd - e.displayInd; }), u = c.map(function (t) { return t.categoryValue; }), f = c.map(function (t) { return t.categoryLabel; }); (e[ "dimensions[" + t.model.containerInd + "].categoryarray" ] = [u]), (e[ "dimensions[" + t.model.containerInd + "].ticktext" ] = [f]), (e[ "dimensions[" + t.model.containerInd + "].categoryorder" ] = "array"); } } if ( (-1 === t.parcatsViewModel.hoverinfoItems.indexOf("skip") && !t.dragHasMoved && t.potentialClickBand && ("color" === t.parcatsViewModel.hoveron ? S( t.potentialClickBand, "plotly_click", n.event.sourceEvent, ) : M( t.potentialClickBand, "plotly_click", n.event.sourceEvent, )), (t.model.dragX = null), null !== t.dragCategoryDisplayInd) ) (t.parcatsViewModel.dimensions[ t.dragDimensionDisplayInd ].categories[t.dragCategoryDisplayInd].model.dragY = null), (t.dragCategoryDisplayInd = null); (t.dragDimensionDisplayInd = null), (t.parcatsViewModel.dragDimension = null), (t.dragHasMoved = null), (t.potentialClickBand = null), j(t.parcatsViewModel), N(t.parcatsViewModel), n .transition() .duration(300) .ease("cubic-in-out") .each(function () { R(t.parcatsViewModel, !0), D(t.parcatsViewModel, !0); }) .each("end", function () { (o || s) && a.restyle(t.parcatsViewModel.graphDiv, e, [r]); }); } } function z(t) { for ( var e, r = t.graphDiv._fullData, n = 0; n < r.length; n++ ) if (t.key === r[n].uid) { e = n; break; } return e; } function D(t, e) { var r; void 0 === e && (e = !1), t.pathSelection.data(function (t) { return t.paths; }, p), ((r = t.pathSelection), e ? r.transition() : r).attr( "d", function (t) { return t.svgD; }, ); } function R(t, e) { function r(t) { return e ? t.transition() : t; } void 0 === e && (e = !1), t.dimensionSelection.data(function (t) { return t.dimensions; }, p); var i = t.dimensionSelection .selectAll("g.category") .data(function (t) { return t.categories; }, p); r(t.dimensionSelection).attr("transform", function (t) { return l(t.x, 0); }), r(i).attr("transform", function (t) { return l(0, t.y); }), i.select(".dimlabel").text(function (t, e) { return 0 === e ? t.parcatsViewModel.model.dimensions[ t.model.dimensionInd ].dimensionLabel : null; }), i .select(".catlabel") .attr("text-anchor", function (t) { return d(t) ? "start" : "end"; }) .attr("x", function (t) { return d(t) ? t.width + 5 : -5; }) .each(function (t) { var e, r; d(t) ? ((e = t.width + 5), (r = "start")) : ((e = -5), (r = "end")), n .select(this) .selectAll("tspan") .attr("x", e) .attr("text-anchor", r); }); var a = i.selectAll("rect.bandrect").data(function (t) { return t.bands; }, p), o = a .enter() .append("rect") .attr("class", "bandrect") .attr("cursor", "move") .attr("stroke-opacity", 0) .attr("fill", function (t) { return t.color; }) .attr("fill-opacity", 0); a .attr("fill", function (t) { return t.color; }) .attr("width", function (t) { return t.width; }) .attr("height", function (t) { return t.height; }) .attr("y", function (t) { return t.y; }), k(o), a.each(function () { s.raiseToTop(this); }), a.exit().remove(); } function F(t, e, r) { var n, i = r[0], a = e.margin || { l: 80, r: 80, t: 100, b: 80 }, o = i.trace, s = o.domain, l = e.width, c = e.height, u = Math.floor(l * (s.x[1] - s.x[0])), f = Math.floor(c * (s.y[1] - s.y[0])), h = s.x[0] * l + a.l, p = e.height - s.y[1] * e.height + a.t, d = o.line.shape; n = "all" === o.hoverinfo ? ["count", "probability"] : (o.hoverinfo || "").split("+"); var m = { trace: o, key: o.uid, model: i, x: h, y: p, width: u, height: f, hoveron: o.hoveron, hoverinfoItems: n, arrangement: o.arrangement, bundlecolors: o.bundlecolors, sortpaths: o.sortpaths, labelfont: o.labelfont, categorylabelfont: o.tickfont, pathShape: d, dragDimension: null, margin: a, paths: [], dimensions: [], graphDiv: t, traceSelection: null, pathSelection: null, dimensionSelection: null, }; return i.dimensions && (j(m), N(m)), m; } function B(t, e, r, n, a) { var o, s, l = [], c = []; for (s = 0; s < r.length - 1; s++) (o = i(r[s] + t[s], t[s + 1])), l.push(o(a)), c.push(o(1 - a)); var u = "M " + t[0] + "," + e[0]; for (u += "l" + r[0] + ",0 ", s = 1; s < r.length; s++) (u += "C" + l[s - 1] + "," + e[s - 1] + " " + c[s - 1] + "," + e[s] + " " + t[s] + "," + e[s]), (u += "l" + r[s] + ",0 "); for ( u += "l0," + n + " ", u += "l -" + r[r.length - 1] + ",0 ", s = r.length - 2; s >= 0; s-- ) (u += "C" + c[s] + "," + (e[s + 1] + n) + " " + l[s] + "," + (e[s] + n) + " " + (t[s] + r[s]) + "," + (e[s] + n)), (u += "l-" + r[s] + ",0 "); return (u += "Z"); } function N(t) { var e = t.dimensions, r = t.model, n = e.map(function (t) { return t.categories.map(function (t) { return t.y; }); }), i = t.model.dimensions.map(function (t) { return t.categories.map(function (t) { return t.displayInd; }); }), a = t.model.dimensions.map(function (t) { return t.displayInd; }), o = t.dimensions.map(function (t) { return t.model.dimensionInd; }), s = e.map(function (t) { return t.x; }), l = e.map(function (t) { return t.width; }), c = []; for (var u in r.paths) r.paths.hasOwnProperty(u) && c.push(r.paths[u]); function f(t) { var e = t.categoryInds.map(function (t, e) { return i[e][t]; }); return o.map(function (t) { return e[t]; }); } c.sort(function (e, r) { var n = f(e), i = f(r); return ( "backward" === t.sortpaths && (n.reverse(), i.reverse()), n.push(e.valueInds[0]), i.push(r.valueInds[0]), t.bundlecolors && (n.unshift(e.rawColor), i.unshift(r.rawColor)), n < i ? -1 : n > i ? 1 : 0 ); }); for ( var h = new Array(c.length), p = e[0].model.count, d = e[0].categories .map(function (t) { return t.height; }) .reduce(function (t, e) { return t + e; }), m = 0; m < c.length; m++ ) { var g, v = c[m]; g = p > 0 ? d * (v.count / p) : 0; for ( var y, x = new Array(n.length), b = 0; b < v.categoryInds.length; b++ ) { var _ = v.categoryInds[b], w = i[b][_], T = a[b]; (x[T] = n[T][w]), (n[T][w] += g); var k = t.dimensions[T].categories[w], A = k.bands.length, M = k.bands[A - 1]; if (void 0 === M || v.rawColor !== M.rawColor) { var S = void 0 === M ? 0 : M.y + M.height; k.bands.push({ key: S, color: v.color, rawColor: v.rawColor, height: g, width: k.width, count: v.count, y: S, categoryViewModel: k, parcatsViewModel: t, }); } else { var E = k.bands[A - 1]; (E.height += g), (E.count += v.count); } } (y = "hspline" === t.pathShape ? B(s, x, l, g, 0.5) : B(s, x, l, g, 0)), (h[m] = { key: v.valueInds[0], model: v, height: g, leftXs: s, topYs: x, dimWidths: l, svgD: y, parcatsViewModel: t, }); } t.paths = h; } function j(t) { var e = t.model.dimensions.map(function (t) { return { displayInd: t.displayInd, dimensionInd: t.dimensionInd, }; }); e.sort(function (t, e) { return t.displayInd - e.displayInd; }); var r = []; for (var n in e) { var i = e[n].dimensionInd, a = t.model.dimensions[i]; r.push(U(t, a)); } t.dimensions = r; } function U(t, e) { var r, n = t.model.dimensions.length, i = e.displayInd; r = 40 + (n > 1 ? (t.width - 80 - 16) / (n - 1) : 0) * i; var a, o, s, l, c, u = [], f = t.model.maxCats, h = e.categories.length, p = e.count, d = t.height - 8 * (f - 1), m = (8 * (f - h)) / 2, g = e.categories.map(function (t) { return { displayInd: t.displayInd, categoryInd: t.categoryInd, }; }); for ( g.sort(function (t, e) { return t.displayInd - e.displayInd; }), c = 0; c < h; c++ ) (l = g[c].categoryInd), (o = e.categories[l]), (a = p > 0 ? (o.count / p) * d : 0), (s = { key: o.valueInds[0], model: o, width: 16, height: a, y: null !== o.dragY ? o.dragY : m, bands: [], parcatsViewModel: t, }), (m = m + a + 8), u.push(s); return { key: e.dimensionInd, x: null !== e.dragX ? e.dragX : r, y: 0, width: 16, model: e, categories: u, parcatsViewModel: t, dragCategoryDisplayInd: null, dragDimensionDisplayInd: null, initialDragDimensionDisplayInds: null, initialDragCategoryDisplayInds: null, dragHasMoved: null, potentialClickBand: null, }; } e.exports = function (t, e, r, n) { h(r, t, n, e); }; }, { "../../components/drawing": 389, "../../components/fx": 407, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plot_api/plot_api": 552, "@plotly/d3": 58, "d3-interpolate": 116, tinycolor2: 313, }, ], 896: [ function (t, e, r) { "use strict"; var n = t("./parcats"); e.exports = function (t, e, r, i) { var a = t._fullLayout, o = a._paper, s = a._size; n( t, o, e, { width: s.w, height: s.h, margin: { t: s.t, r: s.r, b: s.b, l: s.l }, }, r, i, ); }; }, { "./parcats": 895 }, ], 897: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/attributes"), i = t("../../plots/cartesian/layout_attributes"), a = t("../../plots/font_attributes"), o = t("../../plots/domain").attributes, s = t("../../lib/extend").extendFlat, l = t("../../plot_api/plot_template").templatedArray; e.exports = { domain: o({ name: "parcoords", trace: !0, editType: "plot", }), labelangle: { valType: "angle", dflt: 0, editType: "plot" }, labelside: { valType: "enumerated", values: ["top", "bottom"], dflt: "top", editType: "plot", }, labelfont: a({ editType: "plot" }), tickfont: a({ editType: "plot" }), rangefont: a({ editType: "plot" }), dimensions: l("dimension", { label: { valType: "string", editType: "plot" }, tickvals: s({}, i.tickvals, { editType: "plot" }), ticktext: s({}, i.ticktext, { editType: "plot" }), tickformat: s({}, i.tickformat, { editType: "plot" }), visible: { valType: "boolean", dflt: !0, editType: "plot", }, range: { valType: "info_array", items: [ { valType: "number", editType: "plot" }, { valType: "number", editType: "plot" }, ], editType: "plot", }, constraintrange: { valType: "info_array", freeLength: !0, dimensions: "1-2", items: [ { valType: "any", editType: "plot" }, { valType: "any", editType: "plot" }, ], editType: "plot", }, multiselect: { valType: "boolean", dflt: !0, editType: "plot", }, values: { valType: "data_array", editType: "calc" }, editType: "calc", }), line: s( { editType: "calc" }, n("line", { colorscaleDflt: "Viridis", autoColorDflt: !1, editTypeOverride: "calc", }), ), unselected: { line: { color: { valType: "color", dflt: "#7f7f7f", editType: "plot", }, opacity: { valType: "number", min: 0, max: 1, dflt: "auto", editType: "plot", }, editType: "plot", }, editType: "plot", }, }; }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plot_api/plot_template": 555, "../../plots/cartesian/layout_attributes": 579, "../../plots/domain": 593, "../../plots/font_attributes": 594, }, ], 898: [ function (t, e, r) { "use strict"; var n = t("./constants"), i = t("@plotly/d3"), a = t("../../lib/gup").keyFun, o = t("../../lib/gup").repeat, s = t("../../lib").sorterAsc, l = t("../../lib").strTranslate, c = n.bar.snapRatio; function u(t, e) { return t * (1 - c) + e * c; } var f = n.bar.snapClose; function h(t, e) { return t * (1 - f) + e * f; } function p(t, e, r, n) { if ( (function (t, e) { for (var r = 0; r < e.length; r++) if (t >= e[r][0] && t <= e[r][1]) return !0; return !1; })(r, n) ) return r; var i = t ? -1 : 1, a = 0, o = e.length - 1; if (i < 0) { var s = a; (a = o), (o = s); } for (var l = e[a], c = l, f = a; i * f < i * o; f += i) { var p = f + i, d = e[p]; if (i * r < i * h(l, d)) return u(l, c); if (i * r < i * d || p === o) return u(d, l); (c = l), (l = d); } } function d(t) { t.attr("x", -n.bar.captureWidth / 2).attr( "width", n.bar.captureWidth, ); } function m(t) { t.attr("visibility", "visible") .style("visibility", "visible") .attr("fill", "yellow") .attr("opacity", 0); } function g(t) { if (!t.brush.filterSpecified) return "0," + t.height; for ( var e, r, n, i = v(t.brush.filter.getConsolidated(), t.height), a = [0], o = i.length ? i[0][0] : null, s = 0; s < i.length; s++ ) (r = (e = i[s])[1] - e[0]), a.push(o), a.push(r), (n = s + 1) < i.length && (o = i[n][0] - e[1]); return a.push(t.height), a; } function v(t, e) { return t.map(function (t) { return t .map(function (t) { return Math.max(0, t * e); }) .sort(s); }); } function y() { i.select(document.body).style("cursor", null); } function x(t) { t.attr("stroke-dasharray", g); } function b(t, e) { var r = i .select(t) .selectAll(".highlight, .highlight-shadow"); x( e ? r .transition() .duration(n.bar.snapDuration) .each("end", e) : r, ); } function _(t, e) { var r, i = t.brush, a = NaN, o = {}; if (i.filterSpecified) { var s = t.height, l = i.filter.getConsolidated(), c = v(l, s), u = NaN, f = NaN, h = NaN; for (r = 0; r <= c.length; r++) { var p = c[r]; if (p && p[0] <= e && e <= p[1]) { u = r; break; } if (((f = r ? r - 1 : NaN), p && p[0] > e)) { h = r; break; } } if ( ((a = u), isNaN(a) && (a = isNaN(f) || isNaN(h) ? isNaN(f) ? h : f : e - c[f][1] < c[h][0] - e ? f : h), !isNaN(a)) ) { var d = c[a], m = (function (t, e) { var r = n.bar.handleHeight; if (!(e > t[1] + r || e < t[0] - r)) return e >= 0.9 * t[1] + 0.1 * t[0] ? "n" : e <= 0.9 * t[0] + 0.1 * t[1] ? "s" : "ns"; })(d, e); m && ((o.interval = l[a]), (o.intervalPix = d), (o.region = m)); } } if (t.ordinal && !o.region) { var g = t.unitTickvals, y = t.unitToPaddedPx.invert(e); for (r = 0; r < g.length; r++) { var x = [ 0.25 * g[Math.max(r - 1, 0)] + 0.75 * g[r], 0.25 * g[Math.min(r + 1, g.length - 1)] + 0.75 * g[r], ]; if (y >= x[0] && y <= x[1]) { o.clickableOrdinalRange = x; break; } } } return o; } function w(t, e) { i.event.sourceEvent.stopPropagation(); var r = e.height - i.mouse(t)[1] - 2 * n.verticalPadding, a = e.brush.svgBrush; (a.wasDragged = !0), (a._dragging = !0), a.grabbingBar ? (a.newExtent = [ r - a.grabPoint, r + a.barLength - a.grabPoint, ].map(e.unitToPaddedPx.invert)) : (a.newExtent = [ a.startExtent, e.unitToPaddedPx.invert(r), ].sort(s)), (e.brush.filterSpecified = !0), (a.extent = a.stayingIntervals.concat([a.newExtent])), a.brushCallback(e), b(t.parentNode); } function T(t, e) { var r = _( e, e.height - i.mouse(t)[1] - 2 * n.verticalPadding, ), a = "crosshair"; r.clickableOrdinalRange ? (a = "pointer") : r.region && (a = r.region + "-resize"), i.select(document.body).style("cursor", a); } function k(t) { t.on("mousemove", function (t) { i.event.preventDefault(), t.parent.inBrushDrag || T(this, t); }) .on("mouseleave", function (t) { t.parent.inBrushDrag || y(); }) .call( i.behavior .drag() .on("dragstart", function (t) { !(function (t, e) { i.event.sourceEvent.stopPropagation(); var r = e.height - i.mouse(t)[1] - 2 * n.verticalPadding, a = e.unitToPaddedPx.invert(r), o = e.brush, s = _(e, r), l = s.interval, c = o.svgBrush; if ( ((c.wasDragged = !1), (c.grabbingBar = "ns" === s.region), c.grabbingBar) ) { var u = l.map(e.unitToPaddedPx); (c.grabPoint = r - u[0] - n.verticalPadding), (c.barLength = u[1] - u[0]); } (c.clickableOrdinalRange = s.clickableOrdinalRange), (c.stayingIntervals = e.multiselect && o.filterSpecified ? o.filter.getConsolidated() : []), l && (c.stayingIntervals = c.stayingIntervals.filter(function (t) { return t[0] !== l[0] && t[1] !== l[1]; })), (c.startExtent = s.region ? l["s" === s.region ? 1 : 0] : a), (e.parent.inBrushDrag = !0), c.brushStartCallback(); })(this, t); }) .on("drag", function (t) { w(this, t); }) .on("dragend", function (t) { !(function (t, e) { var r = e.brush, n = r.filter, a = r.svgBrush; a._dragging || (T(t, e), w(t, e), (e.brush.svgBrush.wasDragged = !1)), (a._dragging = !1), i.event.sourceEvent.stopPropagation(); var o = a.grabbingBar; if ( ((a.grabbingBar = !1), (a.grabLocation = void 0), (e.parent.inBrushDrag = !1), y(), !a.wasDragged) ) return ( (a.wasDragged = void 0), a.clickableOrdinalRange ? r.filterSpecified && e.multiselect ? a.extent.push(a.clickableOrdinalRange) : ((a.extent = [a.clickableOrdinalRange]), (r.filterSpecified = !0)) : o ? ((a.extent = a.stayingIntervals), 0 === a.extent.length && M(r)) : M(r), a.brushCallback(e), b(t.parentNode), void a.brushEndCallback( r.filterSpecified ? n.getConsolidated() : [], ) ); var s = function () { n.set(n.getConsolidated()); }; if (e.ordinal) { var l = e.unitTickvals; l[l.length - 1] < l[0] && l.reverse(), (a.newExtent = [ p(0, l, a.newExtent[0], a.stayingIntervals), p(1, l, a.newExtent[1], a.stayingIntervals), ]); var c = a.newExtent[1] > a.newExtent[0]; (a.extent = a.stayingIntervals.concat( c ? [a.newExtent] : [], )), a.extent.length || M(r), a.brushCallback(e), c ? b(t.parentNode, s) : (s(), b(t.parentNode)); } else s(); a.brushEndCallback( r.filterSpecified ? n.getConsolidated() : [], ); })(this, t); }), ); } function A(t, e) { return t[0] - e[0]; } function M(t) { (t.filterSpecified = !1), (t.svgBrush.extent = [[-1 / 0, 1 / 0]]); } function S(t) { for (var e, r = t.slice(), n = [], i = r.shift(); i; ) { for (e = i.slice(); (i = r.shift()) && i[0] <= e[1]; ) e[1] = Math.max(e[1], i[1]); n.push(e); } return 1 === n.length && n[0][0] > n[0][1] && (n = []), n; } e.exports = { makeBrush: function (t, e, r, n, i, a) { var o, l = (function () { var t, e, r = []; return { set: function (n) { 1 === (r = n .map(function (t) { return t.slice().sort(s); }) .sort(A)).length && r[0][0] === -1 / 0 && r[0][1] === 1 / 0 && (r = [[0, -1]]), (t = S(r)), (e = r.reduce( function (t, e) { return [ Math.min(t[0], e[0]), Math.max(t[1], e[1]), ]; }, [1 / 0, -1 / 0], )); }, get: function () { return r.slice(); }, getConsolidated: function () { return t; }, getBounds: function () { return e; }, }; })(); return ( l.set(r), { filter: l, filterSpecified: e, svgBrush: { extent: [], brushStartCallback: n, brushCallback: ((o = i), function (t) { var e = t.brush, r = (function (t) { return t.svgBrush.extent.map(function (t) { return t.slice(); }); })(e).slice(); e.filter.set(r), o(); }), brushEndCallback: a, }, } ); }, ensureAxisBrush: function (t, e, r) { var i = t.selectAll("." + n.cn.axisBrush).data(o, a); i.enter().append("g").classed(n.cn.axisBrush, !0), (function (t, e, r) { var i = r._context.staticPlot, a = t.selectAll(".background").data(o); a .enter() .append("rect") .classed("background", !0) .call(d) .call(m) .style("pointer-events", i ? "none" : "auto") .attr("transform", l(0, n.verticalPadding)), a.call(k).attr("height", function (t) { return t.height - n.verticalPadding; }); var s = t.selectAll(".highlight-shadow").data(o); s .enter() .append("line") .classed("highlight-shadow", !0) .attr("x", -n.bar.width / 2) .attr( "stroke-width", n.bar.width + n.bar.strokeWidth, ) .attr("stroke", e) .attr("opacity", n.bar.strokeOpacity) .attr("stroke-linecap", "butt"), s .attr("y1", function (t) { return t.height; }) .call(x); var c = t.selectAll(".highlight").data(o); c .enter() .append("line") .classed("highlight", !0) .attr("x", -n.bar.width / 2) .attr( "stroke-width", n.bar.width - n.bar.strokeWidth, ) .attr("stroke", n.bar.fillColor) .attr("opacity", n.bar.fillOpacity) .attr("stroke-linecap", "butt"), c .attr("y1", function (t) { return t.height; }) .call(x); })(i, e, r); }, cleanRanges: function (t, e) { if ( (Array.isArray(t[0]) ? ((t = t.map(function (t) { return t.sort(s); })), (t = e.multiselect ? S(t.sort(A)) : [t[0]])) : (t = [t.sort(s)]), e.tickvals) ) { var r = e.tickvals.slice().sort(s); if ( !(t = t .map(function (t) { var e = [p(0, r, t[0], []), p(1, r, t[1], [])]; if (e[1] > e[0]) return e; }) .filter(function (t) { return t; })).length ) return; } return t.length > 1 ? t : t[0]; }, }; }, { "../../lib": 515, "../../lib/gup": 512, "./constants": 902, "@plotly/d3": 58, }, ], 899: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("./calc"), colorbar: { container: "line", min: "cmin", max: "cmax" }, moduleType: "trace", name: "parcoords", basePlotModule: t("./base_plot"), categories: ["gl", "regl", "noOpacity", "noHover"], meta: {}, }; }, { "./attributes": 897, "./base_plot": 900, "./calc": 901, "./defaults": 903, }, ], 900: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../plots/get_data").getModuleCalcData, a = t("./plot"), o = t("../../constants/xmlns_namespaces"); (r.name = "parcoords"), (r.plot = function (t) { var e = i(t.calcdata, "parcoords")[0]; e.length && a(t, e); }), (r.clean = function (t, e, r, n) { var i = n._has && n._has("parcoords"), a = e._has && e._has("parcoords"); i && !a && (n._paperdiv.selectAll(".parcoords").remove(), n._glimages.selectAll("*").remove()); }), (r.toSVG = function (t) { var e = t._fullLayout._glimages, r = n.select(t).selectAll(".svg-container"); r .filter(function (t, e) { return e === r.size() - 1; }) .selectAll(".gl-canvas-context, .gl-canvas-focus") .each(function () { var t = this.toDataURL("image/png"); e.append("svg:image").attr({ xmlns: o.svg, "xlink:href": t, preserveAspectRatio: "none", x: 0, y: 0, width: this.style.width, height: this.style.height, }); }), window.setTimeout(function () { n.selectAll("#filterBarPattern").attr( "id", "filterBarPattern", ); }, 60); }); }, { "../../constants/xmlns_namespaces": 492, "../../plots/get_data": 602, "./plot": 909, "@plotly/d3": 58, }, ], 901: [ function (t, e, r) { "use strict"; var n = t("../../lib").isArrayOrTypedArray, i = t("../../components/colorscale"), a = t("../../lib/gup").wrap; e.exports = function (t, e) { var r, o; return ( i.hasColorscale(e, "line") && n(e.line.color) ? ((r = e.line.color), (o = i.extractOpts(e.line).colorscale), i.calc(t, e, { vals: r, containerStr: "line", cLetter: "c", })) : ((r = (function (t) { for (var e = new Array(t), r = 0; r < t; r++) e[r] = 0.5; return e; })(e._length)), (o = [ [0, e.line.color], [1, e.line.color], ])), a({ lineColor: r, cscale: o }) ); }; }, { "../../components/colorscale": 379, "../../lib": 515, "../../lib/gup": 512, }, ], 902: [ function (t, e, r) { "use strict"; e.exports = { maxDimensionCount: 60, overdrag: 45, verticalPadding: 2, tickDistance: 50, canvasPixelRatio: 1, blockLineCount: 5e3, layers: [ "contextLineLayer", "focusLineLayer", "pickLineLayer", ], axisTitleOffset: 28, axisExtentOffset: 10, bar: { width: 4, captureWidth: 10, fillColor: "magenta", fillOpacity: 1, snapDuration: 150, snapRatio: 0.25, snapClose: 0.01, strokeOpacity: 1, strokeWidth: 1, handleHeight: 8, handleOpacity: 1, handleOverlap: 0, }, cn: { axisExtentText: "axis-extent-text", parcoordsLineLayers: "parcoords-line-layers", parcoordsLineLayer: "parcoords-lines", parcoords: "parcoords", parcoordsControlView: "parcoords-control-view", yAxis: "y-axis", axisOverlays: "axis-overlays", axis: "axis", axisHeading: "axis-heading", axisTitle: "axis-title", axisExtent: "axis-extent", axisExtentTop: "axis-extent-top", axisExtentTopText: "axis-extent-top-text", axisExtentBottom: "axis-extent-bottom", axisExtentBottomText: "axis-extent-bottom-text", axisBrush: "axis-brush", }, id: { filterBarPattern: "filter-bar-pattern" }, }; }, {}, ], 903: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/colorscale/helpers").hasColorscale, a = t("../../components/colorscale/defaults"), o = t("../../plots/domain").defaults, s = t("../../plots/array_container_defaults"), l = t("../../plots/cartesian/axes"), c = t("./attributes"), u = t("./axisbrush"), f = t("./constants").maxDimensionCount, h = t("./merge_length"); function p(t, e, r, i) { function a(r, i) { return n.coerce(t, e, c.dimensions, r, i); } var o = a("values"), s = a("visible"); if (((o && o.length) || (s = e.visible = !1), s)) { a("label"), a("tickvals"), a("ticktext"), a("tickformat"); var f = a("range"); (e._ax = { _id: "y", type: "linear", showexponent: "all", exponentformat: "B", range: f, }), l.setConvert(e._ax, i.layout), a("multiselect"); var h = a("constraintrange"); h && (e.constraintrange = u.cleanRanges(h, e)); } } e.exports = function (t, e, r, l) { function u(r, i) { return n.coerce(t, e, c, r, i); } var d = t.dimensions; Array.isArray(d) && d.length > f && (n.log( "parcoords traces support up to " + f + " dimensions at the moment", ), d.splice(f)); var m = s(t, e, { name: "dimensions", layout: l, handleItemDefaults: p, }), g = (function (t, e, r, o, s) { var l = s("line.color", r); if (i(t, "line") && n.isArrayOrTypedArray(l)) { if (l.length) return ( s("line.colorscale"), a(t, e, o, s, { prefix: "line.", cLetter: "c" }), l.length ); e.line.color = r; } return 1 / 0; })(t, e, r, l, u); o(e, l, u), (Array.isArray(m) && m.length) || (e.visible = !1), h(e, m, "values", g); var v = { family: l.font.family, size: Math.round(l.font.size / 1.2), color: l.font.color, }; n.coerceFont(u, "labelfont", v), n.coerceFont(u, "tickfont", v), n.coerceFont(u, "rangefont", v), u("labelangle"), u("labelside"), u("unselected.line.color"), u("unselected.line.opacity"); }; }, { "../../components/colorscale/defaults": 377, "../../components/colorscale/helpers": 378, "../../lib": 515, "../../plots/array_container_defaults": 561, "../../plots/cartesian/axes": 566, "../../plots/domain": 593, "./attributes": 897, "./axisbrush": 898, "./constants": 902, "./merge_length": 907, }, ], 904: [ function (t, e, r) { "use strict"; var n = t("../../lib").isTypedArray; (r.convertTypedArray = function (t) { return n(t) ? Array.prototype.slice.call(t) : t; }), (r.isOrdinal = function (t) { return !!t.tickvals; }), (r.isVisible = function (t) { return t.visible || !("visible" in t); }); }, { "../../lib": 515 }, ], 905: [ function (t, e, r) { "use strict"; var n = t("./base_index"); (n.plot = t("./plot")), (e.exports = n); }, { "./base_index": 899, "./plot": 909 }, ], 906: [ function (t, e, r) { "use strict"; var n = t("glslify"), i = n([ "precision highp float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor;\n\nattribute vec4 p01_04, p05_08, p09_12, p13_16,\n p17_20, p21_24, p25_28, p29_32,\n p33_36, p37_40, p41_44, p45_48,\n p49_52, p53_56, p57_60, colors;\n\nuniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,\n loA, hiA, loB, hiB, loC, hiC, loD, hiD;\n\nuniform vec2 resolution, viewBoxPos, viewBoxSize;\nuniform float maskHeight;\nuniform float drwLayer; // 0: context, 1: focus, 2: pick\nuniform vec4 contextColor;\nuniform sampler2D maskTexture, palette;\n\nbool isPick = (drwLayer > 1.5);\nbool isContext = (drwLayer < 0.5);\n\nconst vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);\nconst vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);\n\nfloat val(mat4 p, mat4 v) {\n return dot(matrixCompMult(p, v) * UNITS, UNITS);\n}\n\nfloat axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {\n float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);\n float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);\n return y1 * (1.0 - ratio) + y2 * ratio;\n}\n\nint iMod(int a, int b) {\n return a - b * (a / b);\n}\n\nbool fOutside(float p, float lo, float hi) {\n return (lo < hi) && (lo > p || p > hi);\n}\n\nbool vOutside(vec4 p, vec4 lo, vec4 hi) {\n return (\n fOutside(p[0], lo[0], hi[0]) ||\n fOutside(p[1], lo[1], hi[1]) ||\n fOutside(p[2], lo[2], hi[2]) ||\n fOutside(p[3], lo[3], hi[3])\n );\n}\n\nbool mOutside(mat4 p, mat4 lo, mat4 hi) {\n return (\n vOutside(p[0], lo[0], hi[0]) ||\n vOutside(p[1], lo[1], hi[1]) ||\n vOutside(p[2], lo[2], hi[2]) ||\n vOutside(p[3], lo[3], hi[3])\n );\n}\n\nbool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {\n return mOutside(A, loA, hiA) ||\n mOutside(B, loB, hiB) ||\n mOutside(C, loC, hiC) ||\n mOutside(D, loD, hiD);\n}\n\nbool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {\n mat4 pnts[4];\n pnts[0] = A;\n pnts[1] = B;\n pnts[2] = C;\n pnts[3] = D;\n\n for(int i = 0; i < 4; ++i) {\n for(int j = 0; j < 4; ++j) {\n for(int k = 0; k < 4; ++k) {\n if(0 == iMod(\n int(255.0 * texture2D(maskTexture,\n vec2(\n (float(i * 2 + j / 2) + 0.5) / 8.0,\n (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight\n ))[3]\n ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),\n 2\n )) return true;\n }\n }\n }\n return false;\n}\n\nvec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {\n float x = 0.5 * sign(v) + 0.5;\n float y = axisY(x, A, B, C, D);\n float z = 1.0 - abs(v);\n\n z += isContext ? 0.0 : 2.0 * float(\n outsideBoundingBox(A, B, C, D) ||\n outsideRasterMask(A, B, C, D)\n );\n\n return vec4(\n 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,\n z,\n 1.0\n );\n}\n\nvoid main() {\n mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);\n mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);\n mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);\n mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);\n\n float v = colors[3];\n\n gl_Position = position(isContext, v, A, B, C, D);\n\n fragColor =\n isContext ? vec4(contextColor) :\n isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));\n}\n", ]), a = n([ "precision highp float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor;\n\nvoid main() {\n gl_FragColor = fragColor;\n}\n", ]), o = t("./constants").maxDimensionCount, s = t("../../lib"), l = new Uint8Array(4), c = new Uint8Array(4), u = { shape: [256, 1], format: "rgba", type: "uint8", mag: "nearest", min: "nearest", }; function f(t, e, r, n, i) { var a = t._gl; a.enable(a.SCISSOR_TEST), a.scissor(e, r, n, i), t.clear({ color: [0, 0, 0, 0], depth: 1 }); } function h(t, e, r, n, i, a) { var o = a.key; r.drawCompleted || (!(function (t) { t.read({ x: 0, y: 0, width: 1, height: 1, data: l }); })(t), (r.drawCompleted = !0)), (function s(l) { var c = Math.min(n, i - l * n); 0 === l && (window.cancelAnimationFrame(r.currentRafs[o]), delete r.currentRafs[o], f( t, a.scissorX, a.scissorY, a.scissorWidth, a.viewBoxSize[1], )), r.clearOnly || ((a.count = 2 * c), (a.offset = 2 * l * n), e(a), l * n + c < i && (r.currentRafs[o] = window.requestAnimationFrame( function () { s(l + 1); }, )), (r.drawCompleted = !1)); })(0); } function p(t, e) { for (var r = new Array(256), n = 0; n < 256; n++) r[n] = t(n / 255).concat(e); return r; } function d(t, e) { return ((t >>> (8 * e)) % 256) / 255; } function m(t, e, r) { for (var n = new Array(8 * e), i = 0, a = 0; a < e; a++) for (var o = 0; o < 2; o++) for (var s = 0; s < 4; s++) { var l = 4 * t + s, c = r[64 * a + l]; 63 === l && 0 === o && (c *= -1), (n[i++] = c); } return n; } function g(t) { var e = "0" + t; return e.substr(e.length - 2); } function v(t) { return t < o ? "p" + g(t + 1) + "_" + g(t + 4) : "colors"; } function y(t, e, r, n, i, a, o, l, c, u, f, h, p, d) { for (var m = [[], []], g = 0; g < 64; g++) (m[0][g] = g === i ? 1 : 0), (m[1][g] = g === a ? 1 : 0); (o *= d), (l *= d), (c *= d), (u *= d); var v = t.lines.canvasOverdrag * d, y = t.domain, x = t.canvasWidth * d, b = t.canvasHeight * d, _ = t.pad.l * d, w = t.pad.b * d, T = t.layoutHeight * d, k = t.layoutWidth * d, A = t.deselectedLines.color, M = t.deselectedLines.opacity; return s.extendFlat( { key: f, resolution: [x, b], viewBoxPos: [o + v, l], viewBoxSize: [c, u], i0: i, i1: a, dim0A: m[0].slice(0, 16), dim0B: m[0].slice(16, 32), dim0C: m[0].slice(32, 48), dim0D: m[0].slice(48, 64), dim1A: m[1].slice(0, 16), dim1B: m[1].slice(16, 32), dim1C: m[1].slice(32, 48), dim1D: m[1].slice(48, 64), drwLayer: h, contextColor: [ A[0] / 255, A[1] / 255, A[2] / 255, "auto" !== M ? A[3] * M : Math.max( 1 / 255, Math.pow(1 / t.lines.color.length, 1 / 3), ), ], scissorX: (n === e ? 0 : o + v) + (_ - v) + k * y.x[0], scissorWidth: (n === r ? x - o + v : c + 0.5) + (n === e ? o + v : 0), scissorY: l + w + T * y.y[0], scissorHeight: u, viewportX: _ - v + k * y.x[0], viewportY: w + T * y.y[0], viewportWidth: x, viewportHeight: b, }, p, ); } function x(t) { var e = Math.max(0, Math.floor(2047 * t[0]), 0), r = Math.min(2047, Math.ceil(2047 * t[1]), 2047); return [Math.min(e, r), Math.max(e, r)]; } e.exports = function (t, e) { var r, n, l, g, b, _ = e.context, w = e.pick, T = e.regl, k = T._gl, A = k.getParameter(k.ALIASED_LINE_WIDTH_RANGE), M = Math.max( A[0], Math.min(A[1], e.viewModel.plotGlPixelRatio), ), S = { currentRafs: {}, drawCompleted: !0, clearOnly: !1 }, E = (function (t) { for (var e = {}, r = 0; r <= o; r += 4) e[v(r)] = t.buffer({ usage: "dynamic", type: "float", data: new Uint8Array(0), }); return e; })(T), L = T.texture(u), C = []; I(e); var P = T({ profile: !1, blend: { enable: _, func: { srcRGB: "src alpha", dstRGB: "one minus src alpha", srcAlpha: 1, dstAlpha: 1, }, equation: { rgb: "add", alpha: "add" }, color: [0, 0, 0, 0], }, depth: { enable: !_, mask: !0, func: "less", range: [0, 1], }, cull: { enable: !0, face: "back" }, scissor: { enable: !0, box: { x: T.prop("scissorX"), y: T.prop("scissorY"), width: T.prop("scissorWidth"), height: T.prop("scissorHeight"), }, }, viewport: { x: T.prop("viewportX"), y: T.prop("viewportY"), width: T.prop("viewportWidth"), height: T.prop("viewportHeight"), }, dither: !1, vert: i, frag: a, primitive: "lines", lineWidth: M, attributes: E, uniforms: { resolution: T.prop("resolution"), viewBoxPos: T.prop("viewBoxPos"), viewBoxSize: T.prop("viewBoxSize"), dim0A: T.prop("dim0A"), dim1A: T.prop("dim1A"), dim0B: T.prop("dim0B"), dim1B: T.prop("dim1B"), dim0C: T.prop("dim0C"), dim1C: T.prop("dim1C"), dim0D: T.prop("dim0D"), dim1D: T.prop("dim1D"), loA: T.prop("loA"), hiA: T.prop("hiA"), loB: T.prop("loB"), hiB: T.prop("hiB"), loC: T.prop("loC"), hiC: T.prop("hiC"), loD: T.prop("loD"), hiD: T.prop("hiD"), palette: L, contextColor: T.prop("contextColor"), maskTexture: T.prop("maskTexture"), drwLayer: T.prop("drwLayer"), maskHeight: T.prop("maskHeight"), }, offset: T.prop("offset"), count: T.prop("count"), }); function I(t) { (r = t.model), (n = t.viewModel), (l = n.dimensions.slice()), (g = l[0] ? l[0].values.length : 0); var e = r.lines, i = w ? e.color.map(function (t, r) { return r / e.color.length; }) : e.color, a = (function (t, e, r) { for ( var n, i = new Array(t * (o + 4)), a = 0, s = 0; s < t; s++ ) { for (var l = 0; l < o; l++) i[a++] = l < e.length ? e[l].paddedUnitValues[s] : 0.5; (i[a++] = d(s, 2)), (i[a++] = d(s, 1)), (i[a++] = d(s, 0)), (i[a++] = ((n = r[s]), Math.max(1e-6, Math.min(0.999999, n)))); } return i; })(g, l, i); !(function (t, e, r) { for (var n = 0; n <= o; n += 4) t[v(n)](m(n / 4, e, r)); })(E, g, a), _ || w || (L = T.texture( s.extendFlat({ data: p(r.unitToColor, 255) }, u), )); } return { render: function (t, e, n) { var i, a, o, s = t.length, c = 1 / 0, u = -1 / 0; for (i = 0; i < s; i++) t[i].dim0.canvasX < c && ((c = t[i].dim0.canvasX), (a = i)), t[i].dim1.canvasX > u && ((u = t[i].dim1.canvasX), (o = i)); 0 === s && f(T, 0, 0, r.canvasWidth, r.canvasHeight); var p = (function (t) { var e, r, n, i = [[], []]; for (n = 0; n < 64; n++) { var a = !t && n < l.length ? l[n].brush.filter.getBounds() : [-1 / 0, 1 / 0]; (i[0][n] = a[0]), (i[1][n] = a[1]); } var o = new Array(16384); for (e = 0; e < 16384; e++) o[e] = 255; if (!t) for (e = 0; e < l.length; e++) { var s = e % 8, c = (e - s) / 8, u = Math.pow(2, s), f = l[e].brush.filter.get(); if (!(f.length < 2)) { var h = x(f[0])[1]; for (r = 1; r < f.length; r++) { var p = x(f[r]); for (n = h + 1; n < p[0]; n++) o[8 * n + c] &= ~u; h = Math.max(h, p[1]); } } } var d = { shape: [8, 2048], format: "alpha", type: "uint8", mag: "nearest", min: "nearest", data: o, }; return ( b ? b(d) : (b = T.texture(d)), { maskTexture: b, maskHeight: 2048, loA: i[0].slice(0, 16), loB: i[0].slice(16, 32), loC: i[0].slice(32, 48), loD: i[0].slice(48, 64), hiA: i[1].slice(0, 16), hiB: i[1].slice(16, 32), hiC: i[1].slice(32, 48), hiD: i[1].slice(48, 64), } ); })(_); for (i = 0; i < s; i++) { var d = t[i], m = d.dim0.crossfilterDimensionIndex, v = d.dim1.crossfilterDimensionIndex, k = d.canvasX, A = d.canvasY, M = k + d.panelSizeX, E = d.plotGlPixelRatio; if (e || !C[m] || C[m][0] !== k || C[m][1] !== M) { C[m] = [k, M]; var L = y( r, a, o, i, m, v, k, A, d.panelSizeX, d.panelSizeY, d.dim0.crossfilterDimensionIndex, _ ? 0 : w ? 2 : 1, p, E, ); S.clearOnly = n; var I = e ? r.lines.blockLineCount : g; h(T, P, S, I, g, L); } } }, readPixel: function (t, e) { return ( T.read({ x: t, y: e, width: 1, height: 1, data: c }), c ); }, readPixels: function (t, e, r, n) { var i = new Uint8Array(4 * r * n); return ( T.read({ x: t, y: e, width: r, height: n, data: i }), i ); }, destroy: function () { for (var e in ((t.style["pointer-events"] = "none"), L.destroy(), b && b.destroy(), E)) E[e].destroy(); }, update: I, }; }; }, { "../../lib": 515, "./constants": 902, glslify: 227 }, ], 907: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n) { var i, a; for (n || (n = 1 / 0), i = 0; i < e.length; i++) (a = e[i]).visible && (n = Math.min(n, a[r].length)); for ( n === 1 / 0 && (n = 0), t._length = n, i = 0; i < e.length; i++ ) (a = e[i]).visible && (a._length = n); return n; }; }, {}, ], 908: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = i.numberFormat, o = t("color-rgba"), s = t("../../plots/cartesian/axes"), l = i.strRotate, c = i.strTranslate, u = t("../../lib/svg_text_utils"), f = t("../../components/drawing"), h = t("../../components/colorscale"), p = t("../../lib/gup"), d = p.keyFun, m = p.repeat, g = p.unwrap, v = t("./helpers"), y = t("./constants"), x = t("./axisbrush"), b = t("./lines"); function _(t, e, r) { return i.aggNums(t, null, e, r); } function w(t, e) { return k(_(Math.min, t, e), _(Math.max, t, e)); } function T(t) { var e = t.range; return e ? k(e[0], e[1]) : w(t.values, t._length); } function k(t, e) { return ( (!isNaN(t) && isFinite(t)) || (t = 0), (!isNaN(e) && isFinite(e)) || (e = 0), t === e && (0 === t ? ((t -= 1), (e += 1)) : ((t *= 0.9), (e *= 1.1))), [t, e] ); } function A(t, e, r, i, o) { var s, l, c = T(r); return i ? n.scale .ordinal() .domain( i.map( ((s = a(r.tickformat)), (l = o), l ? function (t, e) { var r = l[e]; return null == r ? s(t) : r; } : s), ), ) .range( i.map(function (r) { var n = (r - c[0]) / (c[1] - c[0]); return t - e + n * (2 * e - t); }), ) : n.scale .linear() .domain(c) .range([t - e, e]); } function M(t) { if (t.tickvals) { var e = T(t); return n.scale .ordinal() .domain(t.tickvals) .range( t.tickvals.map(function (t) { return (t - e[0]) / (e[1] - e[0]); }), ); } } function S(t) { var e = t.map(function (t) { return t[0]; }), r = t.map(function (t) { var e = o(t[1]); return n.rgb( "rgb(" + e[0] + "," + e[1] + "," + e[2] + ")", ); }), i = "rgb".split("").map(function (t) { return n.scale .linear() .clamp(!0) .domain(e) .range( r.map( ((i = t), function (t) { return t[i]; }), ), ); var i; }); return function (t) { return i.map(function (e) { return e(t); }); }; } function E(t) { return t.dimensions.some(function (t) { return t.brush.filterSpecified; }); } function L(t, e, r) { var a = g(e), s = a.trace, l = v.convertTypedArray(a.lineColor), c = s.line, u = { color: o(s.unselected.line.color), opacity: s.unselected.line.opacity, }, f = h.extractOpts(c), p = f.reversescale ? h.flipScale(a.cscale) : a.cscale, d = s.domain, m = s.dimensions, x = t.width, b = s.labelangle, _ = s.labelside, w = s.labelfont, k = s.tickfont, A = s.rangefont, M = i.extendDeepNoArrays({}, c, { color: l.map( n.scale.linear().domain( T({ values: l, range: [f.min, f.max], _length: s._length, }), ), ), blockLineCount: y.blockLineCount, canvasOverdrag: y.overdrag * y.canvasPixelRatio, }), E = Math.floor(x * (d.x[1] - d.x[0])), L = Math.floor(t.height * (d.y[1] - d.y[0])), C = t.margin || { l: 80, r: 80, t: 100, b: 80 }, P = E, I = L; return { key: r, colCount: m.filter(v.isVisible).length, dimensions: m, tickDistance: y.tickDistance, unitToColor: S(p), lines: M, deselectedLines: u, labelAngle: b, labelSide: _, labelFont: w, tickFont: k, rangeFont: A, layoutWidth: x, layoutHeight: t.height, domain: d, translateX: d.x[0] * x, translateY: t.height - d.y[1] * t.height, pad: C, canvasWidth: P * y.canvasPixelRatio + 2 * M.canvasOverdrag, canvasHeight: I * y.canvasPixelRatio, width: P, height: I, canvasPixelRatio: y.canvasPixelRatio, }; } function C(t, e, r) { var o = r.width, s = r.height, l = r.dimensions, c = r.canvasPixelRatio, u = function (t) { return (o * t) / Math.max(1, r.colCount - 1); }, f = y.verticalPadding / s, h = (function (t, e) { return n.scale.linear().range([e, t - e]); })(s, y.verticalPadding), p = { key: r.key, xScale: u, model: r, inBrushDrag: !1 }, d = {}; return ( (p.dimensions = l .filter(v.isVisible) .map(function (o, l) { var m = (function (t, e) { return n.scale .linear() .domain(T(t)) .range([e, 1 - e]); })(o, f), g = d[o.label]; d[o.label] = (g || 0) + 1; var b = o.label + (g ? "__" + g : ""), _ = o.constraintrange, w = _ && _.length; w && !Array.isArray(_[0]) && (_ = [_]); var k = w ? _.map(function (t) { return t.map(m); }) : [[-1 / 0, 1 / 0]], S = o.values; S.length > o._length && (S = S.slice(0, o._length)); var L, C = o.tickvals; function P(t, e) { return { val: t, text: L[e] }; } function I(t, e) { return t.val - e.val; } if (Array.isArray(C) && C.length) { (L = o.ticktext), Array.isArray(L) && L.length ? L.length > C.length ? (L = L.slice(0, C.length)) : C.length > L.length && (C = C.slice(0, L.length)) : (L = C.map(a(o.tickformat))); for (var O = 1; O < C.length; O++) if (C[O] < C[O - 1]) { for ( var z = C.map(P).sort(I), D = 0; D < C.length; D++ ) (C[D] = z[D].val), (L[D] = z[D].text); break; } } else C = void 0; return ( (S = v.convertTypedArray(S)), { key: b, label: o.label, tickFormat: o.tickformat, tickvals: C, ticktext: L, ordinal: v.isOrdinal(o), multiselect: o.multiselect, xIndex: l, crossfilterDimensionIndex: l, visibleIndex: o._index, height: s, values: S, paddedUnitValues: S.map(m), unitTickvals: C && C.map(m), xScale: u, x: u(l), canvasX: u(l) * c, unitToPaddedPx: h, domainScale: A(s, y.verticalPadding, o, C, L), ordinalScale: M(o), parent: p, model: r, brush: x.makeBrush( t, w, k, function () { t.linePickActive(!1); }, function () { var e = p; e.focusLayer && e.focusLayer.render(e.panels, !0); var r = E(e); !t.contextShown() && r ? (e.contextLayer && e.contextLayer.render(e.panels, !0), t.contextShown(!0)) : t.contextShown() && !r && (e.contextLayer && e.contextLayer.render(e.panels, !0, !0), t.contextShown(!1)); }, function (r) { if ( (p.focusLayer.render(p.panels, !0), p.pickLayer && p.pickLayer.render(p.panels, !0), t.linePickActive(!0), e && e.filterChanged) ) { var n = m.invert, a = r .map(function (t) { return t.map(n).sort(i.sorterAsc); }) .sort(function (t, e) { return t[0] - e[0]; }); e.filterChanged(p.key, o._index, a); } }, ), } ); })), p ); } function P(t) { t.classed(y.cn.axisExtentText, !0) .attr("text-anchor", "middle") .style("cursor", "default"); } function I(t, e) { var r = "top" === e ? 1 : -1, n = (t * Math.PI) / 180; return { dir: r, dx: Math.sin(n), dy: Math.cos(n), degrees: t, }; } function O(t, e, r) { for ( var n = e.panels || (e.panels = []), i = t.data(), a = 0; a < i.length - 1; a++ ) { var o = n[a] || (n[a] = {}), s = i[a], l = i[a + 1]; (o.dim0 = s), (o.dim1 = l), (o.canvasX = s.canvasX), (o.panelSizeX = l.canvasX - s.canvasX), (o.panelSizeY = e.model.canvasHeight), (o.y = 0), (o.canvasY = 0), (o.plotGlPixelRatio = r); } } function z(t, e) { return s.tickText(t._ax, e, !1).text; } function D(t, e) { if (t.ordinal) return ""; var r = t.domainScale.domain(), n = r[e ? r.length - 1 : 0]; return z(t.model.dimensions[t.visibleIndex], n); } e.exports = function (t, e, r, a) { var o = t._context.staticPlot, h = t._fullLayout, p = h._toppaper, _ = h._glcontainer, T = t._context.plotGlPixelRatio, A = t._fullLayout.paper_bgcolor; !(function (t) { for (var e = 0; e < t.length; e++) for (var r = 0; r < t[e].length; r++) for ( var n = t[e][r].trace, i = n.dimensions, a = 0; a < i.length; a++ ) { var o = i[a].values, l = i[a]._ax; l && (l.range ? (l.range = k(l.range[0], l.range[1])) : (l.range = w(o, n._length)), l.dtick || (l.dtick = 0.01 * (Math.abs(l.range[1] - l.range[0]) || 1)), (l.tickformat = i[a].tickformat), s.calcTicks(l), l.cleanRange()); } })(e); var M, S, R = ((M = !0), (S = !1), { linePickActive: function (t) { return arguments.length ? (M = !!t) : M; }, contextShown: function (t) { return arguments.length ? (S = !!t) : S; }, }), F = e .filter(function (t) { return g(t).trace.visible; }) .map(L.bind(0, r)) .map(C.bind(0, R, a)); _.each(function (t, e) { return i.extendFlat(t, F[e]); }); var B = _.selectAll(".gl-canvas").each(function (t) { (t.viewModel = F[0]), (t.viewModel.plotGlPixelRatio = T), (t.viewModel.paperColor = A), (t.model = t.viewModel ? t.viewModel.model : null); }), N = null; B.filter(function (t) { return t.pick; }) .style("pointer-events", o ? "none" : "auto") .on("mousemove", function (t) { if (R.linePickActive() && t.lineLayer && a && a.hover) { var e = n.event, r = this.width, i = this.height, o = n.mouse(this), s = o[0], l = o[1]; if (s < 0 || l < 0 || s >= r || l >= i) return; var c = t.lineLayer.readPixel(s, i - 1 - l), u = 0 !== c[3], f = u ? c[2] + 256 * (c[1] + 256 * c[0]) : null, h = { x: s, y: l, clientX: e.clientX, clientY: e.clientY, dataIndex: t.model.key, curveNumber: f, }; f !== N && (u ? a.hover(h) : a.unhover && a.unhover(h), (N = f)); } }), B.style("opacity", function (t) { return t.pick ? 0 : 1; }), p.style("background", "rgba(255, 255, 255, 0)"); var j = p.selectAll("." + y.cn.parcoords).data(F, d); j.exit().remove(), j .enter() .append("g") .classed(y.cn.parcoords, !0) .style("shape-rendering", "crispEdges") .style("pointer-events", "none"), j.attr("transform", function (t) { return c(t.model.translateX, t.model.translateY); }); var U = j .selectAll("." + y.cn.parcoordsControlView) .data(m, d); U.enter() .append("g") .classed(y.cn.parcoordsControlView, !0), U.attr("transform", function (t) { return c(t.model.pad.l, t.model.pad.t); }); var V = U.selectAll("." + y.cn.yAxis).data(function (t) { return t.dimensions; }, d); V.enter().append("g").classed(y.cn.yAxis, !0), U.each(function (t) { O(V, t, T); }), B.each(function (t) { if (t.viewModel) { !t.lineLayer || a ? (t.lineLayer = b(this, t)) : t.lineLayer.update(t), (t.key || 0 === t.key) && (t.viewModel[t.key] = t.lineLayer); var e = !t.context || a; t.lineLayer.render(t.viewModel.panels, e); } }), V.attr("transform", function (t) { return c(t.xScale(t.xIndex), 0); }), V.call( n.behavior .drag() .origin(function (t) { return t; }) .on("drag", function (t) { var e = t.parent; R.linePickActive(!1), (t.x = Math.max( -y.overdrag, Math.min(t.model.width + y.overdrag, n.event.x), )), (t.canvasX = t.x * t.model.canvasPixelRatio), V.sort(function (t, e) { return t.x - e.x; }).each(function (e, r) { (e.xIndex = r), (e.x = t === e ? e.x : e.xScale(e.xIndex)), (e.canvasX = e.x * e.model.canvasPixelRatio); }), O(V, e, T), V.filter(function (e) { return 0 !== Math.abs(t.xIndex - e.xIndex); }).attr("transform", function (t) { return c(t.xScale(t.xIndex), 0); }), n.select(this).attr("transform", c(t.x, 0)), V.each(function (r, n, i) { i === t.parent.key && (e.dimensions[n] = r); }), e.contextLayer && e.contextLayer.render(e.panels, !1, !E(e)), e.focusLayer.render && e.focusLayer.render(e.panels); }) .on("dragend", function (t) { var e = t.parent; (t.x = t.xScale(t.xIndex)), (t.canvasX = t.x * t.model.canvasPixelRatio), O(V, e, T), n.select(this).attr("transform", function (t) { return c(t.x, 0); }), e.contextLayer && e.contextLayer.render(e.panels, !1, !E(e)), e.focusLayer && e.focusLayer.render(e.panels), e.pickLayer && e.pickLayer.render(e.panels, !0), R.linePickActive(!0), a && a.axesMoved && a.axesMoved( e.key, e.dimensions.map(function (t) { return t.crossfilterDimensionIndex; }), ); }), ), V.exit().remove(); var H = V.selectAll("." + y.cn.axisOverlays).data(m, d); H.enter().append("g").classed(y.cn.axisOverlays, !0), H.selectAll("." + y.cn.axis).remove(); var q = H.selectAll("." + y.cn.axis).data(m, d); q.enter().append("g").classed(y.cn.axis, !0), q.each(function (t) { var e = t.model.height / t.model.tickDistance, r = t.domainScale, i = r.domain(); n.select(this).call( n.svg .axis() .orient("left") .tickSize(4) .outerTickSize(2) .ticks(e, t.tickFormat) .tickValues(t.ordinal ? i : null) .tickFormat(function (e) { return v.isOrdinal(t) ? e : z(t.model.dimensions[t.visibleIndex], e); }) .scale(r), ), f.font(q.selectAll("text"), t.model.tickFont); }), q .selectAll(".domain, .tick>line") .attr("fill", "none") .attr("stroke", "black") .attr("stroke-opacity", 0.25) .attr("stroke-width", "1px"), q .selectAll("text") .style("text-shadow", u.makeTextShadow(A)) .style("cursor", "default"); var G = H.selectAll("." + y.cn.axisHeading).data(m, d); G.enter().append("g").classed(y.cn.axisHeading, !0); var Y = G.selectAll("." + y.cn.axisTitle).data(m, d); Y.enter() .append("text") .classed(y.cn.axisTitle, !0) .attr("text-anchor", "middle") .style("cursor", "ew-resize") .style("pointer-events", o ? "none" : "auto"), Y.text(function (t) { return t.label; }) .each(function (e) { var r = n.select(this); f.font(r, e.model.labelFont), u.convertToTspans(r, t); }) .attr("transform", function (t) { var e = I(t.model.labelAngle, t.model.labelSide), r = y.axisTitleOffset; return ( (e.dir > 0 ? "" : c(0, 2 * r + t.model.height)) + l(e.degrees) + c(-r * e.dx, -r * e.dy) ); }) .attr("text-anchor", function (t) { var e = I(t.model.labelAngle, t.model.labelSide); return 2 * Math.abs(e.dx) > Math.abs(e.dy) ? e.dir * e.dx < 0 ? "start" : "end" : "middle"; }); var W = H.selectAll("." + y.cn.axisExtent).data(m, d); W.enter().append("g").classed(y.cn.axisExtent, !0); var Z = W.selectAll("." + y.cn.axisExtentTop).data(m, d); Z.enter().append("g").classed(y.cn.axisExtentTop, !0), Z.attr("transform", c(0, -y.axisExtentOffset)); var X = Z.selectAll("." + y.cn.axisExtentTopText).data( m, d, ); X.enter() .append("text") .classed(y.cn.axisExtentTopText, !0) .call(P), X.text(function (t) { return D(t, !0); }).each(function (t) { f.font(n.select(this), t.model.rangeFont); }); var J = W.selectAll("." + y.cn.axisExtentBottom).data(m, d); J.enter().append("g").classed(y.cn.axisExtentBottom, !0), J.attr("transform", function (t) { return c(0, t.model.height + y.axisExtentOffset); }); var K = J.selectAll("." + y.cn.axisExtentBottomText).data( m, d, ); K.enter() .append("text") .classed(y.cn.axisExtentBottomText, !0) .attr("dy", "0.75em") .call(P), K.text(function (t) { return D(t, !1); }).each(function (t) { f.font(n.select(this), t.model.rangeFont); }), x.ensureAxisBrush(H, A, t); }; }, { "../../components/colorscale": 379, "../../components/drawing": 389, "../../lib": 515, "../../lib/gup": 512, "../../lib/svg_text_utils": 541, "../../plots/cartesian/axes": 566, "./axisbrush": 898, "./constants": 902, "./helpers": 904, "./lines": 906, "@plotly/d3": 58, "color-rgba": 91, }, ], 909: [ function (t, e, r) { "use strict"; var n = t("./parcoords"), i = t("../../lib/prepare_regl"), a = t("./helpers").isVisible, o = {}; function s(t, e, r) { var n = e.indexOf(r), i = t.indexOf(n); return -1 === i && (i += e.length), i; } (e.exports = function (t, e) { var r = t._fullLayout; if (i(t, [], o)) { var l = {}, c = {}, u = {}, f = {}, h = r._size; e.forEach(function (e, r) { var n = e[0].trace; u[r] = n.index; var i = (f[r] = n._fullInput.index); (l[r] = t.data[i].dimensions), (c[r] = t.data[i].dimensions.slice()); }); n( t, e, { width: h.w, height: h.h, margin: { t: h.t, r: h.r, b: h.b, l: h.l }, }, { filterChanged: function (e, n, i) { var a = c[e][n], o = i.map(function (t) { return t.slice(); }), s = "dimensions[" + n + "].constraintrange", l = r._tracePreGUI[ t._fullData[u[e]]._fullInput.uid ]; if (void 0 === l[s]) { var h = a.constraintrange; l[s] = h || null; } var p = t._fullData[u[e]].dimensions[n]; o.length ? (1 === o.length && (o = o[0]), (a.constraintrange = o), (p.constraintrange = o.slice()), (o = [o])) : (delete a.constraintrange, delete p.constraintrange, (o = null)); var d = {}; (d[s] = o), t.emit("plotly_restyle", [d, [f[e]]]); }, hover: function (e) { t.emit("plotly_hover", e); }, unhover: function (e) { t.emit("plotly_unhover", e); }, axesMoved: function (e, r) { var n = (function (t, e) { return function (r, n) { return s(t, e, r) - s(t, e, n); }; })(r, c[e].filter(a)); l[e].sort(n), c[e] .filter(function (t) { return !a(t); }) .sort(function (t) { return c[e].indexOf(t); }) .forEach(function (t) { l[e].splice(l[e].indexOf(t), 1), l[e].splice(c[e].indexOf(t), 0, t); }), t.emit("plotly_restyle", [ { dimensions: [l[e]] }, [f[e]], ]); }, }, ); } }).reglPrecompiled = o; }, { "../../lib/prepare_regl": 528, "./helpers": 904, "./parcoords": 908, }, ], 910: [ function (t, e, r) { "use strict"; var n = t("../../plots/attributes"), i = t("../../plots/domain").attributes, a = t("../../plots/font_attributes"), o = t("../../components/color/attributes"), s = t("../../plots/template_attributes").hovertemplateAttrs, l = t("../../plots/template_attributes").texttemplateAttrs, c = t("../../lib/extend").extendFlat, u = a({ editType: "plot", arrayOk: !0, colorEditType: "plot", }); e.exports = { labels: { valType: "data_array", editType: "calc" }, label0: { valType: "number", dflt: 0, editType: "calc" }, dlabel: { valType: "number", dflt: 1, editType: "calc" }, values: { valType: "data_array", editType: "calc" }, marker: { colors: { valType: "data_array", editType: "calc" }, line: { color: { valType: "color", dflt: o.defaultLine, arrayOk: !0, editType: "style", }, width: { valType: "number", min: 0, dflt: 0, arrayOk: !0, editType: "style", }, editType: "calc", }, editType: "calc", }, text: { valType: "data_array", editType: "plot" }, hovertext: { valType: "string", dflt: "", arrayOk: !0, editType: "style", }, scalegroup: { valType: "string", dflt: "", editType: "calc", }, textinfo: { valType: "flaglist", flags: ["label", "text", "value", "percent"], extras: ["none"], editType: "calc", }, hoverinfo: c({}, n.hoverinfo, { flags: ["label", "text", "value", "percent", "name"], }), hovertemplate: s( {}, { keys: ["label", "color", "value", "percent", "text"] }, ), texttemplate: l( { editType: "plot" }, { keys: ["label", "color", "value", "percent", "text"] }, ), textposition: { valType: "enumerated", values: ["inside", "outside", "auto", "none"], dflt: "auto", arrayOk: !0, editType: "plot", }, textfont: c({}, u, {}), insidetextorientation: { valType: "enumerated", values: ["horizontal", "radial", "tangential", "auto"], dflt: "auto", editType: "plot", }, insidetextfont: c({}, u, {}), outsidetextfont: c({}, u, {}), automargin: { valType: "boolean", dflt: !1, editType: "plot", }, title: { text: { valType: "string", dflt: "", editType: "plot" }, font: c({}, u, {}), position: { valType: "enumerated", values: [ "top left", "top center", "top right", "middle center", "bottom left", "bottom center", "bottom right", ], editType: "plot", }, editType: "plot", }, domain: i({ name: "pie", trace: !0, editType: "calc" }), hole: { valType: "number", min: 0, max: 1, dflt: 0, editType: "calc", }, sort: { valType: "boolean", dflt: !0, editType: "calc" }, direction: { valType: "enumerated", values: ["clockwise", "counterclockwise"], dflt: "counterclockwise", editType: "calc", }, rotation: { valType: "angle", dflt: 0, editType: "calc" }, pull: { valType: "number", min: 0, max: 1, dflt: 0, arrayOk: !0, editType: "calc", }, _deprecated: { title: { valType: "string", dflt: "", editType: "calc" }, titlefont: c({}, u, {}), titleposition: { valType: "enumerated", values: [ "top left", "top center", "top right", "middle center", "bottom left", "bottom center", "bottom right", ], editType: "calc", }, }, }; }, { "../../components/color/attributes": 366, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/domain": 593, "../../plots/font_attributes": 594, "../../plots/template_attributes": 642, }, ], 911: [ function (t, e, r) { "use strict"; var n = t("../../plots/plots"); (r.name = "pie"), (r.plot = function (t, e, i, a) { n.plotBasePlot(r.name, t, e, i, a); }), (r.clean = function (t, e, i, a) { n.cleanBasePlot(r.name, t, e, i, a); }); }, { "../../plots/plots": 628 }, ], 912: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("tinycolor2"), a = t("../../components/color"), o = {}; function s(t) { return function (e, r) { return ( !!e && !!(e = i(e)).isValid() && ((e = a.addOpacity(e, e.getAlpha())), t[r] || (t[r] = e), e) ); }; } function l(t, e) { var r, n = JSON.stringify(t), a = e[n]; if (!a) { for (a = t.slice(), r = 0; r < t.length; r++) a.push(i(t[r]).lighten(20).toHexString()); for (r = 0; r < t.length; r++) a.push(i(t[r]).darken(20).toHexString()); e[n] = a; } return a; } e.exports = { calc: function (t, e) { var r, i, a = [], o = t._fullLayout, l = o.hiddenlabels || [], c = e.labels, u = e.marker.colors || [], f = e.values, h = e._length, p = e._hasValues && h; if (e.dlabel) for (c = new Array(h), r = 0; r < h; r++) c[r] = String(e.label0 + r * e.dlabel); var d = {}, m = s(o["_" + e.type + "colormap"]), g = 0, v = !1; for (r = 0; r < h; r++) { var y, x, b; if (p) { if (((y = f[r]), !n(y))) continue; y = +y; } else y = 1; (void 0 !== (x = c[r]) && "" !== x) || (x = r); var _ = d[(x = String(x))]; void 0 === _ ? ((d[x] = a.length), (b = -1 !== l.indexOf(x)) || (g += y), a.push({ v: y, label: x, color: m(u[r], x), i: r, pts: [r], hidden: b, })) : ((v = !0), ((i = a[_]).v += y), i.pts.push(r), i.hidden || (g += y), !1 === i.color && u[r] && (i.color = m(u[r], x))); } return ( (a = a.filter(function (t) { return t.v >= 0; })), ("funnelarea" === e.type ? v : e.sort) && a.sort(function (t, e) { return e.v - t.v; }), a[0] && (a[0].vTotal = g), a ); }, crossTraceCalc: function (t, e) { var r = (e || {}).type; r || (r = "pie"); var n = t._fullLayout, i = t.calcdata, a = n[r + "colorway"], s = n["_" + r + "colormap"]; n["extend" + r + "colors"] && (a = l(a, o)); for (var c = 0, u = 0; u < i.length; u++) { var f = i[u]; if (f[0].trace.type === r) for (var h = 0; h < f.length; h++) { var p = f[h]; !1 === p.color && (s[p.label] ? (p.color = s[p.label]) : ((s[p.label] = p.color = a[c % a.length]), c++)); } } }, makePullColorFn: s, generateExtendedColors: l, }; }, { "../../components/color": 367, "fast-isnumeric": 190, tinycolor2: 313, }, ], 913: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("./attributes"), o = t("../../plots/domain").defaults, s = t("../bar/defaults").handleText; function l(t, e) { var r = Array.isArray(t), a = i.isArrayOrTypedArray(e), o = Math.min(r ? t.length : 1 / 0, a ? e.length : 1 / 0); if ((isFinite(o) || (o = 0), o && a)) { for (var s, l = 0; l < o; l++) { var c = e[l]; if (n(c) && c > 0) { s = !0; break; } } s || (o = 0); } return { hasLabels: r, hasValues: a, len: o }; } e.exports = { handleLabelsAndValues: l, supplyDefaults: function (t, e, r, n) { function c(r, n) { return i.coerce(t, e, a, r, n); } var u = l(c("labels"), c("values")), f = u.len; if ( ((e._hasLabels = u.hasLabels), (e._hasValues = u.hasValues), !e._hasLabels && e._hasValues && (c("label0"), c("dlabel")), f) ) { (e._length = f), c("marker.line.width") && c("marker.line.color"), c("marker.colors"), c("scalegroup"); var h, p = c("text"), d = c("texttemplate"); if ( (d || (h = c( "textinfo", Array.isArray(p) ? "text+percent" : "percent", )), c("hovertext"), c("hovertemplate"), d || (h && "none" !== h)) ) { var m = c("textposition"); s(t, e, n, c, m, { moduleHasSelected: !1, moduleHasUnselected: !1, moduleHasConstrain: !1, moduleHasCliponaxis: !1, moduleHasTextangle: !1, moduleHasInsideanchor: !1, }), (Array.isArray(m) || "auto" === m || "outside" === m) && c("automargin"), ("inside" === m || "auto" === m || Array.isArray(m)) && c("insidetextorientation"); } o(e, n, c); var g = c("hole"); if (c("title.text")) { var v = c( "title.position", g ? "middle center" : "top center", ); g || "middle center" !== v || (e.title.position = "top center"), i.coerceFont(c, "title.font", n.font); } c("sort"), c("direction"), c("rotation"), c("pull"); } else e.visible = !1; }, }; }, { "../../lib": 515, "../../plots/domain": 593, "../bar/defaults": 661, "./attributes": 910, "fast-isnumeric": 190, }, ], 914: [ function (t, e, r) { "use strict"; var n = t( "../../components/fx/helpers", ).appendArrayMultiPointValues; e.exports = function (t, e) { var r = { curveNumber: e.index, pointNumbers: t.pts, data: e._input, fullData: e, label: t.label, color: t.color, value: t.v, percent: t.percent, text: t.text, bbox: t.bbox, v: t.v, }; return ( 1 === t.pts.length && (r.pointNumber = r.i = t.pts[0]), n(r, e, t.pts), "funnelarea" === e.type && (delete r.v, delete r.i), r ); }; }, { "../../components/fx/helpers": 403 }, ], 915: [ function (t, e, r) { "use strict"; var n = t("../../lib"); function i(t) { return -1 !== t.indexOf("e") ? t.replace(/[.]?0+e/, "e") : -1 !== t.indexOf(".") ? t.replace(/[.]?0+$/, "") : t; } (r.formatPiePercent = function (t, e) { var r = i((100 * t).toPrecision(3)); return n.numSeparate(r, e) + "%"; }), (r.formatPieValue = function (t, e) { var r = i(t.toPrecision(10)); return n.numSeparate(r, e); }), (r.getFirstFilled = function (t, e) { if (Array.isArray(t)) for (var r = 0; r < e.length; r++) { var n = t[e[r]]; if (n || 0 === n || "" === n) return n; } }), (r.castOption = function (t, e) { return Array.isArray(t) ? r.getFirstFilled(t, e) : t || void 0; }), (r.getRotationAngle = function (t) { return (("auto" === t ? 0 : t) * Math.PI) / 180; }); }, { "../../lib": 515 }, ], 916: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults").supplyDefaults, supplyLayoutDefaults: t("./layout_defaults"), layoutAttributes: t("./layout_attributes"), calc: t("./calc").calc, crossTraceCalc: t("./calc").crossTraceCalc, plot: t("./plot").plot, style: t("./style"), styleOne: t("./style_one"), moduleType: "trace", name: "pie", basePlotModule: t("./base_plot"), categories: ["pie-like", "pie", "showLegend"], meta: {}, }; }, { "./attributes": 910, "./base_plot": 911, "./calc": 912, "./defaults": 913, "./layout_attributes": 917, "./layout_defaults": 918, "./plot": 919, "./style": 920, "./style_one": 921, }, ], 917: [ function (t, e, r) { "use strict"; e.exports = { hiddenlabels: { valType: "data_array", editType: "calc" }, piecolorway: { valType: "colorlist", editType: "calc" }, extendpiecolors: { valType: "boolean", dflt: !0, editType: "calc", }, }; }, {}, ], 918: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"); e.exports = function (t, e) { function r(r, a) { return n.coerce(t, e, i, r, a); } r("hiddenlabels"), r("piecolorway", e.colorway), r("extendpiecolors"); }; }, { "../../lib": 515, "./layout_attributes": 917 }, ], 919: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../plots/plots"), a = t("../../components/fx"), o = t("../../components/color"), s = t("../../components/drawing"), l = t("../../lib"), c = l.strScale, u = l.strTranslate, f = t("../../lib/svg_text_utils"), h = t("../bar/uniform_text"), p = h.recordMinTextSize, d = h.clearMinTextSize, m = t("../bar/constants").TEXTPAD, g = t("./helpers"), v = t("./event_data"), y = t("../../lib").isValidTextValue; function x(t, e, r) { var i = r[0], o = i.cx, s = i.cy, c = i.trace, u = "funnelarea" === c.type; "_hasHoverLabel" in c || (c._hasHoverLabel = !1), "_hasHoverEvent" in c || (c._hasHoverEvent = !1), t.on("mouseover", function (t) { var r = e._fullLayout, f = e._fullData[c.index]; if (!e._dragging && !1 !== r.hovermode) { var h = f.hoverinfo; if ( (Array.isArray(h) && (h = a.castHoverinfo( { hoverinfo: [g.castOption(h, t.pts)], _module: c._module, }, r, 0, )), "all" === h && (h = "label+text+value+percent+name"), f.hovertemplate || ("none" !== h && "skip" !== h && h)) ) { var p = t.rInscribed || 0, d = o + t.pxmid[0] * (1 - p), m = s + t.pxmid[1] * (1 - p), y = r.separators, x = []; if ( (h && -1 !== h.indexOf("label") && x.push(t.label), (t.text = g.castOption( f.hovertext || f.text, t.pts, )), h && -1 !== h.indexOf("text")) ) { var b = t.text; l.isValidTextValue(b) && x.push(b); } (t.value = t.v), (t.valueLabel = g.formatPieValue(t.v, y)), h && -1 !== h.indexOf("value") && x.push(t.valueLabel), (t.percent = t.v / i.vTotal), (t.percentLabel = g.formatPiePercent( t.percent, y, )), h && -1 !== h.indexOf("percent") && x.push(t.percentLabel); var _ = f.hoverlabel, w = _.font, T = []; a.loneHover( { trace: c, x0: d - p * i.r, x1: d + p * i.r, y: m, _x0: u ? o + t.TL[0] : d - p * i.r, _x1: u ? o + t.TR[0] : d + p * i.r, _y0: u ? s + t.TL[1] : m - p * i.r, _y1: u ? s + t.BL[1] : m + p * i.r, text: x.join("
"), name: f.hovertemplate || -1 !== h.indexOf("name") ? f.name : void 0, idealAlign: t.pxmid[0] < 0 ? "left" : "right", color: g.castOption(_.bgcolor, t.pts) || t.color, borderColor: g.castOption(_.bordercolor, t.pts), fontFamily: g.castOption(w.family, t.pts), fontSize: g.castOption(w.size, t.pts), fontColor: g.castOption(w.color, t.pts), nameLength: g.castOption(_.namelength, t.pts), textAlign: g.castOption(_.align, t.pts), hovertemplate: g.castOption( f.hovertemplate, t.pts, ), hovertemplateLabels: t, eventData: [v(t, f)], }, { container: r._hoverlayer.node(), outerContainer: r._paper.node(), gd: e, inOut_bbox: T, }, ), (t.bbox = T[0]), (c._hasHoverLabel = !0); } (c._hasHoverEvent = !0), e.emit("plotly_hover", { points: [v(t, f)], event: n.event, }); } }), t.on("mouseout", function (t) { var r = e._fullLayout, i = e._fullData[c.index], o = n.select(this).datum(); c._hasHoverEvent && ((t.originalEvent = n.event), e.emit("plotly_unhover", { points: [v(o, i)], event: n.event, }), (c._hasHoverEvent = !1)), c._hasHoverLabel && (a.loneUnhover(r._hoverlayer.node()), (c._hasHoverLabel = !1)); }), t.on("click", function (t) { var r = e._fullLayout, i = e._fullData[c.index]; e._dragging || !1 === r.hovermode || ((e._hoverdata = [v(t, i)]), a.click(e, n.event)); }); } function b(t, e, r) { var n = g.castOption(t.insidetextfont.color, e.pts); !n && t._input.textfont && (n = g.castOption(t._input.textfont.color, e.pts)); var i = g.castOption(t.insidetextfont.family, e.pts) || g.castOption(t.textfont.family, e.pts) || r.family, a = g.castOption(t.insidetextfont.size, e.pts) || g.castOption(t.textfont.size, e.pts) || r.size; return { color: n || o.contrast(e.color), family: i, size: a, }; } function _(t, e) { for (var r, n, i = 0; i < t.length; i++) if ((n = (r = t[i][0]).trace).title.text) { var a = n.title.text; n._meta && (a = l.templateString(a, n._meta)); var o = s.tester .append("text") .attr("data-notex", 1) .text(a) .call(s.font, n.title.font) .call(f.convertToTspans, e), c = s.bBox(o.node(), !0); (r.titleBox = { width: c.width, height: c.height }), o.remove(); } } function w(t, e, r) { var n = r.r || e.rpx1, i = e.rInscribed; if (e.startangle === e.stopangle) return { rCenter: 1 - i, scale: 0, rotate: 0, textPosAngle: 0, }; var a, o = e.ring, s = 1 === o && Math.abs(e.startangle - e.stopangle) === 2 * Math.PI, l = e.halfangle, c = e.midangle, u = r.trace.insidetextorientation, f = "horizontal" === u, h = "tangential" === u, p = "radial" === u, d = "auto" === u, m = []; if (!d) { var g, v = function (r, i) { if ( (function (t, e) { var r = t.startangle, n = t.stopangle; return (r > e && e > n) || (r < e && e < n); })(e, r) ) { var s = Math.abs(r - e.startangle), l = Math.abs(r - e.stopangle), c = s < l ? s : l; ((a = "tan" === i ? k(t, n, o, c, 0) : T(t, n, o, c, Math.PI / 2)).textPosAngle = r), m.push(a); } }; if (f || h) { for (g = 4; g >= -4; g -= 2) v(Math.PI * g, "tan"); for (g = 4; g >= -4; g -= 2) v(Math.PI * (g + 1), "tan"); } if (f || p) { for (g = 4; g >= -4; g -= 2) v(Math.PI * (g + 1.5), "rad"); for (g = 4; g >= -4; g -= 2) v(Math.PI * (g + 0.5), "rad"); } } if (s || d || f) { var y = Math.sqrt( t.width * t.width + t.height * t.height, ); if ( (((a = { scale: (i * n * 2) / y, rCenter: 1 - i, rotate: 0, }).textPosAngle = (e.startangle + e.stopangle) / 2), a.scale >= 1) ) return a; m.push(a); } (d || p) && (((a = T(t, n, o, l, c)).textPosAngle = (e.startangle + e.stopangle) / 2), m.push(a)), (d || h) && (((a = k(t, n, o, l, c)).textPosAngle = (e.startangle + e.stopangle) / 2), m.push(a)); for (var x = 0, b = 0, _ = 0; _ < m.length; _++) { var w = m[_].scale; if ((b < w && ((b = w), (x = _)), !d && b >= 1)) break; } return m[x]; } function T(t, e, r, n, i) { e = Math.max(0, e - 2 * m); var a = t.width / t.height, o = S(a, n, e, r); return { scale: (2 * o) / t.height, rCenter: A(a, o / e), rotate: M(i), }; } function k(t, e, r, n, i) { e = Math.max(0, e - 2 * m); var a = t.height / t.width, o = S(a, n, e, r); return { scale: (2 * o) / t.width, rCenter: A(a, o / e), rotate: M(i + Math.PI / 2), }; } function A(t, e) { return Math.cos(e) - t * e; } function M(t) { return (((180 / Math.PI) * t + 720) % 180) - 90; } function S(t, e, r, n) { var i = t + 1 / (2 * Math.tan(e)); return ( r * Math.min( 1 / (Math.sqrt(i * i + 0.5) + i), n / (Math.sqrt(t * t + n / 2) + t), ) ); } function E(t, e) { return t.v !== e.vTotal || e.trace.hole ? Math.min( 1 / (1 + 1 / Math.sin(t.halfangle)), t.ring / 2, ) : 1; } function L(t, e) { var r = e.pxmid[0], n = e.pxmid[1], i = t.width / 2, a = t.height / 2; return ( r < 0 && (i *= -1), n < 0 && (a *= -1), { scale: 1, rCenter: 1, rotate: 0, x: i + (Math.abs(a) * (i > 0 ? 1 : -1)) / 2, y: a / (1 + (r * r) / (n * n)), outside: !0, } ); } function C(t, e) { var r, n, i, a = t.trace, o = { x: t.cx, y: t.cy }, s = { tx: 0, ty: 0 }; (s.ty += a.title.font.size), (i = I(a)), -1 !== a.title.position.indexOf("top") ? ((o.y -= (1 + i) * t.r), (s.ty -= t.titleBox.height)) : -1 !== a.title.position.indexOf("bottom") && (o.y += (1 + i) * t.r); var l, c, u = ((l = t.r), (c = t.trace.aspectratio), l / (void 0 === c ? 1 : c)), f = (e.w * (a.domain.x[1] - a.domain.x[0])) / 2; return ( -1 !== a.title.position.indexOf("left") ? ((f += u), (o.x -= (1 + i) * u), (s.tx += t.titleBox.width / 2)) : -1 !== a.title.position.indexOf("center") ? (f *= 2) : -1 !== a.title.position.indexOf("right") && ((f += u), (o.x += (1 + i) * u), (s.tx -= t.titleBox.width / 2)), (r = f / t.titleBox.width), (n = P(t, e) / t.titleBox.height), { x: o.x, y: o.y, scale: Math.min(r, n), tx: s.tx, ty: s.ty, } ); } function P(t, e) { var r = t.trace, n = e.h * (r.domain.y[1] - r.domain.y[0]); return Math.min(t.titleBox.height, n / 2); } function I(t) { var e, r = t.pull; if (!r) return 0; if (Array.isArray(r)) for (r = 0, e = 0; e < t.pull.length; e++) t.pull[e] > r && (r = t.pull[e]); return r; } function O(t, e) { for (var r = [], n = 0; n < t.length; n++) { var i = t[n][0], a = i.trace, o = a.domain, s = e.w * (o.x[1] - o.x[0]), l = e.h * (o.y[1] - o.y[0]); a.title.text && "middle center" !== a.title.position && (l -= P(i, e)); var c = s / 2, u = l / 2; "funnelarea" !== a.type || a.scalegroup || (u /= a.aspectratio), (i.r = Math.min(c, u) / (1 + I(a))), (i.cx = e.l + (e.w * (a.domain.x[1] + a.domain.x[0])) / 2), (i.cy = e.t + e.h * (1 - a.domain.y[0]) - l / 2), a.title.text && -1 !== a.title.position.indexOf("bottom") && (i.cy -= P(i, e)), a.scalegroup && -1 === r.indexOf(a.scalegroup) && r.push(a.scalegroup); } !(function (t, e) { for (var r, n, i, a = 0; a < e.length; a++) { var o = 1 / 0, s = e[a]; for (n = 0; n < t.length; n++) if (((r = t[n][0]), (i = r.trace).scalegroup === s)) { var l; if ("pie" === i.type) l = r.r * r.r; else if ("funnelarea" === i.type) { var c, u; i.aspectratio > 1 ? ((c = r.r), (u = c / i.aspectratio)) : ((u = r.r), (c = u * i.aspectratio)), (c *= (1 + i.baseratio) / 2), (l = c * u); } o = Math.min(o, l / r.vTotal); } for (n = 0; n < t.length; n++) if (((r = t[n][0]), (i = r.trace).scalegroup === s)) { var f = o * r.vTotal; "funnelarea" === i.type && ((f /= (1 + i.baseratio) / 2), (f /= i.aspectratio)), (r.r = Math.sqrt(f)); } } })(t, r); } function z(t, e) { return [t * Math.sin(e), -t * Math.cos(e)]; } function D(t, e, r) { var n = t._fullLayout, i = r.trace, a = i.texttemplate, o = i.textinfo; if (!a && o && "none" !== o) { var s, c = o.split("+"), u = function (t) { return -1 !== c.indexOf(t); }, f = u("label"), h = u("text"), p = u("value"), d = u("percent"), m = n.separators; if (((s = f ? [e.label] : []), h)) { var v = g.getFirstFilled(i.text, e.pts); y(v) && s.push(v); } p && s.push(g.formatPieValue(e.v, m)), d && s.push(g.formatPiePercent(e.v / r.vTotal, m)), (e.text = s.join("
")); } if (a) { var x = l.castOption(i, e.i, "texttemplate"); if (x) { var b = (function (t) { return { label: t.label, value: t.v, valueLabel: g.formatPieValue(t.v, n.separators), percent: t.v / r.vTotal, percentLabel: g.formatPiePercent( t.v / r.vTotal, n.separators, ), color: t.color, text: t.text, customdata: l.castOption(i, t.i, "customdata"), }; })(e), _ = g.getFirstFilled(i.text, e.pts); (y(_) || "" === _) && (b.text = _), (e.text = l.texttemplateString( x, b, t._fullLayout._d3locale, b, i._meta || {}, )); } else e.text = ""; } } function R(t, e) { var r = (t.rotate * Math.PI) / 180, n = Math.cos(r), i = Math.sin(r), a = (e.left + e.right) / 2, o = (e.top + e.bottom) / 2; (t.textX = a * n - o * i), (t.textY = a * i + o * n), (t.noCenter = !0); } e.exports = { plot: function (t, e) { var r = t._context.staticPlot, a = t._fullLayout, h = a._size; d("pie", a), _(e, t), O(e, h); var m = l .makeTraceGroups(a._pielayer, e, "trace") .each(function (e) { var d = n.select(this), m = e[0], v = m.trace; !(function (t) { var e, r, n, i = t[0], a = i.r, o = i.trace, s = g.getRotationAngle(o.rotation), l = (2 * Math.PI) / i.vTotal, c = "px0", u = "px1"; if ("counterclockwise" === o.direction) { for (e = 0; e < t.length && t[e].hidden; e++); if (e === t.length) return; (s += l * t[e].v), (l *= -1), (c = "px1"), (u = "px0"); } for (n = z(a, s), e = 0; e < t.length; e++) (r = t[e]).hidden || ((r[c] = n), (r.startangle = s), (s += (l * r.v) / 2), (r.pxmid = z(a, s)), (r.midangle = s), (s += (l * r.v) / 2), (n = z(a, s)), (r.stopangle = s), (r[u] = n), (r.largeArc = r.v > i.vTotal / 2 ? 1 : 0), (r.halfangle = Math.PI * Math.min(r.v / i.vTotal, 0.5)), (r.ring = 1 - o.hole), (r.rInscribed = E(r, i))); })(e), d.attr("stroke-linejoin", "round"), d.each(function () { var y = n .select(this) .selectAll("g.slice") .data(e); y.enter().append("g").classed("slice", !0), y.exit().remove(); var _ = [ [[], []], [[], []], ], T = !1; y.each(function (i, o) { if (i.hidden) n.select(this).selectAll("path,g").remove(); else { (i.pointNumber = i.i), (i.curveNumber = v.index), _[i.pxmid[1] < 0 ? 0 : 1][ i.pxmid[0] < 0 ? 0 : 1 ].push(i); var c = m.cx, u = m.cy, h = n.select(this), d = h.selectAll("path.surface").data([i]); if ( (d .enter() .append("path") .classed("surface", !0) .style({ "pointer-events": r ? "none" : "all", }), h.call(x, t, e), v.pull) ) { var y = +g.castOption(v.pull, i.pts) || 0; y > 0 && ((c += y * i.pxmid[0]), (u += y * i.pxmid[1])); } (i.cxFinal = c), (i.cyFinal = u); var k = v.hole; if (i.v === m.vTotal) { var A = "M" + (c + i.px0[0]) + "," + (u + i.px0[1]) + P(i.px0, i.pxmid, !0, 1) + P(i.pxmid, i.px0, !0, 1) + "Z"; k ? d.attr( "d", "M" + (c + k * i.px0[0]) + "," + (u + k * i.px0[1]) + P(i.px0, i.pxmid, !1, k) + P(i.pxmid, i.px0, !1, k) + "Z" + A, ) : d.attr("d", A); } else { var M = P(i.px0, i.px1, !0, 1); if (k) { var S = 1 - k; d.attr( "d", "M" + (c + k * i.px1[0]) + "," + (u + k * i.px1[1]) + P(i.px1, i.px0, !1, k) + "l" + S * i.px0[0] + "," + S * i.px0[1] + M + "Z", ); } else d.attr( "d", "M" + c + "," + u + "l" + i.px0[0] + "," + i.px0[1] + M + "Z", ); } D(t, i, m); var E = g.castOption(v.textposition, i.pts), C = h .selectAll("g.slicetext") .data(i.text && "none" !== E ? [0] : []); C.enter() .append("g") .classed("slicetext", !0), C.exit().remove(), C.each(function () { var r = l.ensureSingle( n.select(this), "text", "", function (t) { t.attr("data-notex", 1); }, ), h = l.ensureUniformFontSize( t, "outside" === E ? (function (t, e, r) { var n = g.castOption( t.outsidetextfont.color, e.pts, ) || g.castOption( t.textfont.color, e.pts, ) || r.color, i = g.castOption( t.outsidetextfont.family, e.pts, ) || g.castOption( t.textfont.family, e.pts, ) || r.family, a = g.castOption( t.outsidetextfont.size, e.pts, ) || g.castOption( t.textfont.size, e.pts, ) || r.size; return { color: n, family: i, size: a, }; })(v, i, a.font) : b(v, i, a.font), ); r.text(i.text) .attr({ class: "slicetext", transform: "", "text-anchor": "middle", }) .call(s.font, h) .call(f.convertToTspans, t); var d, y = s.bBox(r.node()); if ("outside" === E) d = L(y, i); else if ( ((d = w(y, i, m)), "auto" === E && d.scale < 1) ) { var x = l.ensureUniformFontSize( t, v.outsidetextfont, ); r.call(s.font, x), (d = L((y = s.bBox(r.node())), i)); } var _ = d.textPosAngle, k = void 0 === _ ? i.pxmid : z(m.r, _); if ( ((d.targetX = c + k[0] * d.rCenter + (d.x || 0)), (d.targetY = u + k[1] * d.rCenter + (d.y || 0)), R(d, y), d.outside) ) { var A = d.targetY; (i.yLabelMin = A - y.height / 2), (i.yLabelMid = A), (i.yLabelMax = A + y.height / 2), (i.labelExtraX = 0), (i.labelExtraY = 0), (T = !0); } (d.fontSize = h.size), p(v.type, d, a), (e[o].transform = d), l.setTransormAndDisplay(r, d); }); } function P(t, e, r, n) { var a = n * (e[0] - t[0]), o = n * (e[1] - t[1]); return ( "a" + n * m.r + "," + n * m.r + " 0 " + i.largeArc + (r ? " 1 " : " 0 ") + a + "," + o ); } }); var k = n .select(this) .selectAll("g.titletext") .data(v.title.text ? [0] : []); if ( (k.enter().append("g").classed("titletext", !0), k.exit().remove(), k.each(function () { var e, r = l.ensureSingle( n.select(this), "text", "", function (t) { t.attr("data-notex", 1); }, ), i = v.title.text; v._meta && (i = l.templateString(i, v._meta)), r .text(i) .attr({ class: "titletext", transform: "", "text-anchor": "middle", }) .call(s.font, v.title.font) .call(f.convertToTspans, t), (e = "middle center" === v.title.position ? (function (t) { var e = Math.sqrt( t.titleBox.width * t.titleBox.width + t.titleBox.height * t.titleBox.height, ); return { x: t.cx, y: t.cy, scale: (t.trace.hole * t.r * 2) / e, tx: 0, ty: -t.titleBox.height / 2 + t.trace.title.font.size, }; })(m) : C(m, h)), r.attr( "transform", u(e.x, e.y) + c(Math.min(1, e.scale)) + u(e.tx, e.ty), ); }), T && (function (t, e) { var r, n, i, a, o, s, l, c, u, f, h, p, d; function m(t, e) { return t.pxmid[1] - e.pxmid[1]; } function v(t, e) { return e.pxmid[1] - t.pxmid[1]; } function y(t, r) { r || (r = {}); var i, c, u, h, p = r.labelExtraY + (n ? r.yLabelMax : r.yLabelMin), d = n ? t.yLabelMin : t.yLabelMax, m = n ? t.yLabelMax : t.yLabelMin, v = t.cyFinal + o(t.px0[1], t.px1[1]), y = p - d; if ( (y * l > 0 && (t.labelExtraY = y), Array.isArray(e.pull)) ) for (c = 0; c < f.length; c++) (u = f[c]) === t || (g.castOption(e.pull, t.pts) || 0) >= (g.castOption(e.pull, u.pts) || 0) || ((t.pxmid[1] - u.pxmid[1]) * l > 0 ? (y = u.cyFinal + o(u.px0[1], u.px1[1]) - d - t.labelExtraY) * l > 0 && (t.labelExtraY += y) : (m + t.labelExtraY - v) * l > 0 && ((i = 3 * s * Math.abs(c - f.indexOf(t))), (h = u.cxFinal + a(u.px0[0], u.px1[0]) + i - (t.cxFinal + t.pxmid[0]) - t.labelExtraX) * s > 0 && (t.labelExtraX += h))); } for (n = 0; n < 2; n++) for ( i = n ? m : v, o = n ? Math.max : Math.min, l = n ? 1 : -1, r = 0; r < 2; r++ ) { for ( a = r ? Math.max : Math.min, s = r ? 1 : -1, (c = t[n][r]).sort(i), u = t[1 - n][r], f = u.concat(c), p = [], h = 0; h < c.length; h++ ) void 0 !== c[h].yLabelMid && p.push(c[h]); for ( d = !1, h = 0; n && h < u.length; h++ ) if (void 0 !== u[h].yLabelMid) { d = u[h]; break; } for (h = 0; h < p.length; h++) { var x = h && p[h - 1]; d && !h && (x = d), y(p[h], x); } } })(_, v), (function (t, e) { t.each(function (t) { var r = n.select(this); if (t.labelExtraX || t.labelExtraY) { var i = r.select("g.slicetext text"); (t.transform.targetX += t.labelExtraX), (t.transform.targetY += t.labelExtraY), l.setTransormAndDisplay(i, t.transform); var a = t.cxFinal + t.pxmid[0], s = "M" + a + "," + (t.cyFinal + t.pxmid[1]), c = ((t.yLabelMax - t.yLabelMin) * (t.pxmid[0] < 0 ? -1 : 1)) / 4; if (t.labelExtraX) { var u = (t.labelExtraX * t.pxmid[1]) / t.pxmid[0], f = t.yLabelMid + t.labelExtraY - (t.cyFinal + t.pxmid[1]); Math.abs(u) > Math.abs(f) ? (s += "l" + (f * t.pxmid[0]) / t.pxmid[1] + "," + f + "H" + (a + t.labelExtraX + c)) : (s += "l" + t.labelExtraX + "," + u + "v" + (f - u) + "h" + c); } else s += "V" + (t.yLabelMid + t.labelExtraY) + "h" + c; l.ensureSingle(r, "path", "textline") .call(o.stroke, e.outsidetextfont.color) .attr({ "stroke-width": Math.min( 2, e.outsidetextfont.size / 8, ), d: s, fill: "none", }); } else r.select("path.textline").remove(); }); })(y, v), T && v.automargin) ) { var A = s.bBox(d.node()), M = v.domain, S = h.w * (M.x[1] - M.x[0]), E = h.h * (M.y[1] - M.y[0]), P = (0.5 * S - m.r) / h.w, I = (0.5 * E - m.r) / h.h; i.autoMargin( t, "pie." + v.uid + ".automargin", { xl: M.x[0] - P, xr: M.x[1] + P, yb: M.y[0] - I, yt: M.y[1] + I, l: Math.max(m.cx - m.r - A.left, 0), r: Math.max(A.right - (m.cx + m.r), 0), b: Math.max(A.bottom - (m.cy + m.r), 0), t: Math.max(m.cy - m.r - A.top, 0), pad: 5, }, ); } }); }); setTimeout(function () { m.selectAll("tspan").each(function () { var t = n.select(this); t.attr("dy") && t.attr("dy", t.attr("dy")); }); }, 0); }, formatSliceLabel: D, transformInsideText: w, determineInsideTextFont: b, positionTitleOutside: C, prerenderTitles: _, layoutAreas: O, attachFxHandlers: x, computeTransform: R, }; }, { "../../components/color": 367, "../../components/drawing": 389, "../../components/fx": 407, "../../lib": 515, "../../lib/svg_text_utils": 541, "../../plots/plots": 628, "../bar/constants": 659, "../bar/uniform_text": 673, "./event_data": 914, "./helpers": 915, "@plotly/d3": 58, }, ], 920: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("./style_one"), a = t("../bar/uniform_text").resizeText; e.exports = function (t) { var e = t._fullLayout._pielayer.selectAll(".trace"); a(t, e, "pie"), e.each(function (t) { var e = t[0].trace, r = n.select(this); r.style({ opacity: e.opacity }), r.selectAll("path.surface").each(function (t) { n.select(this).call(i, t, e); }); }); }; }, { "../bar/uniform_text": 673, "./style_one": 921, "@plotly/d3": 58, }, ], 921: [ function (t, e, r) { "use strict"; var n = t("../../components/color"), i = t("./helpers").castOption; e.exports = function (t, e, r) { var a = r.marker.line, o = i(a.color, e.pts) || n.defaultLine, s = i(a.width, e.pts) || 0; t.style("stroke-width", s) .call(n.fill, e.color) .call(n.stroke, o); }; }, { "../../components/color": 367, "./helpers": 915 }, ], 922: [ function (t, e, r) { "use strict"; var n = t("../scatter/attributes"); e.exports = { x: n.x, y: n.y, xy: { valType: "data_array", editType: "calc" }, indices: { valType: "data_array", editType: "calc" }, xbounds: { valType: "data_array", editType: "calc" }, ybounds: { valType: "data_array", editType: "calc" }, text: n.text, marker: { color: { valType: "color", arrayOk: !1, editType: "calc", }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, arrayOk: !1, editType: "calc", }, blend: { valType: "boolean", dflt: null, editType: "calc", }, sizemin: { valType: "number", min: 0.1, max: 2, dflt: 0.5, editType: "calc", }, sizemax: { valType: "number", min: 0.1, dflt: 20, editType: "calc", }, border: { color: { valType: "color", arrayOk: !1, editType: "calc", }, arearatio: { valType: "number", min: 0, max: 1, dflt: 0, editType: "calc", }, editType: "calc", }, editType: "calc", }, transforms: void 0, }; }, { "../scatter/attributes": 936 }, ], 923: [ function (t, e, r) { "use strict"; var n = t("../../../stackgl_modules").gl_pointcloud2d, i = t("../../lib/str2rgbarray"), a = t("../../plots/cartesian/autorange").findExtremes, o = t("../scatter/get_trace_color"); function s(t, e) { (this.scene = t), (this.uid = e), (this.type = "pointcloud"), (this.pickXData = []), (this.pickYData = []), (this.xData = []), (this.yData = []), (this.textLabels = []), (this.color = "rgb(0, 0, 0)"), (this.name = ""), (this.hoverinfo = "all"), (this.idToIndex = new Int32Array(0)), (this.bounds = [0, 0, 0, 0]), (this.pointcloudOptions = { positions: new Float32Array(0), idToIndex: this.idToIndex, sizemin: 0.5, sizemax: 12, color: [0, 0, 0, 1], areaRatio: 1, borderColor: [0, 0, 0, 1], }), (this.pointcloud = n(t.glplot, this.pointcloudOptions)), (this.pointcloud._trace = this); } var l = s.prototype; (l.handlePick = function (t) { var e = this.idToIndex[t.pointId]; return { trace: this, dataCoord: t.dataCoord, traceCoord: this.pickXYData ? [this.pickXYData[2 * e], this.pickXYData[2 * e + 1]] : [this.pickXData[e], this.pickYData[e]], textLabel: Array.isArray(this.textLabels) ? this.textLabels[e] : this.textLabels, color: this.color, name: this.name, pointIndex: e, hoverinfo: this.hoverinfo, }; }), (l.update = function (t) { (this.index = t.index), (this.textLabels = t.text), (this.name = t.name), (this.hoverinfo = t.hoverinfo), (this.bounds = [1 / 0, 1 / 0, -1 / 0, -1 / 0]), this.updateFast(t), (this.color = o(t, {})); }), (l.updateFast = function (t) { var e, r, n, o, s, l, c = (this.xData = this.pickXData = t.x), u = (this.yData = this.pickYData = t.y), f = (this.pickXYData = t.xy), h = t.xbounds && t.ybounds, p = t.indices, d = this.bounds; if (f) { if (((n = f), (e = f.length >>> 1), h)) (d[0] = t.xbounds[0]), (d[2] = t.xbounds[1]), (d[1] = t.ybounds[0]), (d[3] = t.ybounds[1]); else for (l = 0; l < e; l++) (o = n[2 * l]), (s = n[2 * l + 1]), o < d[0] && (d[0] = o), o > d[2] && (d[2] = o), s < d[1] && (d[1] = s), s > d[3] && (d[3] = s); if (p) r = p; else for (r = new Int32Array(e), l = 0; l < e; l++) r[l] = l; } else for ( e = c.length, n = new Float32Array(2 * e), r = new Int32Array(e), l = 0; l < e; l++ ) (o = c[l]), (s = u[l]), (r[l] = l), (n[2 * l] = o), (n[2 * l + 1] = s), o < d[0] && (d[0] = o), o > d[2] && (d[2] = o), s < d[1] && (d[1] = s), s > d[3] && (d[3] = s); (this.idToIndex = r), (this.pointcloudOptions.idToIndex = r), (this.pointcloudOptions.positions = n); var m = i(t.marker.color), g = i(t.marker.border.color), v = t.opacity * t.marker.opacity; (m[3] *= v), (this.pointcloudOptions.color = m); var y = t.marker.blend; if (null === y) { y = c.length < 100 || u.length < 100; } (this.pointcloudOptions.blend = y), (g[3] *= v), (this.pointcloudOptions.borderColor = g); var x = t.marker.sizemin, b = Math.max(t.marker.sizemax, t.marker.sizemin); (this.pointcloudOptions.sizeMin = x), (this.pointcloudOptions.sizeMax = b), (this.pointcloudOptions.areaRatio = t.marker.border.arearatio), this.pointcloud.update(this.pointcloudOptions); var _ = this.scene.xaxis, w = this.scene.yaxis, T = b / 2 || 0.5; (t._extremes[_._id] = a(_, [d[0], d[2]], { ppad: T })), (t._extremes[w._id] = a(w, [d[1], d[3]], { ppad: T })); }), (l.dispose = function () { this.pointcloud.dispose(); }), (e.exports = function (t, e) { var r = new s(t, e.uid); return r.update(e), r; }); }, { "../../../stackgl_modules": 1133, "../../lib/str2rgbarray": 540, "../../plots/cartesian/autorange": 565, "../scatter/get_trace_color": 946, }, ], 924: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"); e.exports = function (t, e, r) { function a(r, a) { return n.coerce(t, e, i, r, a); } a("x"), a("y"), a("xbounds"), a("ybounds"), t.xy && t.xy instanceof Float32Array && (e.xy = t.xy), t.indices && t.indices instanceof Int32Array && (e.indices = t.indices), a("text"), a("marker.color", r), a("marker.opacity"), a("marker.blend"), a("marker.sizemin"), a("marker.sizemax"), a("marker.border.color", r), a("marker.border.arearatio"), (e._length = null); }; }, { "../../lib": 515, "./attributes": 922 }, ], 925: [ function (t, e, r) { "use strict"; [ "*pointcloud* trace is deprecated!", "Please consider switching to the *scattergl* trace type.", ].join(" "); e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("../scatter3d/calc"), plot: t("./convert"), moduleType: "trace", name: "pointcloud", basePlotModule: t("../../plots/gl2d"), categories: ["gl", "gl2d", "showLegend"], meta: {}, }; }, { "../../plots/gl2d": 605, "../scatter3d/calc": 965, "./attributes": 922, "./convert": 923, "./defaults": 924, }, ], 926: [ function (t, e, r) { "use strict"; var n = t("../../plots/font_attributes"), i = t("../../plots/attributes"), a = t("../../components/color/attributes"), o = t("../../components/fx/attributes"), s = t("../../plots/domain").attributes, l = t("../../plots/template_attributes").hovertemplateAttrs, c = t("../../components/colorscale/attributes"), u = t("../../plot_api/plot_template").templatedArray, f = t( "../../plots/cartesian/axis_format_attributes", ).descriptionOnlyNumbers, h = t("../../lib/extend").extendFlat, p = t("../../plot_api/edit_types").overrideAll; (e.exports = p( { hoverinfo: h({}, i.hoverinfo, { flags: [], arrayOk: !1 }), hoverlabel: o.hoverlabel, domain: s({ name: "sankey", trace: !0 }), orientation: { valType: "enumerated", values: ["v", "h"], dflt: "h", }, valueformat: { valType: "string", dflt: ".3s", description: f("value"), }, valuesuffix: { valType: "string", dflt: "" }, arrangement: { valType: "enumerated", values: ["snap", "perpendicular", "freeform", "fixed"], dflt: "snap", }, textfont: n({}), customdata: void 0, node: { label: { valType: "data_array", dflt: [] }, groups: { valType: "info_array", impliedEdits: { x: [], y: [] }, dimensions: 2, freeLength: !0, dflt: [], items: { valType: "number", editType: "calc" }, }, x: { valType: "data_array", dflt: [] }, y: { valType: "data_array", dflt: [] }, color: { valType: "color", arrayOk: !0 }, customdata: { valType: "data_array", editType: "calc" }, line: { color: { valType: "color", dflt: a.defaultLine, arrayOk: !0, }, width: { valType: "number", min: 0, dflt: 0.5, arrayOk: !0, }, }, pad: { valType: "number", arrayOk: !1, min: 0, dflt: 20, }, thickness: { valType: "number", arrayOk: !1, min: 1, dflt: 20, }, hoverinfo: { valType: "enumerated", values: ["all", "none", "skip"], dflt: "all", }, hoverlabel: o.hoverlabel, hovertemplate: l({}, { keys: ["value", "label"] }), }, link: { arrowlen: { valType: "number", min: 0, dflt: 0 }, label: { valType: "data_array", dflt: [] }, color: { valType: "color", arrayOk: !0 }, customdata: { valType: "data_array", editType: "calc" }, line: { color: { valType: "color", dflt: a.defaultLine, arrayOk: !0, }, width: { valType: "number", min: 0, dflt: 0, arrayOk: !0, }, }, source: { valType: "data_array", dflt: [] }, target: { valType: "data_array", dflt: [] }, value: { valType: "data_array", dflt: [] }, hoverinfo: { valType: "enumerated", values: ["all", "none", "skip"], dflt: "all", }, hoverlabel: o.hoverlabel, hovertemplate: l({}, { keys: ["value", "label"] }), colorscales: u("concentrationscales", { editType: "calc", label: { valType: "string", editType: "calc", dflt: "", }, cmax: { valType: "number", editType: "calc", dflt: 1, }, cmin: { valType: "number", editType: "calc", dflt: 0, }, colorscale: h(c().colorscale, { dflt: [ [0, "white"], [1, "black"], ], }), }), }, }, "calc", "nested", )).transforms = void 0; }, { "../../components/color/attributes": 366, "../../components/colorscale/attributes": 374, "../../components/fx/attributes": 398, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plot_api/plot_template": 555, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/domain": 593, "../../plots/font_attributes": 594, "../../plots/template_attributes": 642, }, ], 927: [ function (t, e, r) { "use strict"; var n = t("../../plot_api/edit_types").overrideAll, i = t("../../plots/get_data").getModuleCalcData, a = t("./plot"), o = t("../../components/fx/layout_attributes"), s = t("../../lib/setcursor"), l = t("../../components/dragelement"), c = t("../../components/selections").prepSelect, u = t("../../lib"), f = t("../../registry"); function h(t, e) { var r = t._fullData[e], n = t._fullLayout, i = n.dragmode, a = "pan" === n.dragmode ? "move" : "crosshair", o = r._bgRect; if (o && "pan" !== i && "zoom" !== i) { s(o, a); var h = { _id: "x", c2p: u.identity, _offset: r._sankey.translateX, _length: r._sankey.width, }, p = { _id: "y", c2p: u.identity, _offset: r._sankey.translateY, _length: r._sankey.height, }, d = { gd: t, element: o.node(), plotinfo: { id: e, xaxis: h, yaxis: p, fillRangeItems: u.noop, }, subplot: e, xaxes: [h], yaxes: [p], doneFnCompleted: function (r) { var n, i = t._fullData[e], a = i.node.groups.slice(), o = []; function s(t) { for ( var e = i._sankey.graph.nodes, r = 0; r < e.length; r++ ) if (e[r].pointNumber === t) return e[r]; } for (var l = 0; l < r.length; l++) { var c = s(r[l].pointNumber); if (c) if (c.group) { for ( var u = 0; u < c.childrenNodes.length; u++ ) o.push(c.childrenNodes[u].pointNumber); a[c.pointNumber - i.node._count] = !1; } else o.push(c.pointNumber); } (n = a.filter(Boolean).concat([o])), f.call( "_guiRestyle", t, { "node.groups": [n] }, e, ); }, prepFn: function (t, e, r) { c(t, e, r, d, i); }, }; l.init(d); } } (r.name = "sankey"), (r.baseLayoutAttrOverrides = n( { hoverlabel: o.hoverlabel }, "plot", "nested", )), (r.plot = function (t) { var e = i(t.calcdata, "sankey")[0]; a(t, e), r.updateFx(t); }), (r.clean = function (t, e, r, n) { var i = n._has && n._has("sankey"), a = e._has && e._has("sankey"); i && !a && (n._paperdiv.selectAll(".sankey").remove(), n._paperdiv.selectAll(".bgsankey").remove()); }), (r.updateFx = function (t) { for (var e = 0; e < t._fullData.length; e++) h(t, e); }); }, { "../../components/dragelement": 386, "../../components/fx/layout_attributes": 408, "../../components/selections": 455, "../../lib": 515, "../../lib/setcursor": 536, "../../plot_api/edit_types": 548, "../../plots/get_data": 602, "../../registry": 647, "./plot": 932, }, ], 928: [ function (t, e, r) { "use strict"; var n = t("strongly-connected-components"), i = t("../../lib"), a = t("../../lib/gup").wrap, o = i.isArrayOrTypedArray, s = i.isIndex, l = t("../../components/colorscale"); function c(t) { var e, r = t.node, a = t.link, c = [], u = o(a.color), f = o(a.customdata), h = {}, p = {}, d = a.colorscales.length; for (e = 0; e < d; e++) { var m = a.colorscales[e], g = l.extractScale(m, { cLetter: "c" }), v = l.makeColorScaleFunc(g); p[m.label] = v; } var y = 0; for (e = 0; e < a.value.length; e++) a.source[e] > y && (y = a.source[e]), a.target[e] > y && (y = a.target[e]); var x, b = y + 1; t.node._count = b; var _ = t.node.groups, w = {}; for (e = 0; e < _.length; e++) { var T = _[e]; for (x = 0; x < T.length; x++) { var k = T[x], A = b + e; w.hasOwnProperty(k) ? i.warn("Node " + k + " is already part of a group.") : (w[k] = A); } } var M = { source: [], target: [] }; for (e = 0; e < a.value.length; e++) { var S = a.value[e], E = a.source[e], L = a.target[e]; if ( S > 0 && s(E, b) && s(L, b) && (!w.hasOwnProperty(E) || !w.hasOwnProperty(L) || w[E] !== w[L]) ) { w.hasOwnProperty(L) && (L = w[L]), w.hasOwnProperty(E) && (E = w[E]), (L = +L), (h[(E = +E)] = h[L] = !0); var C = ""; a.label && a.label[e] && (C = a.label[e]); var P = null; C && p.hasOwnProperty(C) && (P = p[C]), c.push({ pointNumber: e, label: C, color: u ? a.color[e] : a.color, customdata: f ? a.customdata[e] : a.customdata, concentrationscale: P, source: E, target: L, value: +S, }), M.source.push(E), M.target.push(L); } } var I = b + _.length, O = o(r.color), z = o(r.customdata), D = []; for (e = 0; e < I; e++) if (h[e]) { var R = r.label[e]; D.push({ group: e > b - 1, childrenNodes: [], pointNumber: e, label: R, color: O ? r.color[e] : r.color, customdata: z ? r.customdata[e] : r.customdata, }); } var F = !1; return ( (function (t, e, r) { for ( var a = i.init2dArray(t, 0), o = 0; o < Math.min(e.length, r.length); o++ ) if (i.isIndex(e[o], t) && i.isIndex(r[o], t)) { if (e[o] === r[o]) return !0; a[e[o]].push(r[o]); } return n(a).components.some(function (t) { return t.length > 1; }); })(I, M.source, M.target) && (F = !0), { circular: F, links: c, nodes: D, groups: _, groupLookup: w, } ); } e.exports = function (t, e) { var r = c(e); return a({ circular: r.circular, _nodes: r.nodes, _links: r.links, _groups: r.groups, _groupLookup: r.groupLookup, }); }; }, { "../../components/colorscale": 379, "../../lib": 515, "../../lib/gup": 512, "strongly-connected-components": 307, }, ], 929: [ function (t, e, r) { "use strict"; e.exports = { nodeTextOffsetHorizontal: 4, nodeTextOffsetVertical: 3, nodePadAcross: 10, sankeyIterations: 50, forceIterations: 5, forceTicksPerFrame: 10, duration: 500, ease: "linear", cn: { sankey: "sankey", sankeyLinks: "sankey-links", sankeyLink: "sankey-link", sankeyNodeSet: "sankey-node-set", sankeyNode: "sankey-node", nodeRect: "node-rect", nodeLabel: "node-label", }, }; }, {}, ], 930: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("../../components/color"), o = t("tinycolor2"), s = t("../../plots/domain").defaults, l = t("../../components/fx/hoverlabel_defaults"), c = t("../../plot_api/plot_template"), u = t("../../plots/array_container_defaults"); function f(t, e) { function r(r, a) { return n.coerce(t, e, i.link.colorscales, r, a); } r("label"), r("cmin"), r("cmax"), r("colorscale"); } e.exports = function (t, e, r, h) { function p(r, a) { return n.coerce(t, e, i, r, a); } var d = n.extendDeep(h.hoverlabel, t.hoverlabel), m = t.node, g = c.newContainer(e, "node"); function v(t, e) { return n.coerce(m, g, i.node, t, e); } v("label"), v("groups"), v("x"), v("y"), v("pad"), v("thickness"), v("line.color"), v("line.width"), v("hoverinfo", t.hoverinfo), l(m, g, v, d), v("hovertemplate"); var y = h.colorway; v( "color", g.label.map(function (t, e) { return a.addOpacity( (function (t) { return y[t % y.length]; })(e), 0.8, ); }), ), v("customdata"); var x = t.link || {}, b = c.newContainer(e, "link"); function _(t, e) { return n.coerce(x, b, i.link, t, e); } _("label"), _("arrowlen"), _("source"), _("target"), _("value"), _("line.color"), _("line.width"), _("hoverinfo", t.hoverinfo), l(x, b, _, d), _("hovertemplate"); var w, T = o(h.paper_bgcolor).getLuminance() < 0.333 ? "rgba(255, 255, 255, 0.6)" : "rgba(0, 0, 0, 0.2)"; _("color", n.repeat(T, b.value.length)), _("customdata"), u(x, b, { name: "colorscales", handleItemDefaults: f }), s(e, h, p), p("orientation"), p("valueformat"), p("valuesuffix"), g.x.length && g.y.length && (w = "freeform"), p("arrangement", w), n.coerceFont(p, "textfont", n.extendFlat({}, h.font)), (e._length = null); }; }, { "../../components/color": 367, "../../components/fx/hoverlabel_defaults": 405, "../../lib": 515, "../../plot_api/plot_template": 555, "../../plots/array_container_defaults": 561, "../../plots/domain": 593, "./attributes": 926, tinycolor2: 313, }, ], 931: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("./calc"), plot: t("./plot"), moduleType: "trace", name: "sankey", basePlotModule: t("./base_plot"), selectPoints: t("./select.js"), categories: ["noOpacity"], meta: {}, }; }, { "./attributes": 926, "./base_plot": 927, "./calc": 928, "./defaults": 930, "./plot": 932, "./select.js": 934, }, ], 932: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = i.numberFormat, o = t("./render"), s = t("../../components/fx"), l = t("../../components/color"), c = t("./constants").cn, u = i._; function f(t) { return "" !== t; } function h(t, e) { return t.filter(function (t) { return t.key === e.traceId; }); } function p(t, e) { n.select(t).select("path").style("fill-opacity", e), n.select(t).select("rect").style("fill-opacity", e); } function d(t) { n.select(t).select("text.name").style("fill", "black"); } function m(t) { return function (e) { return ( -1 !== t.node.sourceLinks.indexOf(e.link) || -1 !== t.node.targetLinks.indexOf(e.link) ); }; } function g(t) { return function (e) { return ( -1 !== e.node.sourceLinks.indexOf(t.link) || -1 !== e.node.targetLinks.indexOf(t.link) ); }; } function v(t, e, r) { e && r && h(r, e) .selectAll("." + c.sankeyLink) .filter(m(e)) .call(x.bind(0, e, r, !1)); } function y(t, e, r) { e && r && h(r, e) .selectAll("." + c.sankeyLink) .filter(m(e)) .call(b.bind(0, e, r, !1)); } function x(t, e, r, n) { var i = n.datum().link.label; n.style("fill-opacity", function (t) { if (!t.link.concentrationscale) return 0.4; }), i && h(e, t) .selectAll("." + c.sankeyLink) .filter(function (t) { return t.link.label === i; }) .style("fill-opacity", function (t) { if (!t.link.concentrationscale) return 0.4; }), r && h(e, t) .selectAll("." + c.sankeyNode) .filter(g(t)) .call(v); } function b(t, e, r, n) { var i = n.datum().link.label; n.style("fill-opacity", function (t) { return t.tinyColorAlpha; }), i && h(e, t) .selectAll("." + c.sankeyLink) .filter(function (t) { return t.link.label === i; }) .style("fill-opacity", function (t) { return t.tinyColorAlpha; }), r && h(e, t).selectAll(c.sankeyNode).filter(g(t)).call(y); } function _(t, e) { var r = t.hoverlabel || {}, n = i.nestedProperty(r, e).get(); return !Array.isArray(n) && n; } e.exports = function (t, e) { for ( var r = t._fullLayout, i = r._paper, h = r._size, m = 0; m < t._fullData.length; m++ ) if ( t._fullData[m].visible && t._fullData[m].type === c.sankey && !t._fullData[m]._viewInitial ) { var g = t._fullData[m].node; t._fullData[m]._viewInitial = { node: { groups: g.groups.slice(), x: g.x.slice(), y: g.y.slice(), }, }; } var w = u(t, "source:") + " ", T = u(t, "target:") + " ", k = u(t, "concentration:") + " ", A = u(t, "incoming flow count:") + " ", M = u(t, "outgoing flow count:") + " "; o( t, i, e, { width: h.w, height: h.h, margin: { t: h.t, r: h.r, b: h.b, l: h.l }, }, { linkEvents: { hover: function (e, r, i) { !1 !== t._fullLayout.hovermode && (n.select(e).call(x.bind(0, r, i, !0)), "skip" !== r.link.trace.link.hoverinfo && ((r.link.fullData = r.link.trace), t.emit("plotly_hover", { event: n.event, points: [r.link], }))); }, follow: function (e, i) { if (!1 !== t._fullLayout.hovermode) { var o = i.link.trace.link; if ( "none" !== o.hoverinfo && "skip" !== o.hoverinfo ) { for ( var c = [], u = 0, h = 0; h < i.flow.links.length; h++ ) { var m = i.flow.links[h]; if ( "closest" !== t._fullLayout.hovermode || i.link.pointNumber === m.pointNumber ) { i.link.pointNumber === m.pointNumber && (u = h), (m.fullData = m.trace), (o = i.link.trace.link); var g = y(m), v = { valueLabel: a(i.valueFormat)(m.value) + i.valueSuffix, }; c.push({ x: g[0], y: g[1], name: v.valueLabel, text: [ m.label || "", w + m.source.label, T + m.target.label, m.concentrationscale ? k + a("%0.2f")( m.flow.labelConcentration, ) : "", ] .filter(f) .join("
"), color: _(o, "bgcolor") || l.addOpacity(m.color, 1), borderColor: _(o, "bordercolor"), fontFamily: _(o, "font.family"), fontSize: _(o, "font.size"), fontColor: _(o, "font.color"), nameLength: _(o, "namelength"), textAlign: _(o, "align"), idealAlign: n.event.x < g[0] ? "right" : "left", hovertemplate: o.hovertemplate, hovertemplateLabels: v, eventData: [m], }); } } s.loneHover(c, { container: r._hoverlayer.node(), outerContainer: r._paper.node(), gd: t, anchorIndex: u, }).each(function () { i.link.concentrationscale || p(this, 0.65), d(this); }); } } function y(t) { var e, r; t.circular ? ((e = (t.circularPathData.leftInnerExtent + t.circularPathData.rightInnerExtent) / 2), (r = t.circularPathData.verticalFullExtent)) : ((e = (t.source.x1 + t.target.x0) / 2), (r = (t.y0 + t.y1) / 2)); var n = [e, r]; return ( "v" === t.trace.orientation && n.reverse(), (n[0] += i.parent.translateX), (n[1] += i.parent.translateY), n ); } }, unhover: function (e, i, a) { !1 !== t._fullLayout.hovermode && (n.select(e).call(b.bind(0, i, a, !0)), "skip" !== i.link.trace.link.hoverinfo && ((i.link.fullData = i.link.trace), t.emit("plotly_unhover", { event: n.event, points: [i.link], })), s.loneUnhover(r._hoverlayer.node())); }, select: function (e, r) { var i = r.link; (i.originalEvent = n.event), (t._hoverdata = [i]), s.click(t, { target: !0 }); }, }, nodeEvents: { hover: function (e, r, i) { !1 !== t._fullLayout.hovermode && (n.select(e).call(v, r, i), "skip" !== r.node.trace.node.hoverinfo && ((r.node.fullData = r.node.trace), t.emit("plotly_hover", { event: n.event, points: [r.node], }))); }, follow: function (e, i) { if (!1 !== t._fullLayout.hovermode) { var o = i.node.trace.node; if ( "none" !== o.hoverinfo && "skip" !== o.hoverinfo ) { var l = n.select(e).select("." + c.nodeRect), u = t._fullLayout._paperdiv .node() .getBoundingClientRect(), h = l.node().getBoundingClientRect(), m = h.left - 2 - u.left, g = h.right + 2 - u.left, v = h.top + h.height / 4 - u.top, y = { valueLabel: a(i.valueFormat)(i.node.value) + i.valueSuffix, }; (i.node.fullData = i.node.trace), t._fullLayout._calcInverseTransform(t); var x = t._fullLayout._invScaleX, b = t._fullLayout._invScaleY, w = s.loneHover( { x0: x * m, x1: x * g, y: b * v, name: a(i.valueFormat)(i.node.value) + i.valueSuffix, text: [ i.node.label, A + i.node.targetLinks.length, M + i.node.sourceLinks.length, ] .filter(f) .join("
"), color: _(o, "bgcolor") || i.tinyColorHue, borderColor: _(o, "bordercolor"), fontFamily: _(o, "font.family"), fontSize: _(o, "font.size"), fontColor: _(o, "font.color"), nameLength: _(o, "namelength"), textAlign: _(o, "align"), idealAlign: "left", hovertemplate: o.hovertemplate, hovertemplateLabels: y, eventData: [i.node], }, { container: r._hoverlayer.node(), outerContainer: r._paper.node(), gd: t, }, ); p(w, 0.85), d(w); } } }, unhover: function (e, i, a) { !1 !== t._fullLayout.hovermode && (n.select(e).call(y, i, a), "skip" !== i.node.trace.node.hoverinfo && ((i.node.fullData = i.node.trace), t.emit("plotly_unhover", { event: n.event, points: [i.node], })), s.loneUnhover(r._hoverlayer.node())); }, select: function (e, r, i) { var a = r.node; (a.originalEvent = n.event), (t._hoverdata = [a]), n.select(e).call(y, r, i), s.click(t, { target: !0 }); }, }, }, ); }; }, { "../../components/color": 367, "../../components/fx": 407, "../../lib": 515, "./constants": 929, "./render": 933, "@plotly/d3": 58, }, ], 933: [ function (t, e, r) { "use strict"; var n = t("d3-force"), i = t("d3-interpolate").interpolateNumber, a = t("@plotly/d3"), o = t("@plotly/d3-sankey"), s = t("@plotly/d3-sankey-circular"), l = t("./constants"), c = t("tinycolor2"), u = t("../../components/color"), f = t("../../components/drawing"), h = t("../../lib"), p = h.strTranslate, d = h.strRotate, m = t("../../lib/gup"), g = m.keyFun, v = m.repeat, y = m.unwrap, x = t("../../lib/svg_text_utils"), b = t("../../registry"), _ = t("../../constants/alignment"), w = _.CAP_SHIFT, T = _.LINE_SPACING; function k(t, e, r) { var n, i = y(e), a = i.trace, u = a.domain, f = "h" === a.orientation, p = a.node.pad, d = a.node.thickness, m = t.width * (u.x[1] - u.x[0]), g = t.height * (u.y[1] - u.y[0]), v = i._nodes, x = i._links, b = i.circular; (n = b ? s.sankeyCircular().circularLinkGap(0) : o.sankey()) .iterations(l.sankeyIterations) .size(f ? [m, g] : [g, m]) .nodeWidth(d) .nodePadding(p) .nodeId(function (t) { return t.pointNumber; }) .nodes(v) .links(x); var _, w, T, k = n(); for (var A in (n.nodePadding() < p && h.warn( "node.pad was reduced to ", n.nodePadding(), " to fit within the figure.", ), i._groupLookup)) { var M, S = parseInt(i._groupLookup[A]); for (_ = 0; _ < k.nodes.length; _++) if (k.nodes[_].pointNumber === S) { M = k.nodes[_]; break; } if (M) { var E = { pointNumber: parseInt(A), x0: M.x0, x1: M.x1, y0: M.y0, y1: M.y1, partOfGroup: !0, sourceLinks: [], targetLinks: [], }; k.nodes.unshift(E), M.childrenNodes.unshift(E); } } if ( ((function () { for (_ = 0; _ < k.nodes.length; _++) { var t, e, r = k.nodes[_], n = {}; for (w = 0; w < r.targetLinks.length; w++) (t = (e = r.targetLinks[w]).source.pointNumber + ":" + e.target.pointNumber), n.hasOwnProperty(t) || (n[t] = []), n[t].push(e); var i = Object.keys(n); for (w = 0; w < i.length; w++) { var a = n[(t = i[w])], o = 0, s = {}; for (T = 0; T < a.length; T++) s[(e = a[T]).label] || (s[e.label] = 0), (s[e.label] += e.value), (o += e.value); for (T = 0; T < a.length; T++) ((e = a[T]).flow = { value: o, labelConcentration: s[e.label] / o, concentration: e.value / o, links: a, }), e.concentrationscale && (e.color = c( e.concentrationscale( e.flow.labelConcentration, ), )); } var l = 0; for (w = 0; w < r.sourceLinks.length; w++) l += r.sourceLinks[w].value; for (w = 0; w < r.sourceLinks.length; w++) (e = r.sourceLinks[w]).concentrationOut = e.value / l; var u = 0; for (w = 0; w < r.targetLinks.length; w++) u += r.targetLinks[w].value; for (w = 0; w < r.targetLinks.length; w++) (e = r.targetLinks[w]).concenrationIn = e.value / u; } })(), a.node.x.length && a.node.y.length) ) { for ( _ = 0; _ < Math.min( a.node.x.length, a.node.y.length, k.nodes.length, ); _++ ) if (a.node.x[_] && a.node.y[_]) { var L = [a.node.x[_] * m, a.node.y[_] * g]; (k.nodes[_].x0 = L[0] - d / 2), (k.nodes[_].x1 = L[0] + d / 2); var C = k.nodes[_].y1 - k.nodes[_].y0; (k.nodes[_].y0 = L[1] - C / 2), (k.nodes[_].y1 = L[1] + C / 2); } if ("snap" === a.arrangement) !(function (t) { t.forEach(function (t) { var e, r, n, i = 0, a = t.length; for ( t.sort(function (t, e) { return t.y0 - e.y0; }), n = 0; n < a; ++n ) (e = t[n]).y0 >= i || ((r = i - e.y0) > 1e-6 && ((e.y0 += r), (e.y1 += r))), (i = e.y1 + p); }); })( (function (t) { var e, r, n = t .map(function (t, e) { return { x0: t.x0, index: e }; }) .sort(function (t, e) { return t.x0 - e.x0; }), i = [], a = -1, o = -1 / 0; for (_ = 0; _ < n.length; _++) { var s = t[n[_].index]; s.x0 > o + d && ((a += 1), (e = s.x0)), (o = s.x0), i[a] || (i[a] = []), i[a].push(s), (r = e - s.x0), (s.x0 += r), (s.x1 += r); } return i; })((v = k.nodes)), ); n.update(k); } return { circular: b, key: r, trace: a, guid: h.randstr(), horizontal: f, width: m, height: g, nodePad: a.node.pad, nodeLineColor: a.node.line.color, nodeLineWidth: a.node.line.width, linkLineColor: a.link.line.color, linkLineWidth: a.link.line.width, linkArrowLength: a.link.arrowlen, valueFormat: a.valueformat, valueSuffix: a.valuesuffix, textFont: a.textfont, translateX: u.x[0] * t.width + t.margin.l, translateY: t.height - u.y[1] * t.height + t.margin.t, dragParallel: f ? g : m, dragPerpendicular: f ? m : g, arrangement: a.arrangement, sankey: n, graph: k, forceLayouts: {}, interactionState: { dragInProgress: !1, hovered: !1 }, }; } function A(t, e, r) { var n = c(e.color), i = e.source.label + "|" + e.target.label + "__" + r; return ( (e.trace = t.trace), (e.curveNumber = t.trace.index), { circular: t.circular, key: i, traceId: t.key, pointNumber: e.pointNumber, link: e, tinyColorHue: u.tinyRGB(n), tinyColorAlpha: n.getAlpha(), linkPath: M, linkLineColor: t.linkLineColor, linkLineWidth: t.linkLineWidth, linkArrowLength: t.linkArrowLength, valueFormat: t.valueFormat, valueSuffix: t.valueSuffix, sankey: t.sankey, parent: t, interactionState: t.interactionState, flow: e.flow, } ); } function M() { return function (t) { var e = t.linkArrowLength; if (t.link.circular) return (function (t, e) { var r = t.width / 2, n = t.circularPathData; return "top" === t.circularLinkType ? "M " + (n.targetX - e) + " " + (n.targetY + r) + " L" + (n.rightInnerExtent - e) + " " + (n.targetY + r) + "A" + (n.rightLargeArcRadius + r) + " " + (n.rightSmallArcRadius + r) + " 0 0 1 " + (n.rightFullExtent - r - e) + " " + (n.targetY - n.rightSmallArcRadius) + "L" + (n.rightFullExtent - r - e) + " " + n.verticalRightInnerExtent + "A" + (n.rightLargeArcRadius + r) + " " + (n.rightLargeArcRadius + r) + " 0 0 1 " + (n.rightInnerExtent - e) + " " + (n.verticalFullExtent - r) + "L" + n.leftInnerExtent + " " + (n.verticalFullExtent - r) + "A" + (n.leftLargeArcRadius + r) + " " + (n.leftLargeArcRadius + r) + " 0 0 1 " + (n.leftFullExtent + r) + " " + n.verticalLeftInnerExtent + "L" + (n.leftFullExtent + r) + " " + (n.sourceY - n.leftSmallArcRadius) + "A" + (n.leftLargeArcRadius + r) + " " + (n.leftSmallArcRadius + r) + " 0 0 1 " + n.leftInnerExtent + " " + (n.sourceY + r) + "L" + n.sourceX + " " + (n.sourceY + r) + "L" + n.sourceX + " " + (n.sourceY - r) + "L" + n.leftInnerExtent + " " + (n.sourceY - r) + "A" + (n.leftLargeArcRadius - r) + " " + (n.leftSmallArcRadius - r) + " 0 0 0 " + (n.leftFullExtent - r) + " " + (n.sourceY - n.leftSmallArcRadius) + "L" + (n.leftFullExtent - r) + " " + n.verticalLeftInnerExtent + "A" + (n.leftLargeArcRadius - r) + " " + (n.leftLargeArcRadius - r) + " 0 0 0 " + n.leftInnerExtent + " " + (n.verticalFullExtent + r) + "L" + (n.rightInnerExtent - e) + " " + (n.verticalFullExtent + r) + "A" + (n.rightLargeArcRadius - r) + " " + (n.rightLargeArcRadius - r) + " 0 0 0 " + (n.rightFullExtent + r - e) + " " + n.verticalRightInnerExtent + "L" + (n.rightFullExtent + r - e) + " " + (n.targetY - n.rightSmallArcRadius) + "A" + (n.rightLargeArcRadius - r) + " " + (n.rightSmallArcRadius - r) + " 0 0 0 " + (n.rightInnerExtent - e) + " " + (n.targetY - r) + "L" + (n.targetX - e) + " " + (n.targetY - r) + (e > 0 ? "L" + n.targetX + " " + n.targetY : "") + "Z" : "M " + (n.targetX - e) + " " + (n.targetY - r) + " L" + (n.rightInnerExtent - e) + " " + (n.targetY - r) + "A" + (n.rightLargeArcRadius + r) + " " + (n.rightSmallArcRadius + r) + " 0 0 0 " + (n.rightFullExtent - r - e) + " " + (n.targetY + n.rightSmallArcRadius) + "L" + (n.rightFullExtent - r - e) + " " + n.verticalRightInnerExtent + "A" + (n.rightLargeArcRadius + r) + " " + (n.rightLargeArcRadius + r) + " 0 0 0 " + (n.rightInnerExtent - e) + " " + (n.verticalFullExtent + r) + "L" + n.leftInnerExtent + " " + (n.verticalFullExtent + r) + "A" + (n.leftLargeArcRadius + r) + " " + (n.leftLargeArcRadius + r) + " 0 0 0 " + (n.leftFullExtent + r) + " " + n.verticalLeftInnerExtent + "L" + (n.leftFullExtent + r) + " " + (n.sourceY + n.leftSmallArcRadius) + "A" + (n.leftLargeArcRadius + r) + " " + (n.leftSmallArcRadius + r) + " 0 0 0 " + n.leftInnerExtent + " " + (n.sourceY - r) + "L" + n.sourceX + " " + (n.sourceY - r) + "L" + n.sourceX + " " + (n.sourceY + r) + "L" + n.leftInnerExtent + " " + (n.sourceY + r) + "A" + (n.leftLargeArcRadius - r) + " " + (n.leftSmallArcRadius - r) + " 0 0 1 " + (n.leftFullExtent - r) + " " + (n.sourceY + n.leftSmallArcRadius) + "L" + (n.leftFullExtent - r) + " " + n.verticalLeftInnerExtent + "A" + (n.leftLargeArcRadius - r) + " " + (n.leftLargeArcRadius - r) + " 0 0 1 " + n.leftInnerExtent + " " + (n.verticalFullExtent - r) + "L" + (n.rightInnerExtent - e) + " " + (n.verticalFullExtent - r) + "A" + (n.rightLargeArcRadius - r) + " " + (n.rightLargeArcRadius - r) + " 0 0 1 " + (n.rightFullExtent + r - e) + " " + n.verticalRightInnerExtent + "L" + (n.rightFullExtent + r - e) + " " + (n.targetY + n.rightSmallArcRadius) + "A" + (n.rightLargeArcRadius - r) + " " + (n.rightSmallArcRadius - r) + " 0 0 1 " + (n.rightInnerExtent - e) + " " + (n.targetY + r) + "L" + (n.targetX - e) + " " + (n.targetY + r) + (e > 0 ? "L" + n.targetX + " " + n.targetY : "") + "Z"; })(t.link, e); var r = Math.abs( (t.link.target.x0 - t.link.source.x1) / 2, ); e > r && (e = r); var n = t.link.source.x1, a = t.link.target.x0 - e, o = i(n, a), s = o(0.5), l = o(0.5), c = t.link.y0 - t.link.width / 2, u = t.link.y0 + t.link.width / 2, f = t.link.y1 - t.link.width / 2, h = t.link.y1 + t.link.width / 2, p = "M" + n + "," + c, d = "C" + s + "," + c + " " + l + "," + f + " " + a + "," + f, m = "C" + l + "," + h + " " + s + "," + u + " " + n + "," + u, g = e > 0 ? "L" + (a + e) + "," + (f + t.link.width / 2) : ""; return p + d + (g += "L" + a + "," + h) + m + "Z"; }; } function S(t, e) { var r = c(e.color), n = l.nodePadAcross, i = t.nodePad / 2; (e.dx = e.x1 - e.x0), (e.dy = e.y1 - e.y0); var a = e.dx, o = Math.max(0.5, e.dy), s = "node_" + e.pointNumber; return ( e.group && (s = h.randstr()), (e.trace = t.trace), (e.curveNumber = t.trace.index), { index: e.pointNumber, key: s, partOfGroup: e.partOfGroup || !1, group: e.group, traceId: t.key, trace: t.trace, node: e, nodePad: t.nodePad, nodeLineColor: t.nodeLineColor, nodeLineWidth: t.nodeLineWidth, textFont: t.textFont, size: t.horizontal ? t.height : t.width, visibleWidth: Math.ceil(a), visibleHeight: o, zoneX: -n, zoneY: -i, zoneWidth: a + 2 * n, zoneHeight: o + 2 * i, labelY: t.horizontal ? e.dy / 2 + 1 : e.dx / 2 + 1, left: 1 === e.originalLayer, sizeAcross: t.width, forceLayouts: t.forceLayouts, horizontal: t.horizontal, darkBackground: r.getBrightness() <= 128, tinyColorHue: u.tinyRGB(r), tinyColorAlpha: r.getAlpha(), valueFormat: t.valueFormat, valueSuffix: t.valueSuffix, sankey: t.sankey, graph: t.graph, arrangement: t.arrangement, uniqueNodeLabelPathId: [t.guid, t.key, s].join("_"), interactionState: t.interactionState, figure: t, } ); } function E(t) { t.attr("transform", function (t) { return p(t.node.x0.toFixed(3), t.node.y0.toFixed(3)); }); } function L(t) { t.call(E); } function C(t, e) { t.call(L), e.attr("d", M()); } function P(t) { t.attr("width", function (t) { return t.node.x1 - t.node.x0; }).attr("height", function (t) { return t.visibleHeight; }); } function I(t) { return t.link.width > 1 || t.linkLineWidth > 0; } function O(t) { return ( p(t.translateX, t.translateY) + (t.horizontal ? "matrix(1 0 0 1 0 0)" : "matrix(0 1 1 0 0 0)") ); } function z(t, e, r) { t.on(".basic", null) .on("mouseover.basic", function (t) { t.interactionState.dragInProgress || t.partOfGroup || (r.hover(this, t, e), (t.interactionState.hovered = [this, t])); }) .on("mousemove.basic", function (t) { t.interactionState.dragInProgress || t.partOfGroup || (r.follow(this, t), (t.interactionState.hovered = [this, t])); }) .on("mouseout.basic", function (t) { t.interactionState.dragInProgress || t.partOfGroup || (r.unhover(this, t, e), (t.interactionState.hovered = !1)); }) .on("click.basic", function (t) { t.interactionState.hovered && (r.unhover(this, t, e), (t.interactionState.hovered = !1)), t.interactionState.dragInProgress || t.partOfGroup || r.select(this, t, e); }); } function D(t, e, r, i) { var o = a.behavior .drag() .origin(function (t) { return { x: t.node.x0 + t.visibleWidth / 2, y: t.node.y0 + t.visibleHeight / 2, }; }) .on("dragstart", function (a) { if ( "fixed" !== a.arrangement && (h.ensureSingle( i._fullLayout._infolayer, "g", "dragcover", function (t) { i._fullLayout._dragCover = t; }, ), h.raiseToTop(this), (a.interactionState.dragInProgress = a.node), F(a.node), a.interactionState.hovered && (r.nodeEvents.unhover.apply( 0, a.interactionState.hovered, ), (a.interactionState.hovered = !1)), "snap" === a.arrangement) ) { var o = a.traceId + "|" + a.key; a.forceLayouts[o] ? a.forceLayouts[o].alpha(1) : (function (t, e, r, i) { !(function (t) { for (var e = 0; e < t.length; e++) (t[e].y = (t[e].y0 + t[e].y1) / 2), (t[e].x = (t[e].x0 + t[e].x1) / 2); })(r.graph.nodes); var a = r.graph.nodes .filter(function (t) { return t.originalX === r.node.originalX; }) .filter(function (t) { return !t.partOfGroup; }); r.forceLayouts[e] = n .forceSimulation(a) .alphaDecay(0) .force( "collide", n .forceCollide() .radius(function (t) { return t.dy / 2 + r.nodePad / 2; }) .strength(1) .iterations(l.forceIterations), ) .force( "constrain", (function (t, e, r, n) { return function () { for ( var t = 0, i = 0; i < r.length; i++ ) { var a = r[i]; a === n.interactionState.dragInProgress ? ((a.x = a.lastDraggedX), (a.y = a.lastDraggedY)) : ((a.vx = (a.originalX - a.x) / l.forceTicksPerFrame), (a.y = Math.min( n.size - a.dy / 2, Math.max(a.dy / 2, a.y), ))), (t = Math.max( t, Math.abs(a.vx), Math.abs(a.vy), )); } !n.interactionState.dragInProgress && t < 0.1 && n.forceLayouts[e].alpha() > 0 && n.forceLayouts[e].alpha(0); }; })(0, e, a, r), ) .stop(); })(0, o, a), (function (t, e, r, n, i) { window.requestAnimationFrame(function a() { var o; for (o = 0; o < l.forceTicksPerFrame; o++) r.forceLayouts[n].tick(); if ( ((function (t) { for (var e = 0; e < t.length; e++) (t[e].y0 = t[e].y - t[e].dy / 2), (t[e].y1 = t[e].y0 + t[e].dy), (t[e].x0 = t[e].x - t[e].dx / 2), (t[e].x1 = t[e].x0 + t[e].dx); })(r.graph.nodes), r.sankey.update(r.graph), C(t.filter(B(r)), e), r.forceLayouts[n].alpha() > 0) ) window.requestAnimationFrame(a); else { var s = r.node.originalX; (r.node.x0 = s - r.visibleWidth / 2), (r.node.x1 = s + r.visibleWidth / 2), R(r, i); } }); })(t, e, a, o, i); } }) .on("drag", function (r) { if ("fixed" !== r.arrangement) { var n = a.event.x, i = a.event.y; "snap" === r.arrangement ? ((r.node.x0 = n - r.visibleWidth / 2), (r.node.x1 = n + r.visibleWidth / 2), (r.node.y0 = i - r.visibleHeight / 2), (r.node.y1 = i + r.visibleHeight / 2)) : ("freeform" === r.arrangement && ((r.node.x0 = n - r.visibleWidth / 2), (r.node.x1 = n + r.visibleWidth / 2)), (i = Math.max( 0, Math.min(r.size - r.visibleHeight / 2, i), )), (r.node.y0 = i - r.visibleHeight / 2), (r.node.y1 = i + r.visibleHeight / 2)), F(r.node), "snap" !== r.arrangement && (r.sankey.update(r.graph), C(t.filter(B(r)), e)); } }) .on("dragend", function (t) { if ("fixed" !== t.arrangement) { t.interactionState.dragInProgress = !1; for (var e = 0; e < t.node.childrenNodes.length; e++) (t.node.childrenNodes[e].x = t.node.x), (t.node.childrenNodes[e].y = t.node.y); "snap" !== t.arrangement && R(t, i); } }); t.on(".drag", null).call(o); } function R(t, e) { for ( var r = [], n = [], i = 0; i < t.graph.nodes.length; i++ ) { var a = (t.graph.nodes[i].x0 + t.graph.nodes[i].x1) / 2, o = (t.graph.nodes[i].y0 + t.graph.nodes[i].y1) / 2; r.push(a / t.figure.width), n.push(o / t.figure.height); } b.call( "_guiRestyle", e, { "node.x": [r], "node.y": [n] }, t.trace.index, ).then(function () { e._fullLayout._dragCover && e._fullLayout._dragCover.remove(); }); } function F(t) { (t.lastDraggedX = t.x0 + t.dx / 2), (t.lastDraggedY = t.y0 + t.dy / 2); } function B(t) { return function (e) { return e.node.originalX === t.node.originalX; }; } e.exports = function (t, e, r, n, i) { var o = t._context.staticPlot, s = !1; h.ensureSingle( t._fullLayout._infolayer, "g", "first-render", function () { s = !0; }, ); var m = t._fullLayout._dragCover, b = r .filter(function (t) { return y(t).trace.visible; }) .map(k.bind(null, n)), _ = e.selectAll("." + l.cn.sankey).data(b, g); _.exit().remove(), _.enter() .append("g") .classed(l.cn.sankey, !0) .style("box-sizing", "content-box") .style("position", "absolute") .style("left", 0) .style("shape-rendering", "geometricPrecision") .style("pointer-events", o ? "none" : "auto") .attr("transform", O), _.each(function (e, r) { t._fullData[r]._sankey = e; var n = "bgsankey-" + e.trace.uid + "-" + r; h.ensureSingle(t._fullLayout._draggers, "rect", n), (t._fullData[r]._bgRect = a.select("." + n)), t._fullData[r]._bgRect .style("pointer-events", o ? "none" : "all") .attr("width", e.width) .attr("height", e.height) .attr("x", e.translateX) .attr("y", e.translateY) .classed("bgsankey", !0) .style({ fill: "transparent", "stroke-width": 0 }); }), _.transition() .ease(l.ease) .duration(l.duration) .attr("transform", O); var L = _.selectAll("." + l.cn.sankeyLinks).data(v, g); L.enter() .append("g") .classed(l.cn.sankeyLinks, !0) .style("fill", "none"); var C = L.selectAll("." + l.cn.sankeyLink).data(function ( t, ) { return t.graph.links .filter(function (t) { return t.value; }) .map(A.bind(null, t)); }, g); C.enter() .append("path") .classed(l.cn.sankeyLink, !0) .call(z, _, i.linkEvents), C.style("stroke", function (t) { return I(t) ? u.tinyRGB(c(t.linkLineColor)) : t.tinyColorHue; }) .style("stroke-opacity", function (t) { return I(t) ? u.opacity(t.linkLineColor) : t.tinyColorAlpha; }) .style("fill", function (t) { return t.tinyColorHue; }) .style("fill-opacity", function (t) { return t.tinyColorAlpha; }) .style("stroke-width", function (t) { return I(t) ? t.linkLineWidth : 1; }) .attr("d", M()), C.style("opacity", function () { return t._context.staticPlot || s || m ? 1 : 0; }) .transition() .ease(l.ease) .duration(l.duration) .style("opacity", 1), C.exit() .transition() .ease(l.ease) .duration(l.duration) .style("opacity", 0) .remove(); var R = _.selectAll("." + l.cn.sankeyNodeSet).data(v, g); R.enter().append("g").classed(l.cn.sankeyNodeSet, !0), R.style("cursor", function (t) { switch (t.arrangement) { case "fixed": return "default"; case "perpendicular": return "ns-resize"; default: return "move"; } }); var F = R.selectAll("." + l.cn.sankeyNode).data(function ( t, ) { var e = t.graph.nodes; return ( (function (t) { var e, r = []; for (e = 0; e < t.length; e++) (t[e].originalX = (t[e].x0 + t[e].x1) / 2), (t[e].originalY = (t[e].y0 + t[e].y1) / 2), -1 === r.indexOf(t[e].originalX) && r.push(t[e].originalX); for ( r.sort(function (t, e) { return t - e; }), e = 0; e < t.length; e++ ) (t[e].originalLayerIndex = r.indexOf( t[e].originalX, )), (t[e].originalLayer = t[e].originalLayerIndex / (r.length - 1)); })(e), e.map(S.bind(null, t)) ); }, g); F.enter() .append("g") .classed(l.cn.sankeyNode, !0) .call(E) .style("opacity", function (e) { return (!t._context.staticPlot && !s) || e.partOfGroup ? 0 : 1; }), F.call(z, _, i.nodeEvents).call(D, C, i, t), F.transition() .ease(l.ease) .duration(l.duration) .call(E) .style("opacity", function (t) { return t.partOfGroup ? 0 : 1; }), F.exit() .transition() .ease(l.ease) .duration(l.duration) .style("opacity", 0) .remove(); var B = F.selectAll("." + l.cn.nodeRect).data(v); B.enter().append("rect").classed(l.cn.nodeRect, !0).call(P), B.style("stroke-width", function (t) { return t.nodeLineWidth; }) .style("stroke", function (t) { return u.tinyRGB(c(t.nodeLineColor)); }) .style("stroke-opacity", function (t) { return u.opacity(t.nodeLineColor); }) .style("fill", function (t) { return t.tinyColorHue; }) .style("fill-opacity", function (t) { return t.tinyColorAlpha; }), B.transition().ease(l.ease).duration(l.duration).call(P); var N = F.selectAll("." + l.cn.nodeLabel).data(v); N.enter() .append("text") .classed(l.cn.nodeLabel, !0) .style("cursor", "default"), N.attr("data-notex", 1) .text(function (t) { return t.node.label; }) .each(function (e) { var r = a.select(this); f.font(r, e.textFont), x.convertToTspans(r, t); }) .style( "text-shadow", x.makeTextShadow(t._fullLayout.paper_bgcolor), ) .attr("text-anchor", function (t) { return t.horizontal && t.left ? "end" : "start"; }) .attr("transform", function (t) { var e = a.select(this), r = x.lineCount(e), n = t.textFont.size * ((r - 1) * T - w), i = t.nodeLineWidth / 2 + 3, o = ((t.horizontal ? t.visibleHeight : t.visibleWidth) - n) / 2; t.horizontal && (t.left ? (i = -i) : (i += t.visibleWidth)); var s = t.horizontal ? "" : "scale(-1,1)" + d(90); return ( p(t.horizontal ? i : o, t.horizontal ? o : i) + s ); }), N.transition().ease(l.ease).duration(l.duration); }; }, { "../../components/color": 367, "../../components/drawing": 389, "../../constants/alignment": 483, "../../lib": 515, "../../lib/gup": 512, "../../lib/svg_text_utils": 541, "../../registry": 647, "./constants": 929, "@plotly/d3": 58, "@plotly/d3-sankey": 57, "@plotly/d3-sankey-circular": 56, "d3-force": 111, "d3-interpolate": 116, tinycolor2: 313, }, ], 934: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { for ( var r = [], n = t.cd[0].trace, i = n._sankey.graph.nodes, a = 0; a < i.length; a++ ) { var o = i[a]; if (!o.partOfGroup) { var s = [(o.x0 + o.x1) / 2, (o.y0 + o.y1) / 2]; "v" === n.orientation && s.reverse(), e && e.contains(s, !1, a, t) && r.push({ pointNumber: o.pointNumber }); } } return r; }; }, {}, ], 935: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e) { for (var r = 0; r < t.length; r++) t[r].i = r; n.mergeArray(e.text, t, "tx"), n.mergeArray(e.texttemplate, t, "txt"), n.mergeArray(e.hovertext, t, "htx"), n.mergeArray(e.customdata, t, "data"), n.mergeArray(e.textposition, t, "tp"), e.textfont && (n.mergeArrayCastPositive(e.textfont.size, t, "ts"), n.mergeArray(e.textfont.color, t, "tc"), n.mergeArray(e.textfont.family, t, "tf")); var i = e.marker; if (i) { n.mergeArrayCastPositive(i.size, t, "ms"), n.mergeArrayCastPositive(i.opacity, t, "mo"), n.mergeArray(i.symbol, t, "mx"), n.mergeArray(i.angle, t, "ma"), n.mergeArray(i.standoff, t, "mf"), n.mergeArray(i.color, t, "mc"); var a = i.line; i.line && (n.mergeArray(a.color, t, "mlc"), n.mergeArrayCastPositive(a.width, t, "mlw")); var o = i.gradient; o && "none" !== o.type && (n.mergeArray(o.type, t, "mgt"), n.mergeArray(o.color, t, "mgc")); } }; }, { "../../lib": 515 }, ], 936: [ function (t, e, r) { "use strict"; var n = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, i = t("../../plots/template_attributes").texttemplateAttrs, a = t("../../plots/template_attributes").hovertemplateAttrs, o = t("../../components/colorscale/attributes"), s = t("../../plots/font_attributes"), l = t("../../components/drawing/attributes").dash, c = t("../../components/drawing/attributes").pattern, u = t("../../components/drawing"), f = t("./constants"), h = t("../../lib/extend").extendFlat; e.exports = { x: { valType: "data_array", editType: "calc+clearAxisTypes", anim: !0, }, x0: { valType: "any", dflt: 0, editType: "calc+clearAxisTypes", anim: !0, }, dx: { valType: "number", dflt: 1, editType: "calc", anim: !0, }, y: { valType: "data_array", editType: "calc+clearAxisTypes", anim: !0, }, y0: { valType: "any", dflt: 0, editType: "calc+clearAxisTypes", anim: !0, }, dy: { valType: "number", dflt: 1, editType: "calc", anim: !0, }, xperiod: { valType: "any", dflt: 0, editType: "calc" }, yperiod: { valType: "any", dflt: 0, editType: "calc" }, xperiod0: { valType: "any", editType: "calc" }, yperiod0: { valType: "any", editType: "calc" }, xperiodalignment: { valType: "enumerated", values: ["start", "middle", "end"], dflt: "middle", editType: "calc", }, yperiodalignment: { valType: "enumerated", values: ["start", "middle", "end"], dflt: "middle", editType: "calc", }, xhoverformat: n("x"), yhoverformat: n("y"), stackgroup: { valType: "string", dflt: "", editType: "calc", }, orientation: { valType: "enumerated", values: ["v", "h"], editType: "calc", }, groupnorm: { valType: "enumerated", values: ["", "fraction", "percent"], dflt: "", editType: "calc", }, stackgaps: { valType: "enumerated", values: ["infer zero", "interpolate"], dflt: "infer zero", editType: "calc", }, text: { valType: "string", dflt: "", arrayOk: !0, editType: "calc", }, texttemplate: i({}, {}), hovertext: { valType: "string", dflt: "", arrayOk: !0, editType: "style", }, mode: { valType: "flaglist", flags: ["lines", "markers", "text"], extras: ["none"], editType: "calc", }, hoveron: { valType: "flaglist", flags: ["points", "fills"], editType: "style", }, hovertemplate: a({}, { keys: f.eventDataKeys }), line: { color: { valType: "color", editType: "style", anim: !0 }, width: { valType: "number", min: 0, dflt: 2, editType: "style", anim: !0, }, shape: { valType: "enumerated", values: ["linear", "spline", "hv", "vh", "hvh", "vhv"], dflt: "linear", editType: "plot", }, smoothing: { valType: "number", min: 0, max: 1.3, dflt: 1, editType: "plot", }, dash: h({}, l, { editType: "style" }), backoff: { valType: "number", min: 0, dflt: "auto", arrayOk: !0, editType: "plot", }, simplify: { valType: "boolean", dflt: !0, editType: "plot", }, editType: "plot", }, connectgaps: { valType: "boolean", dflt: !1, editType: "calc", }, cliponaxis: { valType: "boolean", dflt: !0, editType: "plot", }, fill: { valType: "enumerated", values: [ "none", "tozeroy", "tozerox", "tonexty", "tonextx", "toself", "tonext", ], editType: "calc", }, fillcolor: { valType: "color", editType: "style", anim: !0, }, fillpattern: c, marker: h( { symbol: { valType: "enumerated", values: u.symbolList, dflt: "circle", arrayOk: !0, editType: "style", }, opacity: { valType: "number", min: 0, max: 1, arrayOk: !0, editType: "style", anim: !0, }, angle: { valType: "angle", dflt: 0, arrayOk: !0, editType: "plot", anim: !1, }, angleref: { valType: "enumerated", values: ["previous", "up"], dflt: "up", editType: "plot", anim: !1, }, standoff: { valType: "number", min: 0, dflt: 0, arrayOk: !0, editType: "plot", anim: !0, }, size: { valType: "number", min: 0, dflt: 6, arrayOk: !0, editType: "calc", anim: !0, }, maxdisplayed: { valType: "number", min: 0, dflt: 0, editType: "plot", }, sizeref: { valType: "number", dflt: 1, editType: "calc", }, sizemin: { valType: "number", min: 0, dflt: 0, editType: "calc", }, sizemode: { valType: "enumerated", values: ["diameter", "area"], dflt: "diameter", editType: "calc", }, line: h( { width: { valType: "number", min: 0, arrayOk: !0, editType: "style", anim: !0, }, editType: "calc", }, o("marker.line", { anim: !0 }), ), gradient: { type: { valType: "enumerated", values: [ "radial", "horizontal", "vertical", "none", ], arrayOk: !0, dflt: "none", editType: "calc", }, color: { valType: "color", arrayOk: !0, editType: "calc", }, editType: "calc", }, editType: "calc", }, o("marker", { anim: !0 }), ), selected: { marker: { opacity: { valType: "number", min: 0, max: 1, editType: "style", }, color: { valType: "color", editType: "style" }, size: { valType: "number", min: 0, editType: "style" }, editType: "style", }, textfont: { color: { valType: "color", editType: "style" }, editType: "style", }, editType: "style", }, unselected: { marker: { opacity: { valType: "number", min: 0, max: 1, editType: "style", }, color: { valType: "color", editType: "style" }, size: { valType: "number", min: 0, editType: "style" }, editType: "style", }, textfont: { color: { valType: "color", editType: "style" }, editType: "style", }, editType: "style", }, textposition: { valType: "enumerated", values: [ "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", ], dflt: "middle center", arrayOk: !0, editType: "calc", }, textfont: s({ editType: "calc", colorEditType: "style", arrayOk: !0, }), }; }, { "../../components/colorscale/attributes": 374, "../../components/drawing": 389, "../../components/drawing/attributes": 388, "../../lib/extend": 505, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/font_attributes": 594, "../../plots/template_attributes": 642, "./constants": 940, }, ], 937: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("../../plots/cartesian/axes"), o = t("../../plots/cartesian/align_period"), s = t("../../constants/numerical").BADNUM, l = t("./subtypes"), c = t("./colorscale_calc"), u = t("./arrays_to_calcdata"), f = t("./calc_selection"); function h(t, e, r, n, i, o, s) { var c = e._length, u = t._fullLayout, f = r._id, h = n._id, p = u._firstScatter[m(e)] === e.uid, d = (g(e, u, r, n) || {}).orientation, v = e.fill; (r._minDtick = 0), (n._minDtick = 0); var y = { padded: !0 }, x = { padded: !0 }; s && (y.ppad = x.ppad = s); var b = c < 2 || i[0] !== i[c - 1] || o[0] !== o[c - 1]; b && ("tozerox" === v || ("tonextx" === v && (p || "h" === d))) ? (y.tozero = !0) : (e.error_y || {}).visible || ("tonexty" !== v && "tozeroy" !== v && (l.hasMarkers(e) || l.hasText(e))) || ((y.padded = !1), (y.ppad = 0)), b && ("tozeroy" === v || ("tonexty" === v && (p || "v" === d))) ? (x.tozero = !0) : ("tonextx" !== v && "tozerox" !== v) || (x.padded = !1), f && (e._extremes[f] = a.findExtremes(r, i, y)), h && (e._extremes[h] = a.findExtremes(n, o, x)); } function p(t, e) { if (l.hasMarkers(t)) { var r, n = t.marker, o = 1.6 * (t.marker.sizeref || 1); if ( ((r = "area" === t.marker.sizemode ? function (t) { return Math.max(Math.sqrt((t || 0) / o), 3); } : function (t) { return Math.max((t || 0) / o, 3); }), i.isArrayOrTypedArray(n.size)) ) { var s = { type: "linear" }; a.setConvert(s); for ( var c = s.makeCalcdata(t.marker, "size"), u = new Array(e), f = 0; f < e; f++ ) u[f] = r(c[f]); return u; } return r(n.size); } } function d(t, e) { var r = m(e), n = t._firstScatter; n[r] || (n[r] = e.uid); } function m(t) { var e = t.stackgroup; return t.xaxis + t.yaxis + t.type + (e ? "-" + e : ""); } function g(t, e, r, n) { var i = t.stackgroup; if (i) { var a = e._scatterStackOpts[r._id + n._id][i], o = "v" === a.orientation ? n : r; return "linear" === o.type || "log" === o.type ? a : void 0; } } e.exports = { calc: function (t, e) { var r, l, m, v, y, x, b = t._fullLayout, _ = (e._xA = a.getFromId(t, e.xaxis || "x", "x")), w = (e._yA = a.getFromId(t, e.yaxis || "y", "y")), T = _.makeCalcdata(e, "x"), k = w.makeCalcdata(e, "y"), A = o(e, _, "x", T), M = o(e, w, "y", k), S = A.vals, E = M.vals, L = e._length, C = new Array(L), P = e.ids, I = g(e, b, _, w), O = !1; d(b, e); var z, D = "x", R = "y"; I ? (i.pushUnique(I.traceIndices, e._expandedIndex), (r = "v" === I.orientation) ? ((R = "s"), (z = "x")) : ((D = "s"), (z = "y")), (y = "interpolate" === I.stackgaps)) : h(t, e, _, w, S, E, p(e, L)); var F = !!e.xperiodalignment, B = !!e.yperiodalignment; for (l = 0; l < L; l++) { var N = (C[l] = {}), j = n(S[l]), U = n(E[l]); j && U ? ((N[D] = S[l]), (N[R] = E[l]), F && ((N.orig_x = T[l]), (N.xEnd = A.ends[l]), (N.xStart = A.starts[l])), B && ((N.orig_y = k[l]), (N.yEnd = M.ends[l]), (N.yStart = M.starts[l]))) : I && (r ? j : U) ? ((N[z] = r ? S[l] : E[l]), (N.gap = !0), y ? ((N.s = s), (O = !0)) : (N.s = 0)) : (N[D] = N[R] = s), P && (N.id = String(P[l])); } if ((u(C, e), c(t, e), f(C, e), I)) { for (l = 0; l < C.length; ) C[l][z] === s ? C.splice(l, 1) : l++; if ( (i.sort(C, function (t, e) { return t[z] - e[z] || t.i - e.i; }), O) ) { for (l = 0; l < C.length - 1 && C[l].gap; ) l++; for ( (x = C[l].s) || (x = C[l].s = 0), m = 0; m < l; m++ ) C[m].s = x; for (v = C.length - 1; v > l && C[v].gap; ) v--; for (x = C[v].s, m = C.length - 1; m > v; m--) C[m].s = x; for (; l < v; ) if (C[++l].gap) { for (m = l + 1; C[m].gap; ) m++; for ( var V = C[l - 1][z], H = C[l - 1].s, q = (C[m].s - H) / (C[m][z] - V); l < m; ) (C[l].s = H + (C[l][z] - V) * q), l++; } } } return C; }, calcMarkerSize: p, calcAxisExpansion: h, setFirstScatter: d, getStackOpts: g, }; }, { "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/align_period": 563, "../../plots/cartesian/axes": 566, "./arrays_to_calcdata": 935, "./calc_selection": 938, "./colorscale_calc": 939, "./subtypes": 961, "fast-isnumeric": 190, }, ], 938: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e) { n.isArrayOrTypedArray(e.selectedpoints) && n.tagSelected(t, e); }; }, { "../../lib": 515 }, ], 939: [ function (t, e, r) { "use strict"; var n = t( "../../components/colorscale/helpers", ).hasColorscale, i = t("../../components/colorscale/calc"), a = t("./subtypes"); e.exports = function (t, e) { a.hasLines(e) && n(e, "line") && i(t, e, { vals: e.line.color, containerStr: "line", cLetter: "c", }), a.hasMarkers(e) && (n(e, "marker") && i(t, e, { vals: e.marker.color, containerStr: "marker", cLetter: "c", }), n(e, "marker.line") && i(t, e, { vals: e.marker.line.color, containerStr: "marker.line", cLetter: "c", })); }; }, { "../../components/colorscale/calc": 375, "../../components/colorscale/helpers": 378, "./subtypes": 961, }, ], 940: [ function (t, e, r) { "use strict"; e.exports = { PTS_LINESONLY: 20, minTolerance: 0.2, toleranceGrowth: 10, maxScreensAway: 20, eventDataKeys: [], }; }, {}, ], 941: [ function (t, e, r) { "use strict"; var n = t("./calc"); function i(t, e, r, n, i, a, o) { i[n] = !0; var s = { i: null, gap: !0, s: 0 }; if ( ((s[o] = r), t.splice(e, 0, s), e && r === t[e - 1][o]) ) { var l = t[e - 1]; (s.s = l.s), (s.i = l.i), (s.gap = l.gap); } else a && (s.s = (function (t, e, r, n) { var i = t[e - 1], a = t[e + 1]; return a ? i ? i.s + ((a.s - i.s) * (r - i[n])) / (a[n] - i[n]) : a.s : i.s; })(t, e, r, o)); e || ((t[0].t = t[1].t), (t[0].trace = t[1].trace), delete t[1].t, delete t[1].trace); } e.exports = function (t, e) { var r = e.xaxis, a = e.yaxis, o = r._id + a._id, s = t._fullLayout._scatterStackOpts[o]; if (s) { var l, c, u, f, h, p, d, m, g, v, y, x, b, _, w, T = t.calcdata; for (var k in s) { var A = (v = s[k]).traceIndices; if (A.length) { for ( y = "interpolate" === v.stackgaps, x = v.groupnorm, "v" === v.orientation ? ((b = "x"), (_ = "y")) : ((b = "y"), (_ = "x")), w = new Array(A.length), l = 0; l < w.length; l++ ) w[l] = !1; p = T[A[0]]; var M = new Array(p.length); for (l = 0; l < p.length; l++) M[l] = p[l][b]; for (l = 1; l < A.length; l++) { for (h = T[A[l]], c = u = 0; c < h.length; c++) { for (d = h[c][b]; d > M[u] && u < M.length; u++) i(h, c, M[u], l, w, y, b), c++; if (d !== M[u]) { for (f = 0; f < l; f++) i(T[A[f]], u, d, f, w, y, b); M.splice(u, 0, d); } u++; } for (; u < M.length; u++) i(h, c, M[u], l, w, y, b), c++; } var S = M.length; for (c = 0; c < p.length; c++) { for (m = p[c][_] = p[c].s, l = 1; l < A.length; l++) ((h = T[A[l]])[0].trace._rawLength = h[0].trace._length), (h[0].trace._length = S), (m += h[c].s), (h[c][_] = m); if (x) for ( g = ("fraction" === x ? m : m / 100) || 1, l = 0; l < A.length; l++ ) { var E = T[A[l]][c]; (E[_] /= g), (E.sNorm = E.s / g); } } for (l = 0; l < A.length; l++) { var L = (h = T[A[l]])[0].trace, C = n.calcMarkerSize(L, L._rawLength), P = Array.isArray(C); if ((C && w[l]) || P) { var I = C; for (C = new Array(S), c = 0; c < S; c++) C[c] = h[c].gap ? 0 : P ? I[h[c].i] : I; } var O = new Array(S), z = new Array(S); for (c = 0; c < S; c++) (O[c] = h[c].x), (z[c] = h[c].y); n.calcAxisExpansion(t, L, r, a, O, z, C), (h[0].t.orientation = v.orientation); } } } } }; }, { "./calc": 937 }, ], 942: [ function (t, e, r) { "use strict"; e.exports = function (t) { for (var e = 0; e < t.length; e++) { var r = t[e]; if ("scatter" === r.type) { var n = r.fill; if ( "none" !== n && "toself" !== n && ((r.opacity = void 0), "tonexty" === n || "tonextx" === n) ) for (var i = e - 1; i >= 0; i--) { var a = t[i]; if ( "scatter" === a.type && a.xaxis === r.xaxis && a.yaxis === r.yaxis ) { a.opacity = void 0; break; } } } } }; }, {}, ], 943: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../registry"), a = t("./attributes"), o = t("./constants"), s = t("./subtypes"), l = t("./xy_defaults"), c = t("./period_defaults"), u = t("./stack_defaults"), f = t("./marker_defaults"), h = t("./line_defaults"), p = t("./line_shape_defaults"), d = t("./text_defaults"), m = t("./fillcolor_defaults"), g = t("../../lib").coercePattern; e.exports = function (t, e, r, v) { function y(r, i) { return n.coerce(t, e, a, r, i); } var x = l(t, e, v, y); if ((x || (e.visible = !1), e.visible)) { c(t, e, v, y), y("xhoverformat"), y("yhoverformat"); var b = u(t, e, v, y), _ = !b && x < o.PTS_LINESONLY ? "lines+markers" : "lines"; y("text"), y("hovertext"), y("mode", _), s.hasLines(e) && (h(t, e, r, v, y, { backoff: !0 }), p(t, e, y), y("connectgaps"), y("line.simplify")), s.hasMarkers(e) && f(t, e, r, v, y, { gradient: !0 }), s.hasText(e) && (y("texttemplate"), d(t, e, v, y)); var w = []; (s.hasMarkers(e) || s.hasText(e)) && (y("cliponaxis"), y("marker.maxdisplayed"), w.push("points")), y("fill", b ? b.fillDflt : "none"), "none" !== e.fill && (m(t, e, r, y), s.hasLines(e) || p(t, e, y), g(y, "fillpattern", e.fillcolor, !1)); var T = (e.line || {}).color, k = (e.marker || {}).color; ("tonext" !== e.fill && "toself" !== e.fill) || w.push("fills"), y("hoveron", w.join("+") || "points"), "fills" !== e.hoveron && y("hovertemplate"); var A = i.getComponentMethod( "errorbars", "supplyDefaults", ); A(t, e, T || k || r, { axis: "y" }), A(t, e, T || k || r, { axis: "x", inherit: "y" }), n.coerceSelectionMarkerOpacity(e, y); } }; }, { "../../lib": 515, "../../registry": 647, "./attributes": 936, "./constants": 940, "./fillcolor_defaults": 944, "./line_defaults": 949, "./line_shape_defaults": 951, "./marker_defaults": 955, "./period_defaults": 956, "./stack_defaults": 959, "./subtypes": 961, "./text_defaults": 962, "./xy_defaults": 963, }, ], 944: [ function (t, e, r) { "use strict"; var n = t("../../components/color"), i = t("../../lib").isArrayOrTypedArray; e.exports = function (t, e, r, a) { var o = !1; if (e.marker) { var s = e.marker.color, l = (e.marker.line || {}).color; s && !i(s) ? (o = s) : l && !i(l) && (o = l); } a( "fillcolor", n.addOpacity((e.line || {}).color || o || r, 0.5), ); }; }, { "../../components/color": 367, "../../lib": 515 }, ], 945: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"); e.exports = function (t, e, r) { var i = {}, a = { _fullLayout: r }, o = n.getFromTrace(a, e, "x"), s = n.getFromTrace(a, e, "y"); return ( (i.xLabel = n.tickText(o, o.c2l(t.x), !0).text), (i.yLabel = n.tickText(s, s.c2l(t.y), !0).text), i ); }; }, { "../../plots/cartesian/axes": 566 }, ], 946: [ function (t, e, r) { "use strict"; var n = t("../../components/color"), i = t("./subtypes"); e.exports = function (t, e) { var r, a; if ("lines" === t.mode) return (r = t.line.color) && n.opacity(r) ? r : t.fillcolor; if ("none" === t.mode) return t.fill ? t.fillcolor : ""; var o = e.mcc || (t.marker || {}).color, s = e.mlcc || ((t.marker || {}).line || {}).color; return (a = o && n.opacity(o) ? o : s && n.opacity(s) && (e.mlw || ((t.marker || {}).line || {}).width) ? s : "") ? n.opacity(a) < 0.3 ? n.addOpacity(a, 0.3) : a : (r = (t.line || {}).color) && n.opacity(r) && i.hasLines(t) && t.line.width ? r : t.fillcolor; }; }, { "../../components/color": 367, "./subtypes": 961 }, ], 947: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/fx"), a = t("../../registry"), o = t("./get_trace_color"), s = t("../../components/color"), l = n.fillText; e.exports = function (t, e, r, c) { var u = t.cd, f = u[0].trace, h = t.xa, p = t.ya, d = h.c2p(e), m = p.c2p(r), g = [d, m], v = f.hoveron || "", y = -1 !== f.mode.indexOf("markers") ? 3 : 0.5, x = !!f.xperiodalignment, b = !!f.yperiodalignment; if (-1 !== v.indexOf("points")) { var _ = function (t) { var e = Math.max(y, t.mrc || 0), r = h.c2p(t.x) - d, n = p.c2p(t.y) - m; return Math.max( Math.sqrt(r * r + n * n) - e, 1 - y / e, ); }, w = i.getDistanceFunction( c, function (t) { if (x) { var e = h.c2p(t.xStart), r = h.c2p(t.xEnd); return d >= Math.min(e, r) && d <= Math.max(e, r) ? 0 : 1 / 0; } var n = Math.max(3, t.mrc || 0), i = 1 - 1 / n, a = Math.abs(h.c2p(t.x) - d); return a < n ? (i * a) / n : a - n + i; }, function (t) { if (b) { var e = p.c2p(t.yStart), r = p.c2p(t.yEnd); return m >= Math.min(e, r) && m <= Math.max(e, r) ? 0 : 1 / 0; } var n = Math.max(3, t.mrc || 0), i = 1 - 1 / n, a = Math.abs(p.c2p(t.y) - m); return a < n ? (i * a) / n : a - n + i; }, _, ); if ((i.getClosest(u, w, t), !1 !== t.index)) { var T = u[t.index], k = h.c2p(T.x, !0), A = p.c2p(T.y, !0), M = T.mrc || 1; t.index = T.i; var S = u[0].t.orientation, E = S && (T.sNorm || T.s), L = "h" === S ? E : void 0 !== T.orig_x ? T.orig_x : T.x, C = "v" === S ? E : void 0 !== T.orig_y ? T.orig_y : T.y; return ( n.extendFlat(t, { color: o(f, T), x0: k - M, x1: k + M, xLabelVal: L, y0: A - M, y1: A + M, yLabelVal: C, spikeDistance: _(T), hovertemplate: f.hovertemplate, }), l(T, f, t), a.getComponentMethod("errorbars", "hoverInfo")( T, f, t, ), [t] ); } } if (-1 !== v.indexOf("fills") && f._polygons) { var P, I, O, z, D, R, F, B, N, j = f._polygons, U = [], V = !1, H = 1 / 0, q = -1 / 0, G = 1 / 0, Y = -1 / 0; for (P = 0; P < j.length; P++) (O = j[P]).contains(g) && ((V = !V), U.push(O), (G = Math.min(G, O.ymin)), (Y = Math.max(Y, O.ymax))); if (V) { var W = ((G = Math.max(G, 0)) + (Y = Math.min(Y, p._length))) / 2; for (P = 0; P < U.length; P++) for (z = U[P].pts, I = 1; I < z.length; I++) (B = z[I - 1][1]) > W != (N = z[I][1]) >= W && ((R = z[I - 1][0]), (F = z[I][0]), N - B && ((D = R + ((F - R) * (W - B)) / (N - B)), (H = Math.min(H, D)), (q = Math.max(q, D)))); (H = Math.max(H, 0)), (q = Math.min(q, h._length)); var Z = s.defaultLine; return ( s.opacity(f.fillcolor) ? (Z = f.fillcolor) : s.opacity((f.line || {}).color) && (Z = f.line.color), n.extendFlat(t, { distance: t.maxHoverDistance, x0: H, x1: q, y0: W, y1: W, color: Z, hovertemplate: !1, }), delete t.index, f.text && !Array.isArray(f.text) ? (t.text = String(f.text)) : (t.text = f.name), [t] ); } } }; }, { "../../components/color": 367, "../../components/fx": 407, "../../lib": 515, "../../registry": 647, "./get_trace_color": 946, }, ], 948: [ function (t, e, r) { "use strict"; var n = t("./subtypes"); e.exports = { hasLines: n.hasLines, hasMarkers: n.hasMarkers, hasText: n.hasText, isBubble: n.isBubble, attributes: t("./attributes"), supplyDefaults: t("./defaults"), crossTraceDefaults: t("./cross_trace_defaults"), calc: t("./calc").calc, crossTraceCalc: t("./cross_trace_calc"), arraysToCalcdata: t("./arrays_to_calcdata"), plot: t("./plot"), colorbar: t("./marker_colorbar"), formatLabels: t("./format_labels"), style: t("./style").style, styleOnSelect: t("./style").styleOnSelect, hoverPoints: t("./hover"), selectPoints: t("./select"), animatable: !0, moduleType: "trace", name: "scatter", basePlotModule: t("../../plots/cartesian"), categories: [ "cartesian", "svg", "symbols", "errorBarsOK", "showLegend", "scatter-like", "zoomScale", ], meta: {}, }; }, { "../../plots/cartesian": 578, "./arrays_to_calcdata": 935, "./attributes": 936, "./calc": 937, "./cross_trace_calc": 941, "./cross_trace_defaults": 942, "./defaults": 943, "./format_labels": 945, "./hover": 947, "./marker_colorbar": 954, "./plot": 957, "./select": 958, "./style": 960, "./subtypes": 961, }, ], 949: [ function (t, e, r) { "use strict"; var n = t("../../lib").isArrayOrTypedArray, i = t("../../components/colorscale/helpers").hasColorscale, a = t("../../components/colorscale/defaults"); e.exports = function (t, e, r, o, s, l) { l || (l = {}); var c = (t.marker || {}).color; (s("line.color", r), i(t, "line")) ? a(t, e, o, s, { prefix: "line.", cLetter: "c" }) : s("line.color", (!n(c) && c) || r); s("line.width"), l.noDash || s("line.dash"), l.backoff && s("line.backoff"); }; }, { "../../components/colorscale/defaults": 377, "../../components/colorscale/helpers": 378, "../../lib": 515, }, ], 950: [ function (t, e, r) { "use strict"; var n = t("../../components/drawing"), i = t("../../constants/numerical"), a = i.BADNUM, o = i.LOG_CLIP, s = o + 0.5, l = o - 0.5, c = t("../../lib"), u = c.segmentsIntersect, f = c.constrain, h = t("./constants"); e.exports = function (t, e) { var r, i, o, p, d, m, g, v, y, x, b, _, w, T, k, A, M, S, E = e.trace || {}, L = e.xaxis, C = e.yaxis, P = "log" === L.type, I = "log" === C.type, O = L._length, z = C._length, D = e.backoff, R = E.marker, F = e.connectGaps, B = e.baseTolerance, N = e.shape, j = "linear" === N, U = E.fill && "none" !== E.fill, V = [], H = h.minTolerance, q = t.length, G = new Array(q), Y = 0; function W(r) { var n = t[r]; if (!n) return !1; var i = e.linearized ? L.l2p(n.x) : L.c2p(n.x), o = e.linearized ? C.l2p(n.y) : C.c2p(n.y); if (i === a) { if ((P && (i = L.c2p(n.x, !0)), i === a)) return !1; I && o === a && (i *= Math.abs( (L._m * z * (L._m > 0 ? s : l)) / (C._m * O * (C._m > 0 ? s : l)), )), (i *= 1e3); } if (o === a) { if ((I && (o = C.c2p(n.y, !0)), o === a)) return !1; o *= 1e3; } return [i, o]; } function Z(t, e, r, n) { var i = r - t, a = n - e, o = 0.5 - t, s = 0.5 - e, l = i * i + a * a, c = i * o + a * s; if (c > 0 && c < l) { var u = o * a - s * i; if (u * u < l) return !0; } } function X(t, e) { var r = t[0] / O, n = t[1] / z, i = Math.max(0, -r, r - 1, -n, n - 1); return ( i && void 0 !== M && Z(r, n, M, S) && (i = 0), i && e && Z(r, n, e[0] / O, e[1] / z) && (i = 0), (1 + h.toleranceGrowth * i) * B ); } function J(t, e) { var r = t[0] - e[0], n = t[1] - e[1]; return Math.sqrt(r * r + n * n); } var K, Q, $, tt, et, rt, nt, it = h.maxScreensAway, at = -O * it, ot = O * (1 + it), st = -z * it, lt = z * (1 + it), ct = [ [at, st, ot, st], [ot, st, ot, lt], [ot, lt, at, lt], [at, lt, at, st], ]; function ut(t) { if (t[0] < at || t[0] > ot || t[1] < st || t[1] > lt) return [f(t[0], at, ot), f(t[1], st, lt)]; } function ft(t, e) { return ( (t[0] === e[0] && (t[0] === at || t[0] === ot)) || (t[1] === e[1] && (t[1] === st || t[1] === lt)) || void 0 ); } function ht(t, e, r) { return function (n, i) { var a = ut(n), o = ut(i), s = []; if (a && o && ft(a, o)) return s; a && s.push(a), o && s.push(o); var l = 2 * c.constrain((n[t] + i[t]) / 2, e, r) - ((a || n)[t] + (o || i)[t]); l && ((a && o ? (l > 0 == a[t] > o[t] ? a : o) : a || o)[ t ] += l); return s; }; } function pt(t) { var e = t[0], r = t[1], n = e === G[Y - 1][0], i = r === G[Y - 1][1]; if (!n || !i) if (Y > 1) { var a = e === G[Y - 2][0], o = r === G[Y - 2][1]; n && (e === at || e === ot) && a ? o ? Y-- : (G[Y - 1] = t) : i && (r === st || r === lt) && o ? a ? Y-- : (G[Y - 1] = t) : (G[Y++] = t); } else G[Y++] = t; } function dt(t) { G[Y - 1][0] !== t[0] && G[Y - 1][1] !== t[1] && pt([$, tt]), pt(t), (et = null), ($ = tt = 0); } "linear" === N || "spline" === N ? (nt = function (t, e) { for (var r = [], n = 0, i = 0; i < 4; i++) { var a = ct[i], o = u( t[0], t[1], e[0], e[1], a[0], a[1], a[2], a[3], ); o && (!n || Math.abs(o.x - r[0][0]) > 1 || Math.abs(o.y - r[0][1]) > 1) && ((o = [o.x, o.y]), n && J(o, t) < J(r[0], t) ? r.unshift(o) : r.push(o), n++); } return r; }) : "hv" === N || "vh" === N ? (nt = function (t, e) { var r = [], n = ut(t), i = ut(e); return ( (n && i && ft(n, i)) || (n && r.push(n), i && r.push(i)), r ); }) : "hvh" === N ? (nt = ht(0, at, ot)) : "vhv" === N && (nt = ht(1, st, lt)); var mt = c.isArrayOrTypedArray(R); function gt(e) { if ( (e && D && ((e.i = r), (e.d = t), (e.trace = E), (e.marker = mt ? R[e.i] : R), (e.backoff = D)), (M = e[0] / O), (S = e[1] / z), (K = e[0] < at ? at : e[0] > ot ? ot : 0), (Q = e[1] < st ? st : e[1] > lt ? lt : 0), K || Q) ) { if (Y) if (et) { var n = nt(et, e); n.length > 1 && (dt(n[0]), (G[Y++] = n[1])); } else (rt = nt(G[Y - 1], e)[0]), (G[Y++] = rt); else G[Y++] = [K || e[0], Q || e[1]]; var i = G[Y - 1]; K && Q && (i[0] !== K || i[1] !== Q) ? (et && ($ !== K && tt !== Q ? pt( $ && tt ? ((a = et), (s = (o = e)[0] - a[0]), (l = (o[1] - a[1]) / s), (a[1] * o[0] - o[1] * a[0]) / s > 0 ? [l > 0 ? at : ot, lt] : [l > 0 ? ot : at, st]) : [$ || K, tt || Q], ) : $ && tt && pt([$, tt])), pt([K, Q])) : $ - K && tt - Q && pt([K || $, Q || tt]), (et = e), ($ = K), (tt = Q); } else et && dt(nt(et, e)[0]), (G[Y++] = e); var a, o, s, l; } for (r = 0; r < q; r++) if ((i = W(r))) { for (Y = 0, et = null, gt(i), r++; r < q; r++) { if (!(p = W(r))) { if (F) continue; break; } if (j && e.simplify) { var vt = W(r + 1); if ( ((x = J(p, i)), (U && (0 === Y || Y === q - 1)) || !(x < X(p, vt) * H)) ) { for ( v = [(p[0] - i[0]) / x, (p[1] - i[1]) / x], d = i, b = x, _ = T = k = 0, g = !1, o = p, r++; r < t.length; r++ ) { if (((m = vt), (vt = W(r + 1)), !m)) { if (F) continue; break; } if ( ((A = (y = [m[0] - i[0], m[1] - i[1]])[0] * v[1] - y[1] * v[0]), (T = Math.min(T, A)), (k = Math.max(k, A)) - T > X(m, vt)) ) break; (o = m), (w = y[0] * v[0] + y[1] * v[1]) > b ? ((b = w), (p = m), (g = !1)) : w < _ && ((_ = w), (d = m), (g = !0)); } if ( (g ? (gt(p), o !== d && gt(d)) : (d !== i && gt(d), o !== p && gt(p)), gt(o), r >= t.length || !m) ) break; gt(m), (i = m); } } else gt(p); } et && pt([$ || et[0], tt || et[1]]), V.push(G.slice(0, Y)); } var yt = N.slice(N.length - 1); if (D && "h" !== yt && "v" !== yt) { for ( var xt = !1, bt = -1, _t = [], wt = 0; wt < V.length; wt++ ) for (var Tt = 0; Tt < V[wt].length - 1; Tt++) { var kt = V[wt][Tt], At = V[wt][Tt + 1], Mt = n.applyBackoff(At, kt); (Mt[0] === At[0] && Mt[1] === At[1]) || (xt = !0), _t[bt + 1] || (_t[++bt] = [kt, [Mt[0], Mt[1]]]); } return xt ? _t : V; } return V; }; }, { "../../components/drawing": 389, "../../constants/numerical": 491, "../../lib": 515, "./constants": 940, }, ], 951: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { "spline" === r("line.shape") && r("line.smoothing"); }; }, {}, ], 952: [ function (t, e, r) { "use strict"; var n = { tonextx: 1, tonexty: 1, tonext: 1 }; e.exports = function (t, e, r) { var i, a, o, s, l, c = {}, u = !1, f = -1, h = 0, p = -1; for (a = 0; a < r.length; a++) (o = (i = r[a][0].trace).stackgroup || "") ? o in c ? (l = c[o]) : ((l = c[o] = h), h++) : i.fill in n && p >= 0 ? (l = p) : ((l = p = h), h++), l < f && (u = !0), (i._groupIndex = f = l); var d = r.slice(); u && d.sort(function (t, e) { var r = t[0].trace, n = e[0].trace; return ( r._groupIndex - n._groupIndex || r.index - n.index ); }); var m = {}; for (a = 0; a < d.length; a++) (o = (i = d[a][0].trace).stackgroup || ""), !0 === i.visible ? ((i._nexttrace = null), i.fill in n && ((s = m[o]), (i._prevtrace = s || null), s && (s._nexttrace = i)), (i._ownfill = i.fill && ("tozero" === i.fill.substr(0, 6) || "toself" === i.fill || ("to" === i.fill.substr(0, 2) && !i._prevtrace))), (m[o] = i)) : (i._prevtrace = i._nexttrace = i._ownfill = null); return d; }; }, {}, ], 953: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"); e.exports = function (t, e) { e || (e = 2); var r = t.marker, i = r.sizeref || 1, a = r.sizemin || 0, o = "area" === r.sizemode ? function (t) { return Math.sqrt(t / i); } : function (t) { return t / i; }; return function (t) { var r = o(t / e); return n(r) && r > 0 ? Math.max(r, a) : 0; }; }; }, { "fast-isnumeric": 190 }, ], 954: [ function (t, e, r) { "use strict"; e.exports = { container: "marker", min: "cmin", max: "cmax" }; }, {}, ], 955: [ function (t, e, r) { "use strict"; var n = t("../../components/color"), i = t("../../components/colorscale/helpers").hasColorscale, a = t("../../components/colorscale/defaults"), o = t("./subtypes"); e.exports = function (t, e, r, s, l, c) { var u = o.isBubble(t), f = (t.line || {}).color; ((c = c || {}), f && (r = f), l("marker.symbol"), l("marker.opacity", u ? 0.7 : 1), l("marker.size"), c.noAngle || (l("marker.angle"), c.noAngleRef || l("marker.angleref"), c.noStandOff || l("marker.standoff")), l("marker.color", r), i(t, "marker") && a(t, e, s, l, { prefix: "marker.", cLetter: "c" }), c.noSelect || (l("selected.marker.color"), l("unselected.marker.color"), l("selected.marker.size"), l("unselected.marker.size")), c.noLine || (l( "marker.line.color", f && !Array.isArray(f) && e.marker.color !== f ? f : u ? n.background : n.defaultLine, ), i(t, "marker.line") && a(t, e, s, l, { prefix: "marker.line.", cLetter: "c" }), l("marker.line.width", u ? 1 : 0)), u && (l("marker.sizeref"), l("marker.sizemin"), l("marker.sizemode")), c.gradient) && "none" !== l("marker.gradient.type") && l("marker.gradient.color"); }; }, { "../../components/color": 367, "../../components/colorscale/defaults": 377, "../../components/colorscale/helpers": 378, "./subtypes": 961, }, ], 956: [ function (t, e, r) { "use strict"; var n = t("../../lib").dateTick0, i = t("../../constants/numerical").ONEWEEK; function a(t, e) { return n(e, t % i == 0 ? 1 : 0); } e.exports = function (t, e, r, n, i) { if ((i || (i = { x: !0, y: !0 }), i.x)) { var o = n("xperiod"); o && (n("xperiod0", a(o, e.xcalendar)), n("xperiodalignment")); } if (i.y) { var s = n("yperiod"); s && (n("yperiod0", a(s, e.ycalendar)), n("yperiodalignment")); } }; }, { "../../constants/numerical": 491, "../../lib": 515 }, ], 957: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../registry"), a = t("../../lib"), o = a.ensureSingle, s = a.identity, l = t("../../components/drawing"), c = t("./subtypes"), u = t("./line_points"), f = t("./link_traces"), h = t("../../lib/polygon").tester; function p(t, e, r, f, p, d, m) { var g; !(function (t, e, r, i, o) { var s = r.xaxis, l = r.yaxis, u = n.extent(a.simpleMap(s.range, s.r2c)), f = n.extent(a.simpleMap(l.range, l.r2c)), h = i[0].trace; if (!c.hasMarkers(h)) return; var p = h.marker.maxdisplayed; if (0 === p) return; var d = i.filter(function (t) { return ( t.x >= u[0] && t.x <= u[1] && t.y >= f[0] && t.y <= f[1] ); }), m = Math.ceil(d.length / p), g = 0; o.forEach(function (t, r) { var n = t[0].trace; c.hasMarkers(n) && n.marker.maxdisplayed > 0 && r < e && g++; }); var v = Math.round( (g * m) / 3 + (Math.floor(g / 3) * m) / 7.1, ); i.forEach(function (t) { delete t.vis; }), d.forEach(function (t, e) { 0 === Math.round((e + v) % m) && (t.vis = !0); }); })(0, e, r, f, p); var v = !!m && m.duration > 0; function y(t) { return v ? t.transition() : t; } var x = r.xaxis, b = r.yaxis, _ = f[0].trace, w = _.line, T = n.select(d), k = o(T, "g", "errorbars"), A = o(T, "g", "lines"), M = o(T, "g", "points"), S = o(T, "g", "text"); if ( (i.getComponentMethod("errorbars", "plot")(t, k, r, m), !0 === _.visible) ) { var E, L; y(T).style("opacity", _.opacity); var C = _.fill.charAt(_.fill.length - 1); "x" !== C && "y" !== C && (C = ""), (f[0][r.isRangePlot ? "nodeRangePlot3" : "node3"] = T); var P, I, O = "", z = [], D = _._prevtrace; D && ((O = D._prevRevpath || ""), (L = D._nextFill), (z = D._polygons)); var R, F, B, N, j, U, V, H = "", q = "", G = [], Y = a.noop; if ( ((E = _._ownFill), c.hasLines(_) || "none" !== _.fill) ) { for ( L && L.datum(f), -1 !== ["hv", "vh", "hvh", "vhv"].indexOf(w.shape) ? ((R = l.steps(w.shape)), (F = l.steps( w.shape.split("").reverse().join(""), ))) : (R = F = "spline" === w.shape ? function (t) { var e = t[t.length - 1]; return t.length > 1 && t[0][0] === e[0] && t[0][1] === e[1] ? l.smoothclosed( t.slice(1), w.smoothing, ) : l.smoothopen(t, w.smoothing); } : function (t) { return "M" + t.join("L"); }), B = function (t) { return F(t.reverse()); }, G = u(f, { xaxis: x, yaxis: b, trace: _, connectGaps: _.connectgaps, baseTolerance: Math.max(w.width || 1, 3) / 4, shape: w.shape, backoff: w.backoff, simplify: w.simplify, fill: _.fill, }), V = _._polygons = new Array(G.length), g = 0; g < G.length; g++ ) _._polygons[g] = h(G[g]); G.length && ((N = G[0][0]), (U = (j = G[G.length - 1])[j.length - 1])), (Y = function (t) { return function (e) { if ( ((P = R(e)), (I = B(e)), H ? C ? ((H += "L" + P.substr(1)), (q = I + "L" + q.substr(1))) : ((H += "Z" + P), (q = I + "Z" + q)) : ((H = P), (q = I)), c.hasLines(_) && e.length > 1) ) { var r = n.select(this); if ((r.datum(f), t)) y( r .style("opacity", 0) .attr("d", P) .call(l.lineGroupStyle), ).style("opacity", 1); else { var i = y(r); i.attr("d", P), l.singleLineStyle(f, i); } } }; }); } var W = A.selectAll(".js-line").data(G); y(W.exit()).style("opacity", 0).remove(), W.each(Y(!1)), W.enter() .append("path") .classed("js-line", !0) .style("vector-effect", "non-scaling-stroke") .call(l.lineGroupStyle) .each(Y(!0)), l.setClipUrl(W, r.layerClipId, t), G.length ? (E ? (E.datum(f), N && U && (C ? ("y" === C ? (N[1] = U[1] = b.c2p(0, !0)) : "x" === C && (N[0] = U[0] = x.c2p(0, !0)), y(E) .attr( "d", "M" + U + "L" + N + "L" + H.substr(1), ) .call(l.singleFillStyle, t)) : y(E) .attr("d", H + "Z") .call(l.singleFillStyle, t))) : L && ("tonext" === _.fill.substr(0, 6) && H && O ? ("tonext" === _.fill ? y(L) .attr("d", H + "Z" + O + "Z") .call(l.singleFillStyle, t) : y(L) .attr( "d", H + "L" + O.substr(1) + "Z", ) .call(l.singleFillStyle, t), (_._polygons = _._polygons.concat(z))) : (X(L), (_._polygons = null))), (_._prevRevpath = q), (_._prevPolygons = V)) : (E ? X(E) : L && X(L), (_._polygons = _._prevRevpath = _._prevPolygons = null)), M.datum(f), S.datum(f), (function (e, i, a) { var o, u = a[0].trace, f = c.hasMarkers(u), h = c.hasText(u), p = tt(u), d = et, m = et; if (f || h) { var g = s, _ = u.stackgroup, w = _ && "infer zero" === t._fullLayout._scatterStackOpts[ x._id + b._id ][_].stackgaps; u.marker.maxdisplayed || u._needsCull ? (g = w ? K : J) : _ && !w && (g = Q), f && (d = g), h && (m = g); } var T, k = (o = e.selectAll("path.point").data(d, p)) .enter() .append("path") .classed("point", !0); v && k .call(l.pointStyle, u, t) .call(l.translatePoints, x, b) .style("opacity", 0) .transition() .style("opacity", 1), o.order(), f && (T = l.makePointStyleFns(u)), o.each(function (e) { var i = n.select(this), a = y(i); l.translatePoint(e, a, x, b) ? (l.singlePointStyle(e, a, u, T, t), r.layerClipId && l.hideOutsideRangePoint( e, a, x, b, u.xcalendar, u.ycalendar, ), u.customdata && i.classed( "plotly-customdata", null !== e.data && void 0 !== e.data, )) : a.remove(); }), v ? o .exit() .transition() .style("opacity", 0) .remove() : o.exit().remove(), (o = i.selectAll("g").data(m, p)) .enter() .append("g") .classed("textpoint", !0) .append("text"), o.order(), o.each(function (t) { var e = n.select(this), i = y(e.select("text")); l.translatePoint(t, i, x, b) ? r.layerClipId && l.hideOutsideRangePoint( t, e, x, b, u.xcalendar, u.ycalendar, ) : e.remove(); }), o .selectAll("text") .call(l.textPointStyle, u, t) .each(function (t) { var e = x.c2p(t.x), r = b.c2p(t.y); n.select(this) .selectAll("tspan.line") .each(function () { y(n.select(this)).attr({ x: e, y: r }); }); }), o.exit().remove(); })(M, S, f); var Z = !1 === _.cliponaxis ? null : r.layerClipId; l.setClipUrl(M, Z, t), l.setClipUrl(S, Z, t); } function X(t) { y(t).attr("d", "M0,0Z"); } function J(t) { return t.filter(function (t) { return !t.gap && t.vis; }); } function K(t) { return t.filter(function (t) { return t.vis; }); } function Q(t) { return t.filter(function (t) { return !t.gap; }); } function $(t) { return t.id; } function tt(t) { if (t.ids) return $; } function et() { return !1; } } e.exports = function (t, e, r, i, a, c) { var u, h, d = !a, m = !!a && a.duration > 0, g = f(t, e, r); ((u = i.selectAll("g.trace").data(g, function (t) { return t[0].trace.uid; })) .enter() .append("g") .attr("class", function (t) { return "trace scatter trace" + t[0].trace.uid; }) .style("stroke-miterlimit", 2), u.order(), (function (t, e, r) { e.each(function (e) { var i = o(n.select(this), "g", "fills"); l.setClipUrl(i, r.layerClipId, t); var a = e[0].trace, c = []; a._ownfill && c.push("_ownFill"), a._nexttrace && c.push("_nextFill"); var u = i.selectAll("g").data(c, s); u.enter().append("g"), u .exit() .each(function (t) { a[t] = null; }) .remove(), u.order().each(function (t) { a[t] = o(n.select(this), "path", "js-fill"); }); }); })(t, u, e), m) ? (c && (h = c()), n .transition() .duration(a.duration) .ease(a.easing) .each("end", function () { h && h(); }) .each("interrupt", function () { h && h(); }) .each(function () { i.selectAll("g.trace").each(function (r, n) { p(t, n, e, r, g, this, a); }); })) : u.each(function (r, n) { p(t, n, e, r, g, this, a); }); d && u.exit().remove(), i.selectAll("path:not([d])").remove(); }; }, { "../../components/drawing": 389, "../../lib": 515, "../../lib/polygon": 527, "../../registry": 647, "./line_points": 950, "./link_traces": 952, "./subtypes": 961, "@plotly/d3": 58, }, ], 958: [ function (t, e, r) { "use strict"; var n = t("./subtypes"); e.exports = function (t, e) { var r, i, a, o, s = t.cd, l = t.xaxis, c = t.yaxis, u = [], f = s[0].trace; if (!n.hasMarkers(f) && !n.hasText(f)) return []; if (!1 === e) for (r = 0; r < s.length; r++) s[r].selected = 0; else for (r = 0; r < s.length; r++) (i = s[r]), (a = l.c2p(i.x)), (o = c.c2p(i.y)), null !== i.i && e.contains([a, o], !1, r, t) ? (u.push({ pointNumber: i.i, x: l.c2d(i.x), y: c.c2d(i.y), }), (i.selected = 1)) : (i.selected = 0); return u; }; }, { "./subtypes": 961 }, ], 959: [ function (t, e, r) { "use strict"; var n = ["orientation", "groupnorm", "stackgaps"]; e.exports = function (t, e, r, i) { var a = r._scatterStackOpts, o = i("stackgroup"); if (o) { var s = e.xaxis + e.yaxis, l = a[s]; l || (l = a[s] = {}); var c = l[o], u = !1; c ? c.traces.push(e) : ((c = l[o] = { traceIndices: [], traces: [e] }), (u = !0)); for ( var f = { orientation: e.x && !e.y ? "h" : "v" }, h = 0; h < n.length; h++ ) { var p = n[h], d = p + "Found"; if (!c[d]) { var m = void 0 !== t[p], g = "orientation" === p; if ( (m || u) && ((c[p] = i(p, f[p])), g && (c.fillDflt = "h" === c[p] ? "tonextx" : "tonexty"), m && ((c[d] = !0), !u && (delete c.traces[0][p], g))) ) for (var v = 0; v < c.traces.length - 1; v++) { var y = c.traces[v]; y._input.fill !== y.fill && (y.fill = c.fillDflt); } } } return c; } }; }, {}, ], 960: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/drawing"), a = t("../../registry"); function o(t, e, r) { i.pointStyle(t.selectAll("path.point"), e, r); } function s(t, e, r) { i.textPointStyle(t.selectAll("text"), e, r); } e.exports = { style: function (t) { var e = n.select(t).selectAll("g.trace.scatter"); e.style("opacity", function (t) { return t[0].trace.opacity; }), e.selectAll("g.points").each(function (e) { o(n.select(this), e.trace || e[0].trace, t); }), e.selectAll("g.text").each(function (e) { s(n.select(this), e.trace || e[0].trace, t); }), e .selectAll("g.trace path.js-line") .call(i.lineGroupStyle), e .selectAll("g.trace path.js-fill") .call(i.fillGroupStyle, t), a.getComponentMethod("errorbars", "style")(e); }, stylePoints: o, styleText: s, styleOnSelect: function (t, e, r) { var n = e[0].trace; n.selectedpoints ? (i.selectedPointStyle(r.selectAll("path.point"), n), i.selectedTextStyle(r.selectAll("text"), n)) : (o(r, n, t), s(r, n, t)); }, }; }, { "../../components/drawing": 389, "../../registry": 647, "@plotly/d3": 58, }, ], 961: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = { hasLines: function (t) { return ( t.visible && t.mode && -1 !== t.mode.indexOf("lines") ); }, hasMarkers: function (t) { return ( t.visible && ((t.mode && -1 !== t.mode.indexOf("markers")) || "splom" === t.type) ); }, hasText: function (t) { return ( t.visible && t.mode && -1 !== t.mode.indexOf("text") ); }, isBubble: function (t) { return ( n.isPlainObject(t.marker) && n.isArrayOrTypedArray(t.marker.size) ); }, }; }, { "../../lib": 515 }, ], 962: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e, r, i, a) { (a = a || {}), i("textposition"), n.coerceFont(i, "textfont", r.font), a.noSelect || (i("selected.textfont.color"), i("unselected.textfont.color")); }; }, { "../../lib": 515 }, ], 963: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../registry"); e.exports = function (t, e, r, a) { var o, s = a("x"), l = a("y"); if ( (i.getComponentMethod("calendars", "handleTraceDefaults")( t, e, ["x", "y"], r, ), s) ) { var c = n.minRowLength(s); l ? (o = Math.min(c, n.minRowLength(l))) : ((o = c), a("y0"), a("dy")); } else { if (!l) return 0; (o = n.minRowLength(l)), a("x0"), a("dx"); } return (e._length = o), o; }; }, { "../../lib": 515, "../../registry": 647 }, ], 964: [ function (t, e, r) { "use strict"; var n = t("../scatter/attributes"), i = t("../../components/colorscale/attributes"), a = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, o = t("../../plots/template_attributes").hovertemplateAttrs, s = t("../../plots/template_attributes").texttemplateAttrs, l = t("../../plots/attributes"), c = t("../../constants/gl3d_dashes"), u = t("../../constants/gl3d_markers"), f = t("../../lib/extend").extendFlat, h = t("../../plot_api/edit_types").overrideAll, p = t("../../lib/sort_object_keys"), d = n.line, m = n.marker, g = m.line, v = f( { width: d.width, dash: { valType: "enumerated", values: p(c), dflt: "solid", }, }, i("line"), ); var y = (e.exports = h( { x: n.x, y: n.y, z: { valType: "data_array" }, text: f({}, n.text, {}), texttemplate: s({}, {}), hovertext: f({}, n.hovertext, {}), hovertemplate: o(), xhoverformat: a("x"), yhoverformat: a("y"), zhoverformat: a("z"), mode: f({}, n.mode, { dflt: "lines+markers" }), surfaceaxis: { valType: "enumerated", values: [-1, 0, 1, 2], dflt: -1, }, surfacecolor: { valType: "color" }, projection: { x: { show: { valType: "boolean", dflt: !1 }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, }, scale: { valType: "number", min: 0, max: 10, dflt: 2 / 3, }, }, y: { show: { valType: "boolean", dflt: !1 }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, }, scale: { valType: "number", min: 0, max: 10, dflt: 2 / 3, }, }, z: { show: { valType: "boolean", dflt: !1 }, opacity: { valType: "number", min: 0, max: 1, dflt: 1, }, scale: { valType: "number", min: 0, max: 10, dflt: 2 / 3, }, }, }, connectgaps: n.connectgaps, line: v, marker: f( { symbol: { valType: "enumerated", values: p(u), dflt: "circle", arrayOk: !0, }, size: f({}, m.size, { dflt: 8 }), sizeref: m.sizeref, sizemin: m.sizemin, sizemode: m.sizemode, opacity: f({}, m.opacity, { arrayOk: !1 }), colorbar: m.colorbar, line: f( { width: f({}, g.width, { arrayOk: !1 }) }, i("marker.line"), ), }, i("marker"), ), textposition: f({}, n.textposition, { dflt: "top center", }), textfont: { color: n.textfont.color, size: n.textfont.size, family: f({}, n.textfont.family, { arrayOk: !1 }), }, opacity: l.opacity, hoverinfo: f({}, l.hoverinfo), }, "calc", "nested", )); y.x.editType = y.y.editType = y.z.editType = "calc+clearAxisTypes"; }, { "../../components/colorscale/attributes": 374, "../../constants/gl3d_dashes": 488, "../../constants/gl3d_markers": 489, "../../lib/extend": 505, "../../lib/sort_object_keys": 538, "../../plot_api/edit_types": 548, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/template_attributes": 642, "../scatter/attributes": 936, }, ], 965: [ function (t, e, r) { "use strict"; var n = t("../scatter/arrays_to_calcdata"), i = t("../scatter/colorscale_calc"); e.exports = function (t, e) { var r = [{ x: !1, y: !1, trace: e, t: {} }]; return n(r, e), i(t, e), r; }; }, { "../scatter/arrays_to_calcdata": 935, "../scatter/colorscale_calc": 939, }, ], 966: [ function (t, e, r) { "use strict"; var n = t("../../registry"); function i(t, e, r, i) { if (!e || !e.visible) return null; for ( var a = n.getComponentMethod( "errorbars", "makeComputeError", )(e), o = new Array(t.length), s = 0; s < t.length; s++ ) { var l = a(+t[s], s); if ("log" === i.type) { var c = i.c2l(t[s]), u = t[s] - l[0], f = t[s] + l[1]; if ( ((o[s] = [ (i.c2l(u, !0) - c) * r, (i.c2l(f, !0) - c) * r, ]), u > 0) ) { var h = i.c2l(u); i._lowerLogErrorBound || (i._lowerLogErrorBound = h), (i._lowerErrorBound = Math.min( i._lowerLogErrorBound, h, )); } } else o[s] = [-l[0] * r, l[1] * r]; } return o; } e.exports = function (t, e, r) { var n = [ i(t.x, t.error_x, e[0], r.xaxis), i(t.y, t.error_y, e[1], r.yaxis), i(t.z, t.error_z, e[2], r.zaxis), ], a = (function (t) { for (var e = 0; e < t.length; e++) if (t[e]) return t[e].length; return 0; })(n); if (0 === a) return null; for (var o = new Array(a), s = 0; s < a; s++) { for ( var l = [ [0, 0, 0], [0, 0, 0], ], c = 0; c < 3; c++ ) if (n[c]) for (var u = 0; u < 2; u++) l[u][c] = n[c][s][u]; o[s] = l; } return o; }; }, { "../../registry": 647 }, ], 967: [ function (t, e, r) { "use strict"; var n = t("../../../stackgl_modules").gl_line3d, i = t("../../../stackgl_modules").gl_scatter3d, a = t("../../../stackgl_modules").gl_error3d, o = t("../../../stackgl_modules").gl_mesh3d, s = t("../../../stackgl_modules").delaunay_triangulate, l = t("../../lib"), c = t("../../lib/str2rgbarray"), u = t("../../lib/gl_format_color").formatColor, f = t("../scatter/make_bubble_size_func"), h = t("../../constants/gl3d_dashes"), p = t("../../constants/gl3d_markers"), d = t("../../plots/cartesian/axes"), m = t("../../components/fx/helpers").appendArrayPointValue, g = t("./calc_errors"); function v(t, e) { (this.scene = t), (this.uid = e), (this.linePlot = null), (this.scatterPlot = null), (this.errorBars = null), (this.textMarkers = null), (this.delaunayMesh = null), (this.color = null), (this.mode = ""), (this.dataPoints = []), (this.axesBounds = [ [-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0], ]), (this.textLabels = null), (this.data = null); } var y = v.prototype; function x(t) { return null == t ? 0 : t.indexOf("left") > -1 ? -1 : t.indexOf("right") > -1 ? 1 : 0; } function b(t) { return null == t ? 0 : t.indexOf("top") > -1 ? -1 : t.indexOf("bottom") > -1 ? 1 : 0; } function _(t, e) { return e(4 * t); } function w(t) { return p[t]; } function T(t, e, r, n, i) { var a = null; if (l.isArrayOrTypedArray(t)) { a = []; for (var o = 0; o < e; o++) void 0 === t[o] ? (a[o] = n) : (a[o] = r(t[o], i)); } else a = r(t, l.identity); return a; } function k(t, e) { var r, n, i, a, o, s, h = [], p = t.fullSceneLayout, v = t.dataScale, y = p.xaxis, k = p.yaxis, A = p.zaxis, M = e.marker, S = e.line, E = e.x || [], L = e.y || [], C = e.z || [], P = E.length, I = e.xcalendar, O = e.ycalendar, z = e.zcalendar; for (o = 0; o < P; o++) (r = y.d2l(E[o], 0, I) * v[0]), (n = k.d2l(L[o], 0, O) * v[1]), (i = A.d2l(C[o], 0, z) * v[2]), (h[o] = [r, n, i]); if (Array.isArray(e.text)) s = e.text; else if (void 0 !== e.text) for (s = new Array(P), o = 0; o < P; o++) s[o] = e.text; function D(t, e) { var r = p[t]; return d.tickText(r, r.d2l(e), !0).text; } var R = e.texttemplate; if (R) { var F = t.fullLayout._d3locale, B = Array.isArray(R), N = B ? Math.min(R.length, P) : P, j = B ? function (t) { return R[t]; } : function () { return R; }; for (s = new Array(N), o = 0; o < N; o++) { var U = { x: E[o], y: L[o], z: C[o] }, V = { xLabel: D("xaxis", E[o]), yLabel: D("yaxis", L[o]), zLabel: D("zaxis", C[o]), }, H = {}; m(H, e, o); var q = e._meta || {}; s[o] = l.texttemplateString(j(o), V, F, H, U, q); } } if ( ((a = { position: h, mode: e.mode, text: s }), "line" in e && ((a.lineColor = u(S, 1, P)), (a.lineWidth = S.width), (a.lineDashes = S.dash)), "marker" in e) ) { var G = f(e); (a.scatterColor = u(M, 1, P)), (a.scatterSize = T(M.size, P, _, 20, G)), (a.scatterMarker = T(M.symbol, P, w, "\u25cf")), (a.scatterLineWidth = M.line.width), (a.scatterLineColor = u(M.line, 1, P)), (a.scatterAngle = 0); } "textposition" in e && ((a.textOffset = (function (t) { var e = [0, 0]; if (Array.isArray(t)) for (var r = 0; r < t.length; r++) (e[r] = [0, 0]), t[r] && ((e[r][0] = x(t[r])), (e[r][1] = b(t[r]))); else (e[0] = x(t)), (e[1] = b(t)); return e; })(e.textposition)), (a.textColor = u(e.textfont, 1, P)), (a.textSize = T(e.textfont.size, P, l.identity, 12)), (a.textFont = e.textfont.family), (a.textAngle = 0)); var Y = ["x", "y", "z"]; for ( a.project = [!1, !1, !1], a.projectScale = [1, 1, 1], a.projectOpacity = [1, 1, 1], o = 0; o < 3; ++o ) { var W = e.projection[Y[o]]; (a.project[o] = W.show) && ((a.projectOpacity[o] = W.opacity), (a.projectScale[o] = W.scale)); } a.errorBounds = g(e, v, p); var Z = (function (t) { for ( var e = [0, 0, 0], r = [ [0, 0, 0], [0, 0, 0], [0, 0, 0], ], n = [1, 1, 1], i = 0; i < 3; i++ ) { var a = t[i]; a && !1 !== a.copy_zstyle && !1 !== t[2].visible && (a = t[2]), a && a.visible && ((e[i] = a.width / 2), (r[i] = c(a.color)), (n[i] = a.thickness)); } return { capSize: e, color: r, lineWidth: n }; })([e.error_x, e.error_y, e.error_z]); return ( (a.errorColor = Z.color), (a.errorLineWidth = Z.lineWidth), (a.errorCapSize = Z.capSize), (a.delaunayAxis = e.surfaceaxis), (a.delaunayColor = c(e.surfacecolor)), a ); } function A(t) { if (l.isArrayOrTypedArray(t)) { var e = t[0]; return ( l.isArrayOrTypedArray(e) && (t = e), "rgb(" + t.slice(0, 3).map(function (t) { return Math.round(255 * t); }) + ")" ); } return null; } function M(t) { return l.isArrayOrTypedArray(t) ? 4 === t.length && "number" == typeof t[0] ? A(t) : t.map(A) : null; } (y.handlePick = function (t) { if ( t.object && (t.object === this.linePlot || t.object === this.delaunayMesh || t.object === this.textMarkers || t.object === this.scatterPlot) ) { var e = (t.index = t.data.index); return ( t.object.highlight && t.object.highlight(null), this.scatterPlot && ((t.object = this.scatterPlot), this.scatterPlot.highlight(t.data)), (t.textLabel = ""), this.textLabels && (Array.isArray(this.textLabels) ? (this.textLabels[e] || 0 === this.textLabels[e]) && (t.textLabel = this.textLabels[e]) : (t.textLabel = this.textLabels)), (t.traceCoordinate = [ this.data.x[e], this.data.y[e], this.data.z[e], ]), !0 ); } }), (y.update = function (t) { var e, r, l, c, u = this.scene.glplot.gl, f = h.solid; this.data = t; var p = k(this.scene, t); "mode" in p && (this.mode = p.mode), "lineDashes" in p && p.lineDashes in h && (f = h[p.lineDashes]), (this.color = M(p.scatterColor) || M(p.lineColor)), (this.dataPoints = p.position), (e = { gl: this.scene.glplot.gl, position: p.position, color: p.lineColor, lineWidth: p.lineWidth || 1, dashes: f[0], dashScale: f[1], opacity: t.opacity, connectGaps: t.connectgaps, }), -1 !== this.mode.indexOf("lines") ? this.linePlot ? this.linePlot.update(e) : ((this.linePlot = n(e)), (this.linePlot._trace = this), this.scene.glplot.add(this.linePlot)) : this.linePlot && (this.scene.glplot.remove(this.linePlot), this.linePlot.dispose(), (this.linePlot = null)); var d = t.opacity; if ( (t.marker && t.marker.opacity && (d *= t.marker.opacity), (r = { gl: this.scene.glplot.gl, position: p.position, color: p.scatterColor, size: p.scatterSize, glyph: p.scatterMarker, opacity: d, orthographic: !0, lineWidth: p.scatterLineWidth, lineColor: p.scatterLineColor, project: p.project, projectScale: p.projectScale, projectOpacity: p.projectOpacity, }), -1 !== this.mode.indexOf("markers") ? this.scatterPlot ? this.scatterPlot.update(r) : ((this.scatterPlot = i(r)), (this.scatterPlot._trace = this), (this.scatterPlot.highlightScale = 1), this.scene.glplot.add(this.scatterPlot)) : this.scatterPlot && (this.scene.glplot.remove(this.scatterPlot), this.scatterPlot.dispose(), (this.scatterPlot = null)), (c = { gl: this.scene.glplot.gl, position: p.position, glyph: p.text, color: p.textColor, size: p.textSize, angle: p.textAngle, alignment: p.textOffset, font: p.textFont, orthographic: !0, lineWidth: 0, project: !1, opacity: t.opacity, }), (this.textLabels = t.hovertext || t.text), -1 !== this.mode.indexOf("text") ? this.textMarkers ? this.textMarkers.update(c) : ((this.textMarkers = i(c)), (this.textMarkers._trace = this), (this.textMarkers.highlightScale = 1), this.scene.glplot.add(this.textMarkers)) : this.textMarkers && (this.scene.glplot.remove(this.textMarkers), this.textMarkers.dispose(), (this.textMarkers = null)), (l = { gl: this.scene.glplot.gl, position: p.position, color: p.errorColor, error: p.errorBounds, lineWidth: p.errorLineWidth, capSize: p.errorCapSize, opacity: t.opacity, }), this.errorBars ? p.errorBounds ? this.errorBars.update(l) : (this.scene.glplot.remove(this.errorBars), this.errorBars.dispose(), (this.errorBars = null)) : p.errorBounds && ((this.errorBars = a(l)), (this.errorBars._trace = this), this.scene.glplot.add(this.errorBars)), p.delaunayAxis >= 0) ) { var m = (function (t, e, r) { var n, i = (r + 1) % 3, a = (r + 2) % 3, o = [], l = []; for (n = 0; n < t.length; ++n) { var c = t[n]; !isNaN(c[i]) && isFinite(c[i]) && !isNaN(c[a]) && isFinite(c[a]) && (o.push([c[i], c[a]]), l.push(n)); } var u = s(o); for (n = 0; n < u.length; ++n) for (var f = u[n], h = 0; h < f.length; ++h) f[h] = l[f[h]]; return { positions: t, cells: u, meshColor: e }; })(p.position, p.delaunayColor, p.delaunayAxis); (m.opacity = t.opacity), this.delaunayMesh ? this.delaunayMesh.update(m) : ((m.gl = u), (this.delaunayMesh = o(m)), (this.delaunayMesh._trace = this), this.scene.glplot.add(this.delaunayMesh)); } else this.delaunayMesh && (this.scene.glplot.remove(this.delaunayMesh), this.delaunayMesh.dispose(), (this.delaunayMesh = null)); }), (y.dispose = function () { this.linePlot && (this.scene.glplot.remove(this.linePlot), this.linePlot.dispose()), this.scatterPlot && (this.scene.glplot.remove(this.scatterPlot), this.scatterPlot.dispose()), this.errorBars && (this.scene.glplot.remove(this.errorBars), this.errorBars.dispose()), this.textMarkers && (this.scene.glplot.remove(this.textMarkers), this.textMarkers.dispose()), this.delaunayMesh && (this.scene.glplot.remove(this.delaunayMesh), this.delaunayMesh.dispose()); }), (e.exports = function (t, e) { var r = new v(t, e.uid); return r.update(e), r; }); }, { "../../../stackgl_modules": 1133, "../../components/fx/helpers": 403, "../../constants/gl3d_dashes": 488, "../../constants/gl3d_markers": 489, "../../lib": 515, "../../lib/gl_format_color": 511, "../../lib/str2rgbarray": 540, "../../plots/cartesian/axes": 566, "../scatter/make_bubble_size_func": 953, "./calc_errors": 966, }, ], 968: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"), a = t("../scatter/subtypes"), o = t("../scatter/marker_defaults"), s = t("../scatter/line_defaults"), l = t("../scatter/text_defaults"), c = t("./attributes"); e.exports = function (t, e, r, u) { function f(r, n) { return i.coerce(t, e, c, r, n); } if ( (function (t, e, r, i) { var a = 0, o = r("x"), s = r("y"), l = r("z"); n.getComponentMethod( "calendars", "handleTraceDefaults", )(t, e, ["x", "y", "z"], i), o && s && l && ((a = Math.min(o.length, s.length, l.length)), (e._length = e._xlength = e._ylength = e._zlength = a)); return a; })(t, e, f, u) ) { f("text"), f("hovertext"), f("hovertemplate"), f("xhoverformat"), f("yhoverformat"), f("zhoverformat"), f("mode"), a.hasLines(e) && (f("connectgaps"), s(t, e, r, u, f)), a.hasMarkers(e) && o(t, e, r, u, f, { noSelect: !0, noAngle: !0 }), a.hasText(e) && (f("texttemplate"), l(t, e, u, f, { noSelect: !0 })); var h = (e.line || {}).color, p = (e.marker || {}).color; f("surfaceaxis") >= 0 && f("surfacecolor", h || p); for (var d = ["x", "y", "z"], m = 0; m < 3; ++m) { var g = "projection." + d[m]; f(g + ".show") && (f(g + ".opacity"), f(g + ".scale")); } var v = n.getComponentMethod( "errorbars", "supplyDefaults", ); v(t, e, h || p || r, { axis: "z" }), v(t, e, h || p || r, { axis: "y", inherit: "z" }), v(t, e, h || p || r, { axis: "x", inherit: "z" }); } else e.visible = !1; }; }, { "../../lib": 515, "../../registry": 647, "../scatter/line_defaults": 949, "../scatter/marker_defaults": 955, "../scatter/subtypes": 961, "../scatter/text_defaults": 962, "./attributes": 964, }, ], 969: [ function (t, e, r) { "use strict"; e.exports = { plot: t("./convert"), attributes: t("./attributes"), markerSymbols: t("../../constants/gl3d_markers"), supplyDefaults: t("./defaults"), colorbar: [ { container: "marker", min: "cmin", max: "cmax" }, { container: "line", min: "cmin", max: "cmax" }, ], calc: t("./calc"), moduleType: "trace", name: "scatter3d", basePlotModule: t("../../plots/gl3d"), categories: [ "gl3d", "symbols", "showLegend", "scatter-like", ], meta: {}, }; }, { "../../constants/gl3d_markers": 489, "../../plots/gl3d": 607, "./attributes": 964, "./calc": 965, "./convert": 967, "./defaults": 968, }, ], 970: [ function (t, e, r) { "use strict"; var n = t("../scatter/attributes"), i = t("../../plots/attributes"), a = t("../../plots/template_attributes").hovertemplateAttrs, o = t("../../plots/template_attributes").texttemplateAttrs, s = t("../../components/colorscale/attributes"), l = t("../../lib/extend").extendFlat, c = n.marker, u = n.line, f = c.line; e.exports = { carpet: { valType: "string", editType: "calc" }, a: { valType: "data_array", editType: "calc" }, b: { valType: "data_array", editType: "calc" }, mode: l({}, n.mode, { dflt: "markers" }), text: l({}, n.text, {}), texttemplate: o( { editType: "plot" }, { keys: ["a", "b", "text"] }, ), hovertext: l({}, n.hovertext, {}), line: { color: u.color, width: u.width, dash: u.dash, backoff: u.backoff, shape: l({}, u.shape, { values: ["linear", "spline"] }), smoothing: u.smoothing, editType: "calc", }, connectgaps: n.connectgaps, fill: l({}, n.fill, { values: ["none", "toself", "tonext"], dflt: "none", }), fillcolor: n.fillcolor, marker: l( { symbol: c.symbol, opacity: c.opacity, maxdisplayed: c.maxdisplayed, angle: c.angle, angleref: c.angleref, standoff: c.standoff, size: c.size, sizeref: c.sizeref, sizemin: c.sizemin, sizemode: c.sizemode, line: l( { width: f.width, editType: "calc" }, s("marker.line"), ), gradient: c.gradient, editType: "calc", }, s("marker"), ), textfont: n.textfont, textposition: n.textposition, selected: n.selected, unselected: n.unselected, hoverinfo: l({}, i.hoverinfo, { flags: ["a", "b", "text", "name"], }), hoveron: n.hoveron, hovertemplate: a(), }; }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/template_attributes": 642, "../scatter/attributes": 936, }, ], 971: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../scatter/colorscale_calc"), a = t("../scatter/arrays_to_calcdata"), o = t("../scatter/calc_selection"), s = t("../scatter/calc").calcMarkerSize, l = t("../carpet/lookup_carpetid"); e.exports = function (t, e) { var r = (e._carpetTrace = l(t, e)); if (r && r.visible && "legendonly" !== r.visible) { var c; (e.xaxis = r.xaxis), (e.yaxis = r.yaxis); var u, f, h = e._length, p = new Array(h), d = !1; for (c = 0; c < h; c++) if (((u = e.a[c]), (f = e.b[c]), n(u) && n(f))) { var m = r.ab2xy(+u, +f, !0), g = r.isVisible(+u, +f); g || (d = !0), (p[c] = { x: m[0], y: m[1], a: u, b: f, vis: g }); } else p[c] = { x: !1, y: !1 }; return ( (e._needsCull = d), (p[0].carpet = r), (p[0].trace = e), s(e, h), i(t, e), a(p, e), o(p, e), p ); } }; }, { "../carpet/lookup_carpetid": 717, "../scatter/arrays_to_calcdata": 935, "../scatter/calc": 937, "../scatter/calc_selection": 938, "../scatter/colorscale_calc": 939, "fast-isnumeric": 190, }, ], 972: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../scatter/constants"), a = t("../scatter/subtypes"), o = t("../scatter/marker_defaults"), s = t("../scatter/line_defaults"), l = t("../scatter/line_shape_defaults"), c = t("../scatter/text_defaults"), u = t("../scatter/fillcolor_defaults"), f = t("./attributes"); e.exports = function (t, e, r, h) { function p(r, i) { return n.coerce(t, e, f, r, i); } p("carpet"), (e.xaxis = "x"), (e.yaxis = "y"); var d = p("a"), m = p("b"), g = Math.min(d.length, m.length); if (g) { (e._length = g), p("text"), p("texttemplate"), p("hovertext"), p( "mode", g < i.PTS_LINESONLY ? "lines+markers" : "lines", ), a.hasLines(e) && (s(t, e, r, h, p, { backoff: !0 }), l(t, e, p), p("connectgaps")), a.hasMarkers(e) && o(t, e, r, h, p, { gradient: !0 }), a.hasText(e) && c(t, e, h, p); var v = []; (a.hasMarkers(e) || a.hasText(e)) && (p("marker.maxdisplayed"), v.push("points")), p("fill"), "none" !== e.fill && (u(t, e, r, p), a.hasLines(e) || l(t, e, p)), ("tonext" !== e.fill && "toself" !== e.fill) || v.push("fills"), "fills" !== p("hoveron", v.join("+") || "points") && p("hovertemplate"), n.coerceSelectionMarkerOpacity(e, p); } else e.visible = !1; }; }, { "../../lib": 515, "../scatter/constants": 940, "../scatter/fillcolor_defaults": 944, "../scatter/line_defaults": 949, "../scatter/line_shape_defaults": 951, "../scatter/marker_defaults": 955, "../scatter/subtypes": 961, "../scatter/text_defaults": 962, "./attributes": 970, }, ], 973: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n, i) { var a = n[i]; return (t.a = a.a), (t.b = a.b), (t.y = a.y), t; }; }, {}, ], 974: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r = {}, n = e._carpet, i = n.ab2ij([t.a, t.b]), a = Math.floor(i[0]), o = i[0] - a, s = Math.floor(i[1]), l = i[1] - s, c = n.evalxy([], a, s, o, l); return (r.yLabel = c[1].toFixed(3)), r; }; }, {}, ], 975: [ function (t, e, r) { "use strict"; var n = t("../scatter/hover"), i = t("../../lib").fillText; e.exports = function (t, e, r, a) { var o = n(t, e, r, a); if (o && !1 !== o[0].index) { var s = o[0]; if (void 0 === s.index) { var l = 1 - s.y0 / t.ya._length, c = t.xa._length, u = (c * l) / 2, f = c - u; return ( (s.x0 = Math.max(Math.min(s.x0, f), u)), (s.x1 = Math.max(Math.min(s.x1, f), u)), o ); } var h = s.cd[s.index]; (s.a = h.a), (s.b = h.b), (s.xLabelVal = void 0), (s.yLabelVal = void 0); var p = s.trace, d = p._carpet, m = p._module.formatLabels(h, p); (s.yLabel = m.yLabel), delete s.text; var g = []; if (!p.hovertemplate) { var v = (h.hi || p.hoverinfo).split("+"); -1 !== v.indexOf("all") && (v = ["a", "b", "text"]), -1 !== v.indexOf("a") && y(d.aaxis, h.a), -1 !== v.indexOf("b") && y(d.baxis, h.b), g.push("y: " + s.yLabel), -1 !== v.indexOf("text") && i(h, p, g), (s.extraText = g.join("
")); } return o; } function y(t, e) { var r; (r = t.labelprefix && t.labelprefix.length > 0 ? t.labelprefix.replace(/ = $/, "") : t._hovertitle), g.push(r + ": " + e.toFixed(3) + t.labelsuffix); } }; }, { "../../lib": 515, "../scatter/hover": 947 }, ], 976: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../scatter/marker_colorbar"), formatLabels: t("./format_labels"), calc: t("./calc"), plot: t("./plot"), style: t("../scatter/style").style, styleOnSelect: t("../scatter/style").styleOnSelect, hoverPoints: t("./hover"), selectPoints: t("../scatter/select"), eventData: t("./event_data"), moduleType: "trace", name: "scattercarpet", basePlotModule: t("../../plots/cartesian"), categories: [ "svg", "carpet", "symbols", "showLegend", "carpetDependent", "zoomScale", ], meta: {}, }; }, { "../../plots/cartesian": 578, "../scatter/marker_colorbar": 954, "../scatter/select": 958, "../scatter/style": 960, "./attributes": 970, "./calc": 971, "./defaults": 972, "./event_data": 973, "./format_labels": 974, "./hover": 975, "./plot": 977, }, ], 977: [ function (t, e, r) { "use strict"; var n = t("../scatter/plot"), i = t("../../plots/cartesian/axes"), a = t("../../components/drawing"); e.exports = function (t, e, r, o) { var s, l, c, u = r[0][0].carpet, f = i.getFromId(t, u.xaxis || "x"), h = i.getFromId(t, u.yaxis || "y"), p = { xaxis: f, yaxis: h, plot: e.plot }; for (s = 0; s < r.length; s++) ((l = r[s][0].trace)._xA = f), (l._yA = h); for (n(t, p, r, o), s = 0; s < r.length; s++) (l = r[s][0].trace), (c = o.selectAll("g.trace" + l.uid + " .js-line")), a.setClipUrl(c, r[s][0].carpet._clipPathId, t); }; }, { "../../components/drawing": 389, "../../plots/cartesian/axes": 566, "../scatter/plot": 957, }, ], 978: [ function (t, e, r) { "use strict"; var n = t( "../../plots/template_attributes", ).hovertemplateAttrs, i = t("../../plots/template_attributes").texttemplateAttrs, a = t("../scatter/attributes"), o = t("../../plots/attributes"), s = t("../../components/colorscale/attributes"), l = t("../../components/drawing/attributes").dash, c = t("../../lib/extend").extendFlat, u = t("../../plot_api/edit_types").overrideAll, f = a.marker, h = a.line, p = f.line; e.exports = u( { lon: { valType: "data_array" }, lat: { valType: "data_array" }, locations: { valType: "data_array" }, locationmode: { valType: "enumerated", values: [ "ISO-3", "USA-states", "country names", "geojson-id", ], dflt: "ISO-3", }, geojson: { valType: "any", editType: "calc" }, featureidkey: { valType: "string", editType: "calc", dflt: "id", }, mode: c({}, a.mode, { dflt: "markers" }), text: c({}, a.text, {}), texttemplate: i( { editType: "plot" }, { keys: ["lat", "lon", "location", "text"] }, ), hovertext: c({}, a.hovertext, {}), textfont: a.textfont, textposition: a.textposition, line: { color: h.color, width: h.width, dash: l }, connectgaps: a.connectgaps, marker: c( { symbol: f.symbol, opacity: f.opacity, angle: f.angle, angleref: c({}, f.angleref, { values: ["previous", "up", "north"], }), standoff: f.standoff, size: f.size, sizeref: f.sizeref, sizemin: f.sizemin, sizemode: f.sizemode, colorbar: f.colorbar, line: c({ width: p.width }, s("marker.line")), gradient: f.gradient, }, s("marker"), ), fill: { valType: "enumerated", values: ["none", "toself"], dflt: "none", }, fillcolor: a.fillcolor, selected: a.selected, unselected: a.unselected, hoverinfo: c({}, o.hoverinfo, { flags: ["lon", "lat", "location", "text", "name"], }), hovertemplate: n(), }, "calc", "nested", ); }, { "../../components/colorscale/attributes": 374, "../../components/drawing/attributes": 388, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plots/attributes": 562, "../../plots/template_attributes": 642, "../scatter/attributes": 936, }, ], 979: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../constants/numerical").BADNUM, a = t("../scatter/colorscale_calc"), o = t("../scatter/arrays_to_calcdata"), s = t("../scatter/calc_selection"), l = t("../../lib")._; function c(t) { return t && "string" == typeof t; } e.exports = function (t, e) { var r, u = Array.isArray(e.locations), f = u ? e.locations.length : e._length, h = new Array(f); r = e.geojson ? function (t) { return c(t) || n(t); } : c; for (var p = 0; p < f; p++) { var d = (h[p] = {}); if (u) { var m = e.locations[p]; d.loc = r(m) ? m : null; } else { var g = e.lon[p], v = e.lat[p]; n(g) && n(v) ? (d.lonlat = [+g, +v]) : (d.lonlat = [i, i]); } } return ( o(h, e), a(t, e), s(h, e), f && (h[0].t = { labels: { lat: l(t, "lat:") + " ", lon: l(t, "lon:") + " ", }, }), h ); }; }, { "../../constants/numerical": 491, "../../lib": 515, "../scatter/arrays_to_calcdata": 935, "../scatter/calc_selection": 938, "../scatter/colorscale_calc": 939, "fast-isnumeric": 190, }, ], 980: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../scatter/subtypes"), a = t("../scatter/marker_defaults"), o = t("../scatter/line_defaults"), s = t("../scatter/text_defaults"), l = t("../scatter/fillcolor_defaults"), c = t("./attributes"); e.exports = function (t, e, r, u) { function f(r, i) { return n.coerce(t, e, c, r, i); } var h, p = f("locations"); if (p && p.length) { var d, m = f("geojson"); (("string" == typeof m && "" !== m) || n.isPlainObject(m)) && (d = "geojson-id"), "geojson-id" === f("locationmode", d) && f("featureidkey"), (h = p.length); } else { var g = f("lon") || [], v = f("lat") || []; h = Math.min(g.length, v.length); } h ? ((e._length = h), f("text"), f("hovertext"), f("hovertemplate"), f("mode"), i.hasLines(e) && (o(t, e, r, u, f), f("connectgaps")), i.hasMarkers(e) && a(t, e, r, u, f, { gradient: !0 }), i.hasText(e) && (f("texttemplate"), s(t, e, u, f)), f("fill"), "none" !== e.fill && l(t, e, r, f), n.coerceSelectionMarkerOpacity(e, f)) : (e.visible = !1); }; }, { "../../lib": 515, "../scatter/fillcolor_defaults": 944, "../scatter/line_defaults": 949, "../scatter/marker_defaults": 955, "../scatter/subtypes": 961, "../scatter/text_defaults": 962, "./attributes": 978, }, ], 981: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n, i) { (t.lon = e.lon), (t.lat = e.lat), (t.location = e.loc ? e.loc : null); var a = n[i]; return ( a.fIn && a.fIn.properties && (t.properties = a.fIn.properties), t ); }; }, {}, ], 982: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"); e.exports = function (t, e, r) { var i = {}, a = r[e.geo]._subplot.mockAxis, o = t.lonlat; return ( (i.lonLabel = n.tickText(a, a.c2l(o[0]), !0).text), (i.latLabel = n.tickText(a, a.c2l(o[1]), !0).text), i ); }; }, { "../../plots/cartesian/axes": 566 }, ], 983: [ function (t, e, r) { "use strict"; var n = t("../../components/fx"), i = t("../../constants/numerical").BADNUM, a = t("../scatter/get_trace_color"), o = t("../../lib").fillText, s = t("./attributes"); e.exports = function (t, e, r) { var l = t.cd, c = l[0].trace, u = t.xa, f = t.ya, h = t.subplot, p = h.projection.isLonLatOverEdges, d = h.project; if ( (n.getClosest( l, function (t) { var n = t.lonlat; if (n[0] === i) return 1 / 0; if (p(n)) return 1 / 0; var a = d(n), o = d([e, r]), s = Math.abs(a[0] - o[0]), l = Math.abs(a[1] - o[1]), c = Math.max(3, t.mrc || 0); return Math.max( Math.sqrt(s * s + l * l) - c, 1 - 3 / c, ); }, t, ), !1 !== t.index) ) { var m = l[t.index], g = m.lonlat, v = [u.c2p(g), f.c2p(g)], y = m.mrc || 1; (t.x0 = v[0] - y), (t.x1 = v[0] + y), (t.y0 = v[1] - y), (t.y1 = v[1] + y), (t.loc = m.loc), (t.lon = g[0]), (t.lat = g[1]); var x = {}; x[c.geo] = { _subplot: h }; var b = c._module.formatLabels(m, c, x); return ( (t.lonLabel = b.lonLabel), (t.latLabel = b.latLabel), (t.color = a(c, m)), (t.extraText = (function (t, e, r, n) { if (t.hovertemplate) return; var i = e.hi || t.hoverinfo, a = "all" === i ? s.hoverinfo.flags : i.split("+"), l = -1 !== a.indexOf("location") && Array.isArray(t.locations), c = -1 !== a.indexOf("lon"), u = -1 !== a.indexOf("lat"), f = -1 !== a.indexOf("text"), h = []; function p(t) { return t + "\xb0"; } l ? h.push(e.loc) : c && u ? h.push( "(" + p(r.latLabel) + ", " + p(r.lonLabel) + ")", ) : c ? h.push(n.lon + p(r.lonLabel)) : u && h.push(n.lat + p(r.latLabel)); f && o(e, t, h); return h.join("
"); })(c, m, t, l[0].t.labels)), (t.hovertemplate = c.hovertemplate), [t] ); } }; }, { "../../components/fx": 407, "../../constants/numerical": 491, "../../lib": 515, "../scatter/get_trace_color": 946, "./attributes": 978, }, ], 984: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../scatter/marker_colorbar"), formatLabels: t("./format_labels"), calc: t("./calc"), calcGeoJSON: t("./plot").calcGeoJSON, plot: t("./plot").plot, style: t("./style"), styleOnSelect: t("../scatter/style").styleOnSelect, hoverPoints: t("./hover"), eventData: t("./event_data"), selectPoints: t("./select"), moduleType: "trace", name: "scattergeo", basePlotModule: t("../../plots/geo"), categories: [ "geo", "symbols", "showLegend", "scatter-like", ], meta: {}, }; }, { "../../plots/geo": 598, "../scatter/marker_colorbar": 954, "../scatter/style": 960, "./attributes": 978, "./calc": 979, "./defaults": 980, "./event_data": 981, "./format_labels": 982, "./hover": 983, "./plot": 985, "./select": 986, "./style": 987, }, ], 985: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../lib/topojson_utils").getTopojsonFeatures, o = t("../../lib/geojson_utils"), s = t("../../lib/geo_location_utils"), l = t("../../plots/cartesian/autorange").findExtremes, c = t("../../constants/numerical").BADNUM, u = t("../scatter/calc").calcMarkerSize, f = t("../scatter/subtypes"), h = t("./style"); e.exports = { calcGeoJSON: function (t, e) { var r, n, i = t[0].trace, o = e[i.geo], f = o._subplot, h = i._length; if (Array.isArray(i.locations)) { var p = i.locationmode, d = "geojson-id" === p ? s.extractTraceFeature(t) : a(i, f.topojson); for (r = 0; r < h; r++) { n = t[r]; var m = "geojson-id" === p ? n.fOut : s.locationToFeature(p, n.loc, d); n.lonlat = m ? m.properties.ct : [c, c]; } } var g, v, y = { padded: !0 }; if ( "geojson" === o.fitbounds && "geojson-id" === i.locationmode ) { var x = s.computeBbox(s.getTraceGeojson(i)); (g = [x[0], x[2]]), (v = [x[1], x[3]]); } else { for ( g = new Array(h), v = new Array(h), r = 0; r < h; r++ ) (n = t[r]), (g[r] = n.lonlat[0]), (v[r] = n.lonlat[1]); y.ppad = u(i, h); } (i._extremes.lon = l(o.lonaxis._ax, g, y)), (i._extremes.lat = l(o.lataxis._ax, v, y)); }, plot: function (t, e, r) { var a = e.layers.frontplot.select(".scatterlayer"), s = i.makeTraceGroups(a, r, "trace scattergeo"); function l(t, e) { t.lonlat[0] === c && n.select(e).remove(); } s.selectAll("*").remove(), s.each(function (e) { var r = n.select(this), a = e[0].trace; if (f.hasLines(a) || "none" !== a.fill) { var s = o.calcTraceToLineCoords(e), c = "none" !== a.fill ? o.makePolygon(s) : o.makeLine(s); r.selectAll("path.js-line") .data([{ geojson: c, trace: a }]) .enter() .append("path") .classed("js-line", !0) .style("stroke-miterlimit", 2); } f.hasMarkers(a) && r .selectAll("path.point") .data(i.identity) .enter() .append("path") .classed("point", !0) .each(function (t) { l(t, this); }), f.hasText(a) && r .selectAll("g") .data(i.identity) .enter() .append("g") .append("text") .each(function (t) { l(t, this); }), h(t, e); }); }, }; }, { "../../constants/numerical": 491, "../../lib": 515, "../../lib/geo_location_utils": 508, "../../lib/geojson_utils": 509, "../../lib/topojson_utils": 544, "../../plots/cartesian/autorange": 565, "../scatter/calc": 937, "../scatter/subtypes": 961, "./style": 987, "@plotly/d3": 58, }, ], 986: [ function (t, e, r) { "use strict"; var n = t("../scatter/subtypes"), i = t("../../constants/numerical").BADNUM; e.exports = function (t, e) { var r, a, o, s, l, c = t.cd, u = t.xaxis, f = t.yaxis, h = [], p = c[0].trace; if (!n.hasMarkers(p) && !n.hasText(p)) return []; if (!1 === e) for (l = 0; l < c.length; l++) c[l].selected = 0; else for (l = 0; l < c.length; l++) (a = (r = c[l]).lonlat)[0] !== i && ((o = u.c2p(a)), (s = f.c2p(a)), e.contains([o, s], null, l, t) ? (h.push({ pointNumber: l, lon: a[0], lat: a[1] }), (r.selected = 1)) : (r.selected = 0)); return h; }; }, { "../../constants/numerical": 491, "../scatter/subtypes": 961, }, ], 987: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/drawing"), a = t("../../components/color"), o = t("../scatter/style"), s = o.stylePoints, l = o.styleText; e.exports = function (t, e) { e && (function (t, e) { var r = e[0].trace, o = e[0].node3; o.style("opacity", e[0].trace.opacity), s(o, r, t), l(o, r, t), o .selectAll("path.js-line") .style("fill", "none") .each(function (t) { var e = n.select(this), r = t.trace, o = r.line || {}; e .call(a.stroke, o.color) .call(i.dashLine, o.dash || "", o.width || 0), "none" !== r.fill && e.call(a.fill, r.fillcolor); }); })(t, e); }; }, { "../../components/color": 367, "../../components/drawing": 389, "../scatter/style": 960, "@plotly/d3": 58, }, ], 988: [ function (t, e, r) { "use strict"; var n = t("../../plots/attributes"), i = t("../scatter/attributes"), a = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, o = t("../../components/colorscale/attributes"), s = t("../../lib/sort_object_keys"), l = t("../../lib/extend").extendFlat, c = t("../../plot_api/edit_types").overrideAll, u = t("./constants").DASHES, f = i.line, h = i.marker, p = h.line, d = (e.exports = c( { x: i.x, x0: i.x0, dx: i.dx, y: i.y, y0: i.y0, dy: i.dy, xperiod: i.xperiod, yperiod: i.yperiod, xperiod0: i.xperiod0, yperiod0: i.yperiod0, xperiodalignment: i.xperiodalignment, yperiodalignment: i.yperiodalignment, xhoverformat: a("x"), yhoverformat: a("y"), text: i.text, hovertext: i.hovertext, textposition: i.textposition, textfont: i.textfont, mode: { valType: "flaglist", flags: ["lines", "markers", "text"], extras: ["none"], }, line: { color: f.color, width: f.width, shape: { valType: "enumerated", values: ["linear", "hv", "vh", "hvh", "vhv"], dflt: "linear", editType: "plot", }, dash: { valType: "enumerated", values: s(u), dflt: "solid", }, }, marker: l({}, o("marker"), { symbol: h.symbol, angle: h.angle, size: h.size, sizeref: h.sizeref, sizemin: h.sizemin, sizemode: h.sizemode, opacity: h.opacity, colorbar: h.colorbar, line: l({}, o("marker.line"), { width: p.width }), }), connectgaps: i.connectgaps, fill: l({}, i.fill, { dflt: "none" }), fillcolor: i.fillcolor, selected: { marker: i.selected.marker, textfont: i.selected.textfont, }, unselected: { marker: i.unselected.marker, textfont: i.unselected.textfont, }, opacity: n.opacity, }, "calc", "nested", )); (d.x.editType = d.y.editType = d.x0.editType = d.y0.editType = "calc+clearAxisTypes"), (d.hovertemplate = i.hovertemplate), (d.texttemplate = i.texttemplate); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../lib/sort_object_keys": 538, "../../plot_api/edit_types": 548, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../scatter/attributes": 936, "./constants": 991, }, ], 989: [ function (t, e, r) { "use strict"; var n = t("./hover"); e.exports = { moduleType: "trace", name: "scattergl", basePlotModule: t("../../plots/cartesian"), categories: [ "gl", "regl", "cartesian", "symbols", "errorBarsOK", "showLegend", "scatter-like", ], attributes: t("./attributes"), supplyDefaults: t("./defaults"), crossTraceDefaults: t("../scatter/cross_trace_defaults"), colorbar: t("../scatter/marker_colorbar"), formatLabels: t("./format_labels"), calc: t("./calc"), hoverPoints: n.hoverPoints, selectPoints: t("./select"), meta: {}, }; }, { "../../plots/cartesian": 578, "../scatter/cross_trace_defaults": 942, "../scatter/marker_colorbar": 954, "./attributes": 988, "./calc": 990, "./defaults": 993, "./format_labels": 995, "./hover": 997, "./select": 1001, }, ], 990: [ function (t, e, r) { "use strict"; var n = t("@plotly/point-cluster"), i = t("../../lib"), a = t("../../plots/cartesian/axis_ids"), o = t("../../plots/cartesian/autorange").findExtremes, s = t("../../plots/cartesian/align_period"), l = t("../scatter/calc"), c = l.calcMarkerSize, u = l.calcAxisExpansion, f = l.setFirstScatter, h = t("../scatter/colorscale_calc"), p = t("./convert"), d = t("./scene_update"), m = t("../../constants/numerical").BADNUM, g = t("./constants").TOO_MANY_POINTS; function v(t, e, r) { var n = t._extremes[e._id], i = o(e, r._bnds, { padded: !0 }); (n.min = n.min.concat(i.min)), (n.max = n.max.concat(i.max)); } e.exports = function (t, e) { var r, o = t._fullLayout, l = (e._xA = a.getFromId(t, e.xaxis, "x")), y = (e._yA = a.getFromId(t, e.yaxis, "y")), x = o._plots[e.xaxis + e.yaxis], b = e._length, _ = b >= g, w = 2 * b, T = {}, k = l.makeCalcdata(e, "x"), A = y.makeCalcdata(e, "y"), M = s(e, l, "x", k), S = s(e, y, "y", A), E = M.vals, L = S.vals; (e._x = E), (e._y = L), e.xperiodalignment && ((e._origX = k), (e._xStarts = M.starts), (e._xEnds = M.ends)), e.yperiodalignment && ((e._origY = A), (e._yStarts = S.starts), (e._yEnds = S.ends)); var C = new Array(w), P = new Array(b); for (r = 0; r < b; r++) (C[2 * r] = E[r] === m ? NaN : E[r]), (C[2 * r + 1] = L[r] === m ? NaN : L[r]), (P[r] = r); if ("log" === l.type) for (r = 0; r < w; r += 2) C[r] = l.c2l(C[r]); if ("log" === y.type) for (r = 1; r < w; r += 2) C[r] = y.c2l(C[r]); _ && "log" !== l.type && "log" !== y.type ? (T.tree = n(C)) : (T.ids = P), h(t, e); var I, O = (function (t, e, r, n, a, o) { var s = p.style(t, r); s.marker && (s.marker.positions = n); s.line && n.length > 1 && i.extendFlat(s.line, p.linePositions(t, r, n)); if (s.errorX || s.errorY) { var l = p.errorBarPositions(t, r, n, a, o); s.errorX && i.extendFlat(s.errorX, l.x), s.errorY && i.extendFlat(s.errorY, l.y); } s.text && (i.extendFlat( s.text, { positions: n }, p.textPosition(t, r, s.text, s.marker), ), i.extendFlat( s.textSel, { positions: n }, p.textPosition(t, r, s.text, s.markerSel), ), i.extendFlat( s.textUnsel, { positions: n }, p.textPosition(t, r, s.text, s.markerUnsel), )); return s; })(t, 0, e, C, E, L), z = d(t, x); return ( f(o, e), _ ? O.marker && (I = O.marker.sizeAvg || Math.max(O.marker.size, 3)) : (I = c(e, b)), u(t, e, l, y, E, L, I), O.errorX && v(e, l, O.errorX), O.errorY && v(e, y, O.errorY), O.fill && !z.fill2d && (z.fill2d = !0), O.marker && !z.scatter2d && (z.scatter2d = !0), O.line && !z.line2d && (z.line2d = !0), (!O.errorX && !O.errorY) || z.error2d || (z.error2d = !0), O.text && !z.glText && (z.glText = !0), O.marker && (O.marker.snap = b), z.lineOptions.push(O.line), z.errorXOptions.push(O.errorX), z.errorYOptions.push(O.errorY), z.fillOptions.push(O.fill), z.markerOptions.push(O.marker), z.markerSelectedOptions.push(O.markerSel), z.markerUnselectedOptions.push(O.markerUnsel), z.textOptions.push(O.text), z.textSelectedOptions.push(O.textSel), z.textUnselectedOptions.push(O.textUnsel), z.selectBatch.push([]), z.unselectBatch.push([]), (T._scene = z), (T.index = z.count), (T.x = E), (T.y = L), (T.positions = C), z.count++, [{ x: !1, y: !1, t: T, trace: e }] ); }; }, { "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/align_period": 563, "../../plots/cartesian/autorange": 565, "../../plots/cartesian/axis_ids": 570, "../scatter/calc": 937, "../scatter/colorscale_calc": 939, "./constants": 991, "./convert": 992, "./scene_update": 1e3, "@plotly/point-cluster": 59, }, ], 991: [ function (t, e, r) { "use strict"; e.exports = { TOO_MANY_POINTS: 1e5, SYMBOL_SDF_SIZE: 200, SYMBOL_SIZE: 20, SYMBOL_STROKE: 1, DOT_RE: /-dot/, OPEN_RE: /-open/, DASHES: { solid: [1], dot: [1, 1], dash: [4, 1], longdash: [8, 1], dashdot: [4, 1, 1, 1], longdashdot: [8, 1, 1, 1], }, }; }, {}, ], 992: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("svg-path-sdf"), a = t("color-normalize"), o = t("../../registry"), s = t("../../lib"), l = t("../../components/drawing"), c = t("../../plots/cartesian/axis_ids"), u = t("../../lib/gl_format_color").formatColor, f = t("../scatter/subtypes"), h = t("../scatter/make_bubble_size_func"), p = t("./helpers"), d = t("./constants"), m = t("../../constants/interactions").DESELECTDIM, g = { start: 1, left: 1, end: -1, right: -1, middle: 0, center: 0, bottom: 1, top: -1, }, v = t("../../components/fx/helpers").appendArrayPointValue; function y(t, e) { var r, i = t._fullLayout, a = e._length, o = e.textfont, l = e.textposition, c = Array.isArray(l) ? l : [l], u = o.color, f = o.size, h = o.family, p = {}, d = t._context.plotGlPixelRatio, m = e.texttemplate; if (m) { p.text = []; var g = i._d3locale, y = Array.isArray(m), x = y ? Math.min(m.length, a) : a, b = y ? function (t) { return m[t]; } : function () { return m; }; for (r = 0; r < x; r++) { var _ = { i: r }, w = e._module.formatLabels(_, e, i), T = {}; v(T, e, r); var k = e._meta || {}; p.text.push(s.texttemplateString(b(r), w, g, T, _, k)); } } else Array.isArray(e.text) && e.text.length < a ? (p.text = e.text.slice()) : (p.text = e.text); if (Array.isArray(p.text)) for (r = p.text.length; r < a; r++) p.text[r] = ""; for ( p.opacity = e.opacity, p.font = {}, p.align = [], p.baseline = [], r = 0; r < c.length; r++ ) { var A = c[r].split(/\s+/); switch (A[1]) { case "left": p.align.push("right"); break; case "right": p.align.push("left"); break; default: p.align.push(A[1]); } switch (A[0]) { case "top": p.baseline.push("bottom"); break; case "bottom": p.baseline.push("top"); break; default: p.baseline.push(A[0]); } } if (Array.isArray(u)) for (p.color = new Array(a), r = 0; r < a; r++) p.color[r] = u[r]; else p.color = u; if (s.isArrayOrTypedArray(f) || Array.isArray(h)) for (p.font = new Array(a), r = 0; r < a; r++) { var M = (p.font[r] = {}); (M.size = (s.isTypedArray(f) ? f[r] : Array.isArray(f) ? n(f[r]) ? f[r] : 0 : f) * d), (M.family = Array.isArray(h) ? h[r] : h); } else p.font = { size: f * d, family: h }; return p; } function x(t, e) { var r, n, i = e._length, o = e.marker, l = {}, c = s.isArrayOrTypedArray(o.symbol), f = s.isArrayOrTypedArray(o.angle), d = s.isArrayOrTypedArray(o.color), m = s.isArrayOrTypedArray(o.line.color), g = s.isArrayOrTypedArray(o.opacity), v = s.isArrayOrTypedArray(o.size), y = s.isArrayOrTypedArray(o.line.width); if ( (c || (n = p.isOpenSymbol(o.symbol)), c || d || m || g || f) ) { (l.symbols = new Array(i)), (l.angles = new Array(i)), (l.colors = new Array(i)), (l.borderColors = new Array(i)); var x = o.symbol, b = o.angle, _ = u(o, o.opacity, i), w = u(o.line, o.opacity, i); if (!Array.isArray(w[0])) { var T = w; for (w = Array(i), r = 0; r < i; r++) w[r] = T; } if (!Array.isArray(_[0])) { var k = _; for (_ = Array(i), r = 0; r < i; r++) _[r] = k; } if (!Array.isArray(x)) { var A = x; for (x = Array(i), r = 0; r < i; r++) x[r] = A; } if (!Array.isArray(b)) { var M = b; for (b = Array(i), r = 0; r < i; r++) b[r] = M; } for ( l.symbols = x, l.angles = b, l.colors = _, l.borderColors = w, r = 0; r < i; r++ ) c && (n = p.isOpenSymbol(o.symbol[r])), n && ((w[r] = _[r].slice()), (_[r] = _[r].slice()), (_[r][3] = 0)); for ( l.opacity = e.opacity, l.markers = new Array(i), r = 0; r < i; r++ ) l.markers[r] = E( { mx: l.symbols[r], ma: l.angles[r] }, e, ); } else n ? ((l.color = a(o.color, "uint8")), (l.color[3] = 0), (l.borderColor = a(o.color, "uint8"))) : ((l.color = a(o.color, "uint8")), (l.borderColor = a(o.line.color, "uint8"))), (l.opacity = e.opacity * o.opacity), (l.marker = E({ mx: o.symbol, ma: o.angle }, e)); var S, L = h(e, 1); if (v || y) { var C, P = (l.sizes = new Array(i)), I = (l.borderSizes = new Array(i)), O = 0; if (v) { for (r = 0; r < i; r++) (P[r] = L(o.size[r])), (O += P[r]); C = O / i; } else for (S = L(o.size), r = 0; r < i; r++) P[r] = S; if (y) for (r = 0; r < i; r++) I[r] = o.line.width[r]; else for (S = o.line.width, r = 0; r < i; r++) I[r] = S; l.sizeAvg = C; } else (l.size = L((o && o.size) || 10)), (l.borderSizes = L(o.line.width)); return l; } function b(t, e, r) { var n = e.marker, i = {}; return r ? (r.marker && r.marker.symbol ? (i = x(0, s.extendFlat({}, n, r.marker))) : r.marker && (r.marker.size && (i.size = r.marker.size), r.marker.color && (i.colors = r.marker.color), void 0 !== r.marker.opacity && (i.opacity = r.marker.opacity)), i) : i; } function _(t, e, r) { var n = {}; if (!r) return n; if (r.textfont) { var i = { opacity: 1, text: e.text, texttemplate: e.texttemplate, textposition: e.textposition, textfont: s.extendFlat({}, e.textfont), }; r.textfont && s.extendFlat(i.textfont, r.textfont), (n = y(t, i)); } return n; } function w(t, e, r) { var n = { capSize: 2 * e.width * r, lineWidth: e.thickness * r, color: e.color, }; return e.copy_ystyle && (n = t.error_y), n; } var T = d.SYMBOL_SDF_SIZE, k = d.SYMBOL_SIZE, A = d.SYMBOL_STROKE, M = {}, S = l.symbolFuncs[0](0.05 * k); function E(t, e) { var r, n, a = t.mx; if ("circle" === a) return null; var o = l.symbolNumber(a), s = l.symbolFuncs[o % 100], c = !!l.symbolNoDot[o % 100], u = !!l.symbolNoFill[o % 100], f = p.isDotSymbol(a); if ((t.ma && (a += "_" + t.ma), M[a])) return M[a]; var h = l.getMarkerAngle(t, e); return ( (r = f && !c ? s(1.1 * k, h) + S : s(k, h)), (n = i(r, { w: T, h: T, viewBox: [-k, -k, k, k], stroke: u ? A : -A, })), (M[a] = n), n || null ); } e.exports = { style: function (t, e) { var r, n = { marker: void 0, markerSel: void 0, markerUnsel: void 0, line: void 0, fill: void 0, errorX: void 0, errorY: void 0, text: void 0, textSel: void 0, textUnsel: void 0, }, i = t._context.plotGlPixelRatio; if (!0 !== e.visible) return n; if ( (f.hasText(e) && ((n.text = y(t, e)), (n.textSel = _(t, e, e.selected)), (n.textUnsel = _(t, e, e.unselected))), f.hasMarkers(e) && ((n.marker = x(t, e)), (n.markerSel = b(t, e, e.selected)), (n.markerUnsel = b(t, e, e.unselected)), !e.unselected && s.isArrayOrTypedArray(e.marker.opacity))) ) { var a = e.marker.opacity; for ( n.markerUnsel.opacity = new Array(a.length), r = 0; r < a.length; r++ ) n.markerUnsel.opacity[r] = m * a[r]; } if (f.hasLines(e)) { n.line = { overlay: !0, thickness: e.line.width * i, color: e.line.color, opacity: e.opacity, }; var o = (d.DASHES[e.line.dash] || [1]).slice(); for (r = 0; r < o.length; ++r) o[r] *= e.line.width * i; n.line.dashes = o; } return ( e.error_x && e.error_x.visible && (n.errorX = w(e, e.error_x, i)), e.error_y && e.error_y.visible && (n.errorY = w(e, e.error_y, i)), e.fill && "none" !== e.fill && (n.fill = { closed: !0, fill: e.fillcolor, thickness: 0, }), n ); }, markerStyle: x, markerSelection: b, linePositions: function (t, e, r) { var n, i, a = r.length, o = a / 2; if (f.hasLines(e) && o) if ("hv" === e.line.shape) { for (n = [], i = 0; i < o - 1; i++) isNaN(r[2 * i]) || isNaN(r[2 * i + 1]) ? n.push(NaN, NaN, NaN, NaN) : (n.push(r[2 * i], r[2 * i + 1]), isNaN(r[2 * i + 2]) || isNaN(r[2 * i + 3]) ? n.push(NaN, NaN) : n.push(r[2 * i + 2], r[2 * i + 1])); n.push(r[a - 2], r[a - 1]); } else if ("hvh" === e.line.shape) { for (n = [], i = 0; i < o - 1; i++) if ( isNaN(r[2 * i]) || isNaN(r[2 * i + 1]) || isNaN(r[2 * i + 2]) || isNaN(r[2 * i + 3]) ) isNaN(r[2 * i]) || isNaN(r[2 * i + 1]) ? n.push(NaN, NaN) : n.push(r[2 * i], r[2 * i + 1]), n.push(NaN, NaN); else { var s = (r[2 * i] + r[2 * i + 2]) / 2; n.push( r[2 * i], r[2 * i + 1], s, r[2 * i + 1], s, r[2 * i + 3], ); } n.push(r[a - 2], r[a - 1]); } else if ("vhv" === e.line.shape) { for (n = [], i = 0; i < o - 1; i++) if ( isNaN(r[2 * i]) || isNaN(r[2 * i + 1]) || isNaN(r[2 * i + 2]) || isNaN(r[2 * i + 3]) ) isNaN(r[2 * i]) || isNaN(r[2 * i + 1]) ? n.push(NaN, NaN) : n.push(r[2 * i], r[2 * i + 1]), n.push(NaN, NaN); else { var l = (r[2 * i + 1] + r[2 * i + 3]) / 2; n.push( r[2 * i], r[2 * i + 1], r[2 * i], l, r[2 * i + 2], l, ); } n.push(r[a - 2], r[a - 1]); } else if ("vh" === e.line.shape) { for (n = [], i = 0; i < o - 1; i++) isNaN(r[2 * i]) || isNaN(r[2 * i + 1]) ? n.push(NaN, NaN, NaN, NaN) : (n.push(r[2 * i], r[2 * i + 1]), isNaN(r[2 * i + 2]) || isNaN(r[2 * i + 3]) ? n.push(NaN, NaN) : n.push(r[2 * i], r[2 * i + 3])); n.push(r[a - 2], r[a - 1]); } else n = r; var c = !1; for (i = 0; i < n.length; i++) if (isNaN(n[i])) { c = !0; break; } var u = c || n.length > d.TOO_MANY_POINTS || f.hasMarkers(e) ? "rect" : "round"; if (c && e.connectgaps) { var h = n[0], p = n[1]; for (i = 0; i < n.length; i += 2) isNaN(n[i]) || isNaN(n[i + 1]) ? ((n[i] = h), (n[i + 1] = p)) : ((h = n[i]), (p = n[i + 1])); } return { join: u, positions: n }; }, errorBarPositions: function (t, e, r, i, a) { var s = o.getComponentMethod( "errorbars", "makeComputeError", ), l = c.getFromId(t, e.xaxis, "x"), u = c.getFromId(t, e.yaxis, "y"), f = r.length / 2, h = {}; function p(t, i) { var a = i._id.charAt(0), o = e["error_" + a]; if ( o && o.visible && ("linear" === i.type || "log" === i.type) ) { for ( var l = s(o), c = { x: 0, y: 1 }[a], u = { x: [0, 1, 2, 3], y: [2, 3, 0, 1] }[a], p = new Float64Array(4 * f), d = 1 / 0, m = -1 / 0, g = 0, v = 0; g < f; g++, v += 4 ) { var y = t[g]; if (n(y)) { var x = r[2 * g + c], b = l(y, g), _ = b[0], w = b[1]; if (n(_) && n(w)) { var T = y - _, k = y + w; (p[v + u[0]] = x - i.c2l(T)), (p[v + u[1]] = i.c2l(k) - x), (p[v + u[2]] = 0), (p[v + u[3]] = 0), (d = Math.min(d, y - _)), (m = Math.max(m, y + w)); } } } h[a] = { positions: r, errors: p, _bnds: [d, m] }; } } return p(i, l), p(a, u), h; }, textPosition: function (t, e, r, n) { var i, a = e._length, o = {}; if (f.hasMarkers(e)) { var s = r.font, l = r.align, c = r.baseline; for (o.offset = new Array(a), i = 0; i < a; i++) { var u = n.sizes ? n.sizes[i] : n.size, h = Array.isArray(s) ? s[i].size : s.size, p = Array.isArray(l) ? l.length > 1 ? l[i] : l[0] : l, d = Array.isArray(c) ? c.length > 1 ? c[i] : c[0] : c, m = g[p], v = g[d], y = u ? u / 0.8 + 1 : 0, x = -v * y - 0.5 * v; o.offset[i] = [(m * y) / h, x / h]; } } return o; }, }; }, { "../../components/drawing": 389, "../../components/fx/helpers": 403, "../../constants/interactions": 490, "../../lib": 515, "../../lib/gl_format_color": 511, "../../plots/cartesian/axis_ids": 570, "../../registry": 647, "../scatter/make_bubble_size_func": 953, "../scatter/subtypes": 961, "./constants": 991, "./helpers": 996, "color-normalize": 89, "fast-isnumeric": 190, "svg-path-sdf": 311, }, ], 993: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../registry"), a = t("./helpers"), o = t("./attributes"), s = t("../scatter/constants"), l = t("../scatter/subtypes"), c = t("../scatter/xy_defaults"), u = t("../scatter/period_defaults"), f = t("../scatter/marker_defaults"), h = t("../scatter/line_defaults"), p = t("../scatter/fillcolor_defaults"), d = t("../scatter/text_defaults"); e.exports = function (t, e, r, m) { function g(r, i) { return n.coerce(t, e, o, r, i); } var v = !!t.marker && a.isOpenSymbol(t.marker.symbol), y = l.isBubble(t), x = c(t, e, m, g); if (x) { u(t, e, m, g), g("xhoverformat"), g("yhoverformat"); var b = x < s.PTS_LINESONLY ? "lines+markers" : "lines"; g("text"), g("hovertext"), g("hovertemplate"), g("mode", b), l.hasLines(e) && (g("connectgaps"), h(t, e, r, m, g), g("line.shape")), l.hasMarkers(e) && (f(t, e, r, m, g, { noAngleRef: !0, noStandOff: !0 }), g("marker.line.width", v || y ? 1 : 0)), l.hasText(e) && (g("texttemplate"), d(t, e, m, g)); var _ = (e.line || {}).color, w = (e.marker || {}).color; g("fill"), "none" !== e.fill && p(t, e, r, g); var T = i.getComponentMethod( "errorbars", "supplyDefaults", ); T(t, e, _ || w || r, { axis: "y" }), T(t, e, _ || w || r, { axis: "x", inherit: "y" }), n.coerceSelectionMarkerOpacity(e, g); } else e.visible = !1; }; }, { "../../lib": 515, "../../registry": 647, "../scatter/constants": 940, "../scatter/fillcolor_defaults": 944, "../scatter/line_defaults": 949, "../scatter/marker_defaults": 955, "../scatter/period_defaults": 956, "../scatter/subtypes": 961, "../scatter/text_defaults": 962, "../scatter/xy_defaults": 963, "./attributes": 988, "./helpers": 996, }, ], 994: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/color"), a = t("../../constants/interactions").DESELECTDIM; e.exports = { styleTextSelection: function (t) { var e, r, o = t[0], s = o.trace, l = o.t, c = l._scene, u = l.index, f = c.selectBatch[u], h = c.unselectBatch[u], p = c.textOptions[u], d = c.textSelectedOptions[u] || {}, m = c.textUnselectedOptions[u] || {}, g = n.extendFlat({}, p); if (f.length || h.length) { var v = d.color, y = m.color, x = p.color, b = Array.isArray(x); for ( g.color = new Array(s._length), e = 0; e < f.length; e++ ) (r = f[e]), (g.color[r] = v || (b ? x[r] : x)); for (e = 0; e < h.length; e++) { r = h[e]; var _ = b ? x[r] : x; g.color[r] = y || (v ? _ : i.addOpacity(_, a)); } } c.glText[u].update(g); }, }; }, { "../../components/color": 367, "../../constants/interactions": 490, "../../lib": 515, }, ], 995: [ function (t, e, r) { "use strict"; var n = t("../scatter/format_labels"); e.exports = function (t, e, r) { var i = t.i; return ( "x" in t || (t.x = e._x[i]), "y" in t || (t.y = e._y[i]), n(t, e, r) ); }; }, { "../scatter/format_labels": 945 }, ], 996: [ function (t, e, r) { "use strict"; var n = t("./constants"); (r.isOpenSymbol = function (t) { return "string" == typeof t ? n.OPEN_RE.test(t) : t % 200 > 100; }), (r.isDotSymbol = function (t) { return "string" == typeof t ? n.DOT_RE.test(t) : t > 200; }); }, { "./constants": 991 }, ], 997: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"), a = t("../scatter/get_trace_color"); function o(t, e, r, o) { var s = t.xa, l = t.ya, c = t.distance, u = t.dxy, f = t.index, h = { pointNumber: f, x: e[f], y: r[f] }; (h.tx = Array.isArray(o.text) ? o.text[f] : o.text), (h.htx = Array.isArray(o.hovertext) ? o.hovertext[f] : o.hovertext), (h.data = Array.isArray(o.customdata) ? o.customdata[f] : o.customdata), (h.tp = Array.isArray(o.textposition) ? o.textposition[f] : o.textposition); var p = o.textfont; p && ((h.ts = i.isArrayOrTypedArray(p.size) ? p.size[f] : p.size), (h.tc = Array.isArray(p.color) ? p.color[f] : p.color), (h.tf = Array.isArray(p.family) ? p.family[f] : p.family)); var d = o.marker; d && ((h.ms = i.isArrayOrTypedArray(d.size) ? d.size[f] : d.size), (h.mo = i.isArrayOrTypedArray(d.opacity) ? d.opacity[f] : d.opacity), (h.mx = i.isArrayOrTypedArray(d.symbol) ? d.symbol[f] : d.symbol), (h.ma = i.isArrayOrTypedArray(d.angle) ? d.angle[f] : d.angle), (h.mc = i.isArrayOrTypedArray(d.color) ? d.color[f] : d.color)); var m = d && d.line; m && ((h.mlc = Array.isArray(m.color) ? m.color[f] : m.color), (h.mlw = i.isArrayOrTypedArray(m.width) ? m.width[f] : m.width)); var g = d && d.gradient; g && "none" !== g.type && ((h.mgt = Array.isArray(g.type) ? g.type[f] : g.type), (h.mgc = Array.isArray(g.color) ? g.color[f] : g.color)); var v = s.c2p(h.x, !0), y = l.c2p(h.y, !0), x = h.mrc || 1, b = o.hoverlabel; b && ((h.hbg = Array.isArray(b.bgcolor) ? b.bgcolor[f] : b.bgcolor), (h.hbc = Array.isArray(b.bordercolor) ? b.bordercolor[f] : b.bordercolor), (h.hts = i.isArrayOrTypedArray(b.font.size) ? b.font.size[f] : b.font.size), (h.htc = Array.isArray(b.font.color) ? b.font.color[f] : b.font.color), (h.htf = Array.isArray(b.font.family) ? b.font.family[f] : b.font.family), (h.hnl = i.isArrayOrTypedArray(b.namelength) ? b.namelength[f] : b.namelength)); var _ = o.hoverinfo; _ && (h.hi = Array.isArray(_) ? _[f] : _); var w = o.hovertemplate; w && (h.ht = Array.isArray(w) ? w[f] : w); var T = {}; T[t.index] = h; var k = o._origX, A = o._origY, M = i.extendFlat({}, t, { color: a(o, h), x0: v - x, x1: v + x, xLabelVal: k ? k[f] : h.x, y0: y - x, y1: y + x, yLabelVal: A ? A[f] : h.y, cd: T, distance: c, spikeDistance: u, hovertemplate: h.ht, }); return ( h.htx ? (M.text = h.htx) : h.tx ? (M.text = h.tx) : o.text && (M.text = o.text), i.fillText(h, o, M), n.getComponentMethod("errorbars", "hoverInfo")(h, o, M), M ); } e.exports = { hoverPoints: function (t, e, r, n) { var i, a, s, l, c, u, f, h, p, d, m = t.cd, g = m[0].t, v = m[0].trace, y = t.xa, x = t.ya, b = g.x, _ = g.y, w = y.c2p(e), T = x.c2p(r), k = t.distance; if (g.tree) { var A = y.p2c(w - k), M = y.p2c(w + k), S = x.p2c(T - k), E = x.p2c(T + k); i = "x" === n ? g.tree.range( Math.min(A, M), Math.min(x._rl[0], x._rl[1]), Math.max(A, M), Math.max(x._rl[0], x._rl[1]), ) : g.tree.range( Math.min(A, M), Math.min(S, E), Math.max(A, M), Math.max(S, E), ); } else i = g.ids; var L = k; if ("x" === n) { var C = !!v.xperiodalignment, P = !!v.yperiodalignment; for (u = 0; u < i.length; u++) { if ( ((l = b[(a = i[u])]), (f = Math.abs(y.c2p(l) - w)), C) ) { var I = y.c2p(v._xStarts[a]), O = y.c2p(v._xEnds[a]); f = w >= Math.min(I, O) && w <= Math.max(I, O) ? 0 : 1 / 0; } if (f < L) { if (((L = f), (c = _[a]), (h = x.c2p(c) - T), P)) { var z = x.c2p(v._yStarts[a]), D = x.c2p(v._yEnds[a]); h = T >= Math.min(z, D) && T <= Math.max(z, D) ? 0 : 1 / 0; } (d = Math.sqrt(f * f + h * h)), (s = i[u]); } } } else for (u = i.length - 1; u > -1; u--) (l = b[(a = i[u])]), (c = _[a]), (f = y.c2p(l) - w), (h = x.c2p(c) - T), (p = Math.sqrt(f * f + h * h)) < L && ((L = d = p), (s = a)); return ( (t.index = s), (t.distance = L), (t.dxy = d), void 0 === s ? [t] : [o(t, b, _, v)] ); }, calcHover: o, }; }, { "../../lib": 515, "../../registry": 647, "../scatter/get_trace_color": 946, }, ], 998: [ function (t, e, r) { arguments[4][905][0].apply(r, arguments); }, { "./base_index": 989, "./plot": 999, dup: 905 }, ], 999: [ function (t, e, r) { "use strict"; var n = t("regl-scatter2d"), i = t("regl-line2d"), a = t("regl-error2d"), o = t("gl-text"), s = t("../../lib"), l = t("../../components/dragelement/helpers").selectMode, c = t("../../lib/prepare_regl"), u = t("../scatter/subtypes"), f = t("../scatter/link_traces"), h = t("./edit_style").styleTextSelection, p = {}; function d(t, e, r, n) { var i = t._size, a = t.width * n, o = t.height * n, s = i.l * n, l = i.b * n, c = i.r * n, u = i.t * n, f = i.w * n, h = i.h * n; return [ s + e.domain[0] * f, l + r.domain[0] * h, a - c - (1 - e.domain[1]) * f, o - u - (1 - r.domain[1]) * h, ]; } (e.exports = function (t, e, r) { if (r.length) { var m, g, v = t._fullLayout, y = e._scene, x = e.xaxis, b = e.yaxis; if (y) if ( c( t, [ "ANGLE_instanced_arrays", "OES_element_index_uint", ], p, ) ) { var _ = y.count, w = v._glcanvas.data()[0].regl; if ((f(t, e, r), y.dirty)) { if ( (!0 === y.error2d && (y.error2d = a(w)), !0 === y.line2d && (y.line2d = i(w)), !0 === y.scatter2d && (y.scatter2d = n(w)), !0 === y.fill2d && (y.fill2d = i(w)), !0 === y.glText) ) for (y.glText = new Array(_), m = 0; m < _; m++) y.glText[m] = new o(w); if (y.glText) { if (_ > y.glText.length) { var T = _ - y.glText.length; for (m = 0; m < T; m++) y.glText.push(new o(w)); } else if (_ < y.glText.length) { var k = y.glText.length - _; y.glText.splice(_, k).forEach(function (t) { t.destroy(); }); } for (m = 0; m < _; m++) y.glText[m].update(y.textOptions[m]); } if ( (y.line2d && (y.line2d.update(y.lineOptions), (y.lineOptions = y.lineOptions.map( function (t) { if (t && t.positions) { for ( var e = t.positions, r = 0; r < e.length && (isNaN(e[r]) || isNaN(e[r + 1])); ) r += 2; for ( var n = e.length - 2; n > r && (isNaN(e[n]) || isNaN(e[n + 1])); ) n -= 2; t.positions = e.slice(r, n + 2); } return t; }, )), y.line2d.update(y.lineOptions)), y.error2d) ) { var A = (y.errorXOptions || []).concat( y.errorYOptions || [], ); y.error2d.update(A); } y.scatter2d && y.scatter2d.update(y.markerOptions), (y.fillOrder = s.repeat(null, _)), y.fill2d && ((y.fillOptions = y.fillOptions.map( function (t, e) { var n = r[e]; if (t && n && n[0] && n[0].trace) { var i, a, o = n[0], s = o.trace, l = o.t, c = y.lineOptions[e], u = []; s._ownfill && u.push(e), s._nexttrace && u.push(e + 1), u.length && (y.fillOrder[e] = u); var f, h, p = [], d = (c && c.positions) || l.positions; if ("tozeroy" === s.fill) { for ( f = 0; f < d.length && isNaN(d[f + 1]); ) f += 2; for ( h = d.length - 2; h > f && isNaN(d[h + 1]); ) h -= 2; 0 !== d[f + 1] && (p = [d[f], 0]), (p = p.concat(d.slice(f, h + 2))), 0 !== d[h + 1] && (p = p.concat([d[h], 0])); } else if ("tozerox" === s.fill) { for ( f = 0; f < d.length && isNaN(d[f]); ) f += 2; for ( h = d.length - 2; h > f && isNaN(d[h]); ) h -= 2; 0 !== d[f] && (p = [0, d[f + 1]]), (p = p.concat(d.slice(f, h + 2))), 0 !== d[h] && (p = p.concat([0, d[h + 1]])); } else if ( "toself" === s.fill || "tonext" === s.fill ) { for ( p = [], i = 0, t.splitNull = !0, a = 0; a < d.length; a += 2 ) (isNaN(d[a]) || isNaN(d[a + 1])) && ((p = p.concat(d.slice(i, a))).push( d[i], d[i + 1], ), p.push(null, null), (i = a + 2)); (p = p.concat(d.slice(i))), i && p.push(d[i], d[i + 1]); } else { var m = s._nexttrace; if (m) { var g = y.lineOptions[e + 1]; if (g) { var v = g.positions; if ("tonexty" === s.fill) { for ( p = d.slice(), e = Math.floor(v.length / 2); e--; ) { var x = v[2 * e], b = v[2 * e + 1]; isNaN(x) || isNaN(b) || p.push(x, b); } t.fill = m.fillcolor; } } } } if ( s._prevtrace && "tonext" === s._prevtrace.fill ) { var _ = y.lineOptions[e - 1].positions, w = p.length / 2, T = [(i = w)]; for (a = 0; a < _.length; a += 2) (isNaN(_[a]) || isNaN(_[a + 1])) && (T.push(a / 2 + w + 1), (i = a + 2)); (p = p.concat(_)), (t.hole = T); } return ( (t.fillmode = s.fill), (t.opacity = s.opacity), (t.positions = p), t ); } }, )), y.fill2d.update(y.fillOptions)); } var M = v.dragmode, S = l(M), E = v.clickmode.indexOf("select") > -1; for (m = 0; m < _; m++) { var L = r[m][0], C = L.trace, P = L.t, I = P.index, O = C._length, z = P.x, D = P.y; if (C.selectedpoints || S || E) { if ((S || (S = !0), C.selectedpoints)) { var R = (y.selectBatch[I] = s.selIndices2selPoints(C)), F = {}; for (g = 0; g < R.length; g++) F[R[g]] = 1; var B = []; for (g = 0; g < O; g++) F[g] || B.push(g); y.unselectBatch[I] = B; } var N = (P.xpx = new Array(O)), j = (P.ypx = new Array(O)); for (g = 0; g < O; g++) (N[g] = x.c2p(z[g])), (j[g] = b.c2p(D[g])); } else P.xpx = P.ypx = null; } if (S) { if ( (y.select2d || (y.select2d = n(v._glcanvas.data()[1].regl)), y.scatter2d) ) { var U = new Array(_); for (m = 0; m < _; m++) U[m] = y.selectBatch[m].length || y.unselectBatch[m].length ? y.markerUnselectedOptions[m] : {}; y.scatter2d.update(U); } y.select2d && (y.select2d.update(y.markerOptions), y.select2d.update(y.markerSelectedOptions)), y.glText && r.forEach(function (t) { var e = ((t || [])[0] || {}).trace || {}; u.hasText(e) && h(t); }); } else y.scatter2d && y.scatter2d.update(y.markerOptions); var V = { viewport: d(v, x, b, t._context.plotGlPixelRatio), range: [ (x._rl || x.range)[0], (b._rl || b.range)[0], (x._rl || x.range)[1], (b._rl || b.range)[1], ], }, H = s.repeat(V, y.count); y.fill2d && y.fill2d.update(H), y.line2d && y.line2d.update(H), y.error2d && y.error2d.update(H.concat(H)), y.scatter2d && y.scatter2d.update(H), y.select2d && y.select2d.update(H), y.glText && y.glText.forEach(function (t) { t.update(V); }); } else y.init(); } }).reglPrecompiled = p; }, { "../../components/dragelement/helpers": 385, "../../lib": 515, "../../lib/prepare_regl": 528, "../scatter/link_traces": 952, "../scatter/subtypes": 961, "./edit_style": 994, "gl-text": 225, "regl-error2d": 280, "regl-line2d": 281, "regl-scatter2d": 282, }, ], 1e3: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e) { var r = e._scene, i = { count: 0, dirty: !0, lineOptions: [], fillOptions: [], markerOptions: [], markerSelectedOptions: [], markerUnselectedOptions: [], errorXOptions: [], errorYOptions: [], textOptions: [], textSelectedOptions: [], textUnselectedOptions: [], selectBatch: [], unselectBatch: [], }, a = { fill2d: !1, scatter2d: !1, error2d: !1, line2d: !1, glText: !1, select2d: !1, }; return ( e._scene || (((r = e._scene = {}).init = function () { n.extendFlat(r, a, i); }), r.init(), (r.update = function (t) { var e = n.repeat(t, r.count); if ( (r.fill2d && r.fill2d.update(e), r.scatter2d && r.scatter2d.update(e), r.line2d && r.line2d.update(e), r.error2d && r.error2d.update(e.concat(e)), r.select2d && r.select2d.update(e), r.glText) ) for (var i = 0; i < r.count; i++) r.glText[i].update(t); }), (r.draw = function () { for ( var t = r.count, e = r.fill2d, i = r.error2d, a = r.line2d, o = r.scatter2d, s = r.glText, l = r.select2d, c = r.selectBatch, u = r.unselectBatch, f = 0; f < t; f++ ) { if ( (e && r.fillOrder[f] && e.draw(r.fillOrder[f]), a && r.lineOptions[f] && a.draw(f), i && (r.errorXOptions[f] && i.draw(f), r.errorYOptions[f] && i.draw(f + t)), o && r.markerOptions[f]) ) if (u[f].length) { var h = n.repeat([], r.count); (h[f] = u[f]), o.draw(h); } else c[f].length || o.draw(f); s[f] && r.textOptions[f] && s[f].render(); } l && l.draw(c), (r.dirty = !1); }), (r.destroy = function () { r.fill2d && r.fill2d.destroy && r.fill2d.destroy(), r.scatter2d && r.scatter2d.destroy && r.scatter2d.destroy(), r.error2d && r.error2d.destroy && r.error2d.destroy(), r.line2d && r.line2d.destroy && r.line2d.destroy(), r.select2d && r.select2d.destroy && r.select2d.destroy(), r.glText && r.glText.forEach(function (t) { t.destroy && t.destroy(); }), (r.lineOptions = null), (r.fillOptions = null), (r.markerOptions = null), (r.markerSelectedOptions = null), (r.markerUnselectedOptions = null), (r.errorXOptions = null), (r.errorYOptions = null), (r.textOptions = null), (r.textSelectedOptions = null), (r.textUnselectedOptions = null), (r.selectBatch = null), (r.unselectBatch = null), (e._scene = null); })), r.dirty || n.extendFlat(r, i), r ); }; }, { "../../lib": 515 }, ], 1001: [ function (t, e, r) { "use strict"; var n = t("../scatter/subtypes"), i = t("./edit_style").styleTextSelection; e.exports = function (t, e) { var r = t.cd, a = t.xaxis, o = t.yaxis, s = [], l = r[0].trace, c = r[0].t, u = l._length, f = c.x, h = c.y, p = c._scene, d = c.index; if (!p) return s; var m = n.hasText(l), g = n.hasMarkers(l), v = !g && !m; if (!0 !== l.visible || v) return s; var y = [], x = []; if (!1 !== e && !e.degenerate) for (var b = 0; b < u; b++) e.contains([c.xpx[b], c.ypx[b]], !1, b, t) ? (y.push(b), s.push({ pointNumber: b, x: a.c2d(f[b]), y: o.c2d(h[b]), })) : x.push(b); if (g) { var _ = p.scatter2d; if (y.length || x.length) { if ( !p.selectBatch[d].length && !p.unselectBatch[d].length ) { var w = new Array(p.count); (w[d] = p.markerUnselectedOptions[d]), _.update.apply(_, w); } } else { var T = new Array(p.count); (T[d] = p.markerOptions[d]), _.update.apply(_, T); } } return ( (p.selectBatch[d] = y), (p.unselectBatch[d] = x), m && i(r), s ); }; }, { "../scatter/subtypes": 961, "./edit_style": 994 }, ], 1002: [ function (t, e, r) { "use strict"; var n = t( "../../plots/template_attributes", ).hovertemplateAttrs, i = t("../../plots/template_attributes").texttemplateAttrs, a = t("../scattergeo/attributes"), o = t("../scatter/attributes"), s = t("../../plots/mapbox/layout_attributes"), l = t("../../plots/attributes"), c = t("../../components/colorscale/attributes"), u = t("../../lib/extend").extendFlat, f = t("../../plot_api/edit_types").overrideAll, h = t("../../plots/mapbox/layout_attributes"), p = a.line, d = a.marker; e.exports = f( { lon: a.lon, lat: a.lat, cluster: { enabled: { valType: "boolean" }, maxzoom: u({}, h.layers.maxzoom, {}), step: { valType: "number", arrayOk: !0, dflt: -1, min: -1, }, size: { valType: "number", arrayOk: !0, dflt: 20, min: 0, }, color: { valType: "color", arrayOk: !0 }, opacity: u({}, d.opacity, { dflt: 1 }), }, mode: u({}, o.mode, { dflt: "markers" }), text: u({}, o.text, {}), texttemplate: i( { editType: "plot" }, { keys: ["lat", "lon", "text"] }, ), hovertext: u({}, o.hovertext, {}), line: { color: p.color, width: p.width }, connectgaps: o.connectgaps, marker: u( { symbol: { valType: "string", dflt: "circle", arrayOk: !0, }, angle: { valType: "number", dflt: "auto", arrayOk: !0, }, allowoverlap: { valType: "boolean", dflt: !1 }, opacity: d.opacity, size: d.size, sizeref: d.sizeref, sizemin: d.sizemin, sizemode: d.sizemode, }, c("marker"), ), fill: a.fill, fillcolor: o.fillcolor, textfont: s.layers.symbol.textfont, textposition: s.layers.symbol.textposition, below: { valType: "string" }, selected: { marker: o.selected.marker }, unselected: { marker: o.unselected.marker }, hoverinfo: u({}, l.hoverinfo, { flags: ["lon", "lat", "text", "name"], }), hovertemplate: n(), }, "calc", "nested", ); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plots/attributes": 562, "../../plots/mapbox/layout_attributes": 624, "../../plots/template_attributes": 642, "../scatter/attributes": 936, "../scattergeo/attributes": 978, }, ], 1003: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../lib"), a = t("../../constants/numerical").BADNUM, o = t("../../lib/geojson_utils"), s = t("../../components/colorscale"), l = t("../../components/drawing"), c = t("../scatter/make_bubble_size_func"), u = t("../scatter/subtypes"), f = t("../../plots/mapbox/convert_text_opts"), h = t("../../components/fx/helpers").appendArrayPointValue, p = t("../../lib/svg_text_utils").NEWLINES, d = t("../../lib/svg_text_utils").BR_TAG_ALL; function m(t) { return { type: t, geojson: o.makeBlank(), layout: { visibility: "none" }, filter: null, paint: {}, }; } function g(t, e) { return i.isArrayOrTypedArray(t) ? e ? function (e) { return n(t[e]) ? +t[e] : 0; } : function (e) { return t[e]; } : t ? function () { return t; } : v; } function v() { return ""; } function y(t) { return t[0] === a; } function x(t, e) { var r; if (i.isArrayOrTypedArray(t) && i.isArrayOrTypedArray(e)) { r = ["step", ["get", "point_count"], t[0]]; for (var n = 1; n < t.length; n++) r.push(e[n - 1], t[n]); } else r = t; return r; } e.exports = function (t, e) { var r, a = e[0].trace, b = !0 === a.visible && 0 !== a._length, _ = "none" !== a.fill, w = u.hasLines(a), T = u.hasMarkers(a), k = u.hasText(a), A = T && "circle" === a.marker.symbol, M = T && "circle" !== a.marker.symbol, S = a.cluster && a.cluster.enabled, E = m("fill"), L = m("line"), C = m("circle"), P = m("symbol"), I = { fill: E, line: L, circle: C, symbol: P }; if (!b) return I; if ( ((_ || w) && (r = o.calcTraceToLineCoords(e)), _ && ((E.geojson = o.makePolygon(r)), (E.layout.visibility = "visible"), i.extendFlat(E.paint, { "fill-color": a.fillcolor })), w && ((L.geojson = o.makeLine(r)), (L.layout.visibility = "visible"), i.extendFlat(L.paint, { "line-width": a.line.width, "line-color": a.line.color, "line-opacity": a.opacity, })), A) ) { var O = (function (t) { var e, r, a, o, u = t[0].trace, f = u.marker, h = u.selectedpoints, p = i.isArrayOrTypedArray(f.color), d = i.isArrayOrTypedArray(f.size), m = i.isArrayOrTypedArray(f.opacity); function g(t) { return u.opacity * t; } p && (r = s.hasColorscale(u, "marker") ? s.makeColorScaleFuncFromTrace(f) : i.identity); d && (a = c(u)); m && (o = function (t) { return g(n(t) ? +i.constrain(t, 0, 1) : 0); }); var v, x = []; for (e = 0; e < t.length; e++) { var b = t[e], _ = b.lonlat; if (!y(_)) { var w = {}; r && (w.mcc = b.mcc = r(b.mc)), a && (w.mrc = b.mrc = a(b.ms)), o && (w.mo = o(b.mo)), h && (w.selected = b.selected || 0), x.push({ type: "Feature", id: e + 1, geometry: { type: "Point", coordinates: _ }, properties: w, }); } } if (h) for ( v = l.makeSelectedPointStyleFns(u), e = 0; e < x.length; e++ ) { var T = x[e].properties; v.selectedOpacityFn && (T.mo = g(v.selectedOpacityFn(T))), v.selectedColorFn && (T.mcc = v.selectedColorFn(T)), v.selectedSizeFn && (T.mrc = v.selectedSizeFn(T)); } return { geojson: { type: "FeatureCollection", features: x }, mcc: p || (v && v.selectedColorFn) ? { type: "identity", property: "mcc" } : f.color, mrc: d || (v && v.selectedSizeFn) ? { type: "identity", property: "mrc" } : ((k = f.size), k / 2), mo: m || (v && v.selectedOpacityFn) ? { type: "identity", property: "mo" } : g(f.opacity), }; var k; })(e); (C.geojson = O.geojson), (C.layout.visibility = "visible"), S && ((C.filter = ["!", ["has", "point_count"]]), (I.cluster = { type: "circle", filter: ["has", "point_count"], layout: { visibility: "visible" }, paint: { "circle-color": x( a.cluster.color, a.cluster.step, ), "circle-radius": x( a.cluster.size, a.cluster.step, ), "circle-opacity": x( a.cluster.opacity, a.cluster.step, ), }, }), (I.clusterCount = { type: "symbol", filter: ["has", "point_count"], paint: {}, layout: { "text-field": "{point_count_abbreviated}", "text-font": [ "Open Sans Regular", "Arial Unicode MS Regular", ], "text-size": 12, }, })), i.extendFlat(C.paint, { "circle-color": O.mcc, "circle-radius": O.mrc, "circle-opacity": O.mo, }); } if ( (A && S && (C.filter = ["!", ["has", "point_count"]]), (M || k) && ((P.geojson = (function (t, e) { for ( var r = e._fullLayout, n = t[0].trace, a = n.marker || {}, o = a.symbol, s = a.angle, l = "circle" !== o ? g(o) : v, c = "auto" !== s ? g(s, !0) : v, f = u.hasText(n) ? g(n.text) : v, m = [], x = 0; x < t.length; x++ ) { var b = t[x]; if (!y(b.lonlat)) { var _, w = n.texttemplate; if (w) { var T = Array.isArray(w) ? w[x] || "" : w, k = n._module.formatLabels(b, n, r), A = {}; h(A, n, b.i); var M = n._meta || {}; _ = i.texttemplateString( T, k, r._d3locale, A, b, M, ); } else _ = f(x); _ && (_ = _.replace(p, "").replace(d, "\n")), m.push({ type: "Feature", geometry: { type: "Point", coordinates: b.lonlat, }, properties: { symbol: l(x), angle: c(x), text: _, }, }); } } return { type: "FeatureCollection", features: m }; })(e, t)), i.extendFlat(P.layout, { visibility: "visible", "icon-image": "{symbol}-15", "text-field": "{text}", }), M && (i.extendFlat(P.layout, { "icon-size": a.marker.size / 10, }), "angle" in a.marker && "auto" !== a.marker.angle && i.extendFlat(P.layout, { "icon-rotate": { type: "identity", property: "angle", }, "icon-rotation-alignment": "map", }), (P.layout["icon-allow-overlap"] = a.marker.allowoverlap), i.extendFlat(P.paint, { "icon-opacity": a.opacity * a.marker.opacity, "icon-color": a.marker.color, })), k)) ) { var z = (a.marker || {}).size, D = f(a.textposition, z); i.extendFlat(P.layout, { "text-size": a.textfont.size, "text-anchor": D.anchor, "text-offset": D.offset, }), i.extendFlat(P.paint, { "text-color": a.textfont.color, "text-opacity": a.opacity, }); } return I; }; }, { "../../components/colorscale": 379, "../../components/drawing": 389, "../../components/fx/helpers": 403, "../../constants/numerical": 491, "../../lib": 515, "../../lib/geojson_utils": 509, "../../lib/svg_text_utils": 541, "../../plots/mapbox/convert_text_opts": 621, "../scatter/make_bubble_size_func": 953, "../scatter/subtypes": 961, "fast-isnumeric": 190, }, ], 1004: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../scatter/subtypes"), a = t("../scatter/marker_defaults"), o = t("../scatter/line_defaults"), s = t("../scatter/text_defaults"), l = t("../scatter/fillcolor_defaults"), c = t("./attributes"); e.exports = function (t, e, r, u) { function f(r, i) { return n.coerce(t, e, c, r, i); } function h(r, i) { return n.coerce2(t, e, c, r, i); } if ( (function (t, e, r) { var n = r("lon") || [], i = r("lat") || [], a = Math.min(n.length, i.length); return (e._length = a), a; })(0, e, f) ) { if ( (f("text"), f("texttemplate"), f("hovertext"), f("hovertemplate"), f("mode"), f("below"), i.hasLines(e) && (o(t, e, r, u, f, { noDash: !0 }), f("connectgaps")), i.hasMarkers(e)) ) { a(t, e, r, u, f, { noLine: !0, noAngle: !0 }), f("marker.allowoverlap"), f("marker.angle"); var p = e.marker; "circle" !== p.symbol && (n.isArrayOrTypedArray(p.size) && (p.size = p.size[0]), n.isArrayOrTypedArray(p.color) && (p.color = p.color[0])); } var d = h("cluster.maxzoom"), m = h("cluster.step"), g = h( "cluster.color", (e.marker && e.marker.color) || r, ), v = h("cluster.size"), y = h("cluster.opacity"); f( "cluster.enabled", !1 !== d || !1 !== m || !1 !== g || !1 !== v || !1 !== y, ), i.hasText(e) && s(t, e, u, f, { noSelect: !0 }), f("fill"), "none" !== e.fill && l(t, e, r, f), n.coerceSelectionMarkerOpacity(e, f); } else e.visible = !1; }; }, { "../../lib": 515, "../scatter/fillcolor_defaults": 944, "../scatter/line_defaults": 949, "../scatter/marker_defaults": 955, "../scatter/subtypes": 961, "../scatter/text_defaults": 962, "./attributes": 1002, }, ], 1005: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { return (t.lon = e.lon), (t.lat = e.lat), t; }; }, {}, ], 1006: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"); e.exports = function (t, e, r) { var i = {}, a = r[e.subplot]._subplot.mockAxis, o = t.lonlat; return ( (i.lonLabel = n.tickText(a, a.c2l(o[0]), !0).text), (i.latLabel = n.tickText(a, a.c2l(o[1]), !0).text), i ); }; }, { "../../plots/cartesian/axes": 566 }, ], 1007: [ function (t, e, r) { "use strict"; var n = t("../../components/fx"), i = t("../../lib"), a = t("../scatter/get_trace_color"), o = i.fillText, s = t("../../constants/numerical").BADNUM, l = t("../../plots/mapbox/constants").traceLayerPrefix; function c(t, e, r) { if (!t.hovertemplate) { var n = (e.hi || t.hoverinfo).split("+"), i = -1 !== n.indexOf("all"), a = -1 !== n.indexOf("lon"), s = -1 !== n.indexOf("lat"), l = e.lonlat, c = []; return ( i || (a && s) ? c.push("(" + u(l[1]) + ", " + u(l[0]) + ")") : a ? c.push(r.lon + u(l[0])) : s && c.push(r.lat + u(l[1])), (i || -1 !== n.indexOf("text")) && o(e, t, c), c.join("
") ); } function u(t) { return t + "\xb0"; } } e.exports = { hoverPoints: function (t, e, r) { var o = t.cd, u = o[0].trace, f = t.xa, h = t.ya, p = t.subplot, d = [], m = l + u.uid + "-circle", g = u.cluster && u.cluster.enabled; if (g) { var v = p.map.queryRenderedFeatures(null, { layers: [m], }); d = v.map(function (t) { return t.id; }); } var y = 360 * (e >= 0 ? Math.floor((e + 180) / 360) : Math.ceil((e - 180) / 360)), x = e - y; if ( (n.getClosest( o, function (t) { var e = t.lonlat; if (e[0] === s) return 1 / 0; if (g && -1 === d.indexOf(t.i + 1)) return 1 / 0; var n = i.modHalf(e[0], 360), a = e[1], o = p.project([n, a]), l = o.x - f.c2p([x, a]), c = o.y - h.c2p([n, r]), u = Math.max(3, t.mrc || 0); return Math.max( Math.sqrt(l * l + c * c) - u, 1 - 3 / u, ); }, t, ), !1 !== t.index) ) { var b = o[t.index], _ = b.lonlat, w = [i.modHalf(_[0], 360) + y, _[1]], T = f.c2p(w), k = h.c2p(w), A = b.mrc || 1; (t.x0 = T - A), (t.x1 = T + A), (t.y0 = k - A), (t.y1 = k + A); var M = {}; M[u.subplot] = { _subplot: p }; var S = u._module.formatLabels(b, u, M); return ( (t.lonLabel = S.lonLabel), (t.latLabel = S.latLabel), (t.color = a(u, b)), (t.extraText = c(u, b, o[0].t.labels)), (t.hovertemplate = u.hovertemplate), [t] ); } }, getExtraText: c, }; }, { "../../components/fx": 407, "../../constants/numerical": 491, "../../lib": 515, "../../plots/mapbox/constants": 620, "../scatter/get_trace_color": 946, }, ], 1008: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../scatter/marker_colorbar"), formatLabels: t("./format_labels"), calc: t("../scattergeo/calc"), plot: t("./plot"), hoverPoints: t("./hover").hoverPoints, eventData: t("./event_data"), selectPoints: t("./select"), styleOnSelect: function (t, e) { e && e[0].trace._glTrace.update(e); }, moduleType: "trace", name: "scattermapbox", basePlotModule: t("../../plots/mapbox"), categories: [ "mapbox", "gl", "symbols", "showLegend", "scatter-like", ], meta: {}, }; }, { "../../plots/mapbox": 622, "../scatter/marker_colorbar": 954, "../scattergeo/calc": 979, "./attributes": 1002, "./defaults": 1004, "./event_data": 1005, "./format_labels": 1006, "./hover": 1007, "./plot": 1009, "./select": 1010, }, ], 1009: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./convert"), a = t("../../plots/mapbox/constants").traceLayerPrefix, o = { cluster: ["cluster", "clusterCount", "circle"], nonCluster: ["fill", "line", "circle", "symbol"], }; function s(t, e, r) { (this.type = "scattermapbox"), (this.subplot = t), (this.uid = e), (this.clusterEnabled = r), (this.sourceIds = { fill: "source-" + e + "-fill", line: "source-" + e + "-line", circle: "source-" + e + "-circle", symbol: "source-" + e + "-symbol", cluster: "source-" + e + "-circle", clusterCount: "source-" + e + "-circle", }), (this.layerIds = { fill: a + e + "-fill", line: a + e + "-line", circle: a + e + "-circle", symbol: a + e + "-symbol", cluster: a + e + "-cluster", clusterCount: a + e + "-cluster-count", }), (this.below = null); } var l = s.prototype; (l.addSource = function (t, e, r) { var i = { type: "geojson", data: e.geojson }; r && r.enabled && n.extendFlat(i, { cluster: !0, clusterMaxZoom: r.maxzoom, }), this.subplot.map.addSource(this.sourceIds[t], i); }), (l.setSourceData = function (t, e) { this.subplot.map .getSource(this.sourceIds[t]) .setData(e.geojson); }), (l.addLayer = function (t, e, r) { var n = { type: e.type, id: this.layerIds[t], source: this.sourceIds[t], layout: e.layout, paint: e.paint, }; e.filter && (n.filter = e.filter), this.subplot.addLayer(n, r); }), (l.update = function (t) { var e, r, n, a = t[0].trace, s = this.subplot, l = s.map, c = i(s.gd, t), u = s.belowLookup["trace-" + this.uid], f = !(!a.cluster || !a.cluster.enabled), h = !!this.clusterEnabled; if (u !== this.below) { var p = o.nonCluster; for (e = p.length - 1; e >= 0; e--) (r = p[e]), l.removeLayer(this.layerIds[r]); for (e = 0; e < p.length; e++) (n = c[(r = p[e])]), this.addLayer(r, n, u); this.below = u; } else if (f && !h) { for (e = o.nonCluster.length - 1; e >= 0; e--) (r = o.nonCluster[e]), l.removeLayer(this.layerIds[r]), l.removeSource(this.sourceIds[r]); for ( this.addSource("circle", c.circle, a.cluster), e = 0; e < o.cluster.length; e++ ) (n = c[(r = o.cluster[e])]), this.addLayer(r, n, u); this.clusterEnabled = f; } else if (!f && h) { for (e = 0; e < o.cluster.length; e++) (r = o.cluster[e]), l.removeLayer(this.layerIds[r]); for ( l.removeSource(this.sourceIds.circle), e = 0; e < o.nonCluster.length; e++ ) (n = c[(r = o.nonCluster[e])]), this.addSource(r, n, a.cluster), this.addLayer(r, n, u); this.clusterEnabled = f; } t[0].trace._glTrace = this; }), (l.dispose = function () { for ( var t = this.subplot.map, e = this.clusterEnabled ? o.cluster : o.nonCluster, r = e.length - 1; r >= 0; r-- ) { var n = e[r]; t.removeLayer(this.layerIds[n]), t.removeSource(this.sourceIds[n]); } }), (e.exports = function (t, e) { var r, n, a, l = e[0].trace, c = l.cluster && l.cluster.enabled, u = new s(t, l.uid, c), f = i(t.gd, e), h = (u.below = t.belowLookup["trace-" + l.uid]); if (c) for ( u.addSource("circle", f.circle, l.cluster), r = 0; r < o.cluster.length; r++ ) (a = f[(n = o.cluster[r])]), u.addLayer(n, a, h); else for (r = 0; r < o.nonCluster.length; r++) (a = f[(n = o.nonCluster[r])]), u.addSource(n, a, l.cluster), u.addLayer(n, a, h); return (e[0].trace._glTrace = u), u; }); }, { "../../lib": 515, "../../plots/mapbox/constants": 620, "./convert": 1003, }, ], 1010: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../scatter/subtypes"), a = t("../../constants/numerical").BADNUM; e.exports = function (t, e) { var r, o = t.cd, s = t.xaxis, l = t.yaxis, c = [], u = o[0].trace; if (!i.hasMarkers(u)) return []; if (!1 === e) for (r = 0; r < o.length; r++) o[r].selected = 0; else for (r = 0; r < o.length; r++) { var f = o[r], h = f.lonlat; if (h[0] !== a) { var p = [n.modHalf(h[0], 360), h[1]], d = [s.c2p(p), l.c2p(p)]; e.contains(d, null, r, t) ? (c.push({ pointNumber: r, lon: h[0], lat: h[1] }), (f.selected = 1)) : (f.selected = 0); } } return c; }; }, { "../../constants/numerical": 491, "../../lib": 515, "../scatter/subtypes": 961, }, ], 1011: [ function (t, e, r) { "use strict"; var n = t( "../../plots/template_attributes", ).hovertemplateAttrs, i = t("../../plots/template_attributes").texttemplateAttrs, a = t("../../lib/extend").extendFlat, o = t("../scatter/attributes"), s = t("../../plots/attributes"), l = o.line; e.exports = { mode: o.mode, r: { valType: "data_array", editType: "calc+clearAxisTypes", }, theta: { valType: "data_array", editType: "calc+clearAxisTypes", }, r0: { valType: "any", dflt: 0, editType: "calc+clearAxisTypes", }, dr: { valType: "number", dflt: 1, editType: "calc" }, theta0: { valType: "any", dflt: 0, editType: "calc+clearAxisTypes", }, dtheta: { valType: "number", editType: "calc" }, thetaunit: { valType: "enumerated", values: ["radians", "degrees", "gradians"], dflt: "degrees", editType: "calc+clearAxisTypes", }, text: o.text, texttemplate: i( { editType: "plot" }, { keys: ["r", "theta", "text"] }, ), hovertext: o.hovertext, line: { color: l.color, width: l.width, dash: l.dash, backoff: l.backoff, shape: a({}, l.shape, { values: ["linear", "spline"] }), smoothing: l.smoothing, editType: "calc", }, connectgaps: o.connectgaps, marker: o.marker, cliponaxis: a({}, o.cliponaxis, { dflt: !1 }), textposition: o.textposition, textfont: o.textfont, fill: a({}, o.fill, { values: ["none", "toself", "tonext"], dflt: "none", }), fillcolor: o.fillcolor, hoverinfo: a({}, s.hoverinfo, { flags: ["r", "theta", "text", "name"], }), hoveron: o.hoveron, hovertemplate: n(), selected: o.selected, unselected: o.unselected, }; }, { "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/template_attributes": 642, "../scatter/attributes": 936, }, ], 1012: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../constants/numerical").BADNUM, a = t("../../plots/cartesian/axes"), o = t("../scatter/colorscale_calc"), s = t("../scatter/arrays_to_calcdata"), l = t("../scatter/calc_selection"), c = t("../scatter/calc").calcMarkerSize; e.exports = function (t, e) { for ( var r = t._fullLayout, u = e.subplot, f = r[u].radialaxis, h = r[u].angularaxis, p = f.makeCalcdata(e, "r"), d = h.makeCalcdata(e, "theta"), m = e._length, g = new Array(m), v = 0; v < m; v++ ) { var y = p[v], x = d[v], b = (g[v] = {}); n(y) && n(x) ? ((b.r = y), (b.theta = x)) : (b.r = i); } var _ = c(e, m); return ( (e._extremes.x = a.findExtremes(f, p, { ppad: _ })), o(t, e), s(g, e), l(g, e), g ); }; }, { "../../constants/numerical": 491, "../../plots/cartesian/axes": 566, "../scatter/arrays_to_calcdata": 935, "../scatter/calc": 937, "../scatter/calc_selection": 938, "../scatter/colorscale_calc": 939, "fast-isnumeric": 190, }, ], 1013: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../scatter/subtypes"), a = t("../scatter/marker_defaults"), o = t("../scatter/line_defaults"), s = t("../scatter/line_shape_defaults"), l = t("../scatter/text_defaults"), c = t("../scatter/fillcolor_defaults"), u = t("../scatter/constants").PTS_LINESONLY, f = t("./attributes"); function h(t, e, r, n) { var i, a = n("r"), o = n("theta"); if (a) o ? (i = Math.min(a.length, o.length)) : ((i = a.length), n("theta0"), n("dtheta")); else { if (!o) return 0; (i = e.theta.length), n("r0"), n("dr"); } return (e._length = i), i; } e.exports = { handleRThetaDefaults: h, supplyDefaults: function (t, e, r, p) { function d(r, i) { return n.coerce(t, e, f, r, i); } var m = h(t, e, p, d); if (m) { d("thetaunit"), d("mode", m < u ? "lines+markers" : "lines"), d("text"), d("hovertext"), "fills" !== e.hoveron && d("hovertemplate"), i.hasLines(e) && (o(t, e, r, p, d, { backoff: !0 }), s(t, e, d), d("connectgaps")), i.hasMarkers(e) && a(t, e, r, p, d, { gradient: !0 }), i.hasText(e) && (d("texttemplate"), l(t, e, p, d)); var g = []; (i.hasMarkers(e) || i.hasText(e)) && (d("cliponaxis"), d("marker.maxdisplayed"), g.push("points")), d("fill"), "none" !== e.fill && (c(t, e, r, d), i.hasLines(e) || s(t, e, d)), ("tonext" !== e.fill && "toself" !== e.fill) || g.push("fills"), d("hoveron", g.join("+") || "points"), n.coerceSelectionMarkerOpacity(e, d); } else e.visible = !1; }, }; }, { "../../lib": 515, "../scatter/constants": 940, "../scatter/fillcolor_defaults": 944, "../scatter/line_defaults": 949, "../scatter/line_shape_defaults": 951, "../scatter/marker_defaults": 955, "../scatter/subtypes": 961, "../scatter/text_defaults": 962, "./attributes": 1011, }, ], 1014: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"); e.exports = function (t, e, r) { var a, o, s = {}, l = r[e.subplot]._subplot; l ? ((a = l.radialAxis), (o = l.angularAxis)) : ((a = (l = r[e.subplot]).radialaxis), (o = l.angularaxis)); var c = a.c2l(t.r); s.rLabel = i.tickText(a, c, !0).text; var u = "degrees" === o.thetaunit ? n.rad2deg(t.theta) : t.theta; return (s.thetaLabel = i.tickText(o, u, !0).text), s; }; }, { "../../lib": 515, "../../plots/cartesian/axes": 566 }, ], 1015: [ function (t, e, r) { "use strict"; var n = t("../scatter/hover"); function i(t, e, r, n) { var i = r.radialAxis, a = r.angularAxis; (i._hovertitle = "r"), (a._hovertitle = "\u03b8"); var o = {}; o[e.subplot] = { _subplot: r }; var s = e._module.formatLabels(t, e, o); (n.rLabel = s.rLabel), (n.thetaLabel = s.thetaLabel); var l = t.hi || e.hoverinfo, c = []; function u(t, e) { c.push(t._hovertitle + ": " + e); } if (!e.hovertemplate) { var f = l.split("+"); -1 !== f.indexOf("all") && (f = ["r", "theta", "text"]), -1 !== f.indexOf("r") && u(i, n.rLabel), -1 !== f.indexOf("theta") && u(a, n.thetaLabel), -1 !== f.indexOf("text") && n.text && (c.push(n.text), delete n.text), (n.extraText = c.join("
")); } } e.exports = { hoverPoints: function (t, e, r, a) { var o = n(t, e, r, a); if (o && !1 !== o[0].index) { var s = o[0]; if (void 0 === s.index) return o; var l = t.subplot, c = s.cd[s.index], u = s.trace; if (l.isPtInside(c)) return ( (s.xLabelVal = void 0), (s.yLabelVal = void 0), i(c, u, l, s), (s.hovertemplate = u.hovertemplate), o ); } }, makeHoverPointText: i, }; }, { "../scatter/hover": 947 }, ], 1016: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "scatterpolar", basePlotModule: t("../../plots/polar"), categories: [ "polar", "symbols", "showLegend", "scatter-like", ], attributes: t("./attributes"), supplyDefaults: t("./defaults").supplyDefaults, colorbar: t("../scatter/marker_colorbar"), formatLabels: t("./format_labels"), calc: t("./calc"), plot: t("./plot"), style: t("../scatter/style").style, styleOnSelect: t("../scatter/style").styleOnSelect, hoverPoints: t("./hover").hoverPoints, selectPoints: t("../scatter/select"), meta: {}, }; }, { "../../plots/polar": 631, "../scatter/marker_colorbar": 954, "../scatter/select": 958, "../scatter/style": 960, "./attributes": 1011, "./calc": 1012, "./defaults": 1013, "./format_labels": 1014, "./hover": 1015, "./plot": 1017, }, ], 1017: [ function (t, e, r) { "use strict"; var n = t("../scatter/plot"), i = t("../../constants/numerical").BADNUM; e.exports = function (t, e, r) { for ( var a = e.layers.frontplot.select("g.scatterlayer"), o = e.xaxis, s = e.yaxis, l = { xaxis: o, yaxis: s, plot: e.framework, layerClipId: e._hasClipOnAxisFalse ? e.clipIds.forTraces : null, }, c = e.radialAxis, u = e.angularAxis, f = 0; f < r.length; f++ ) for (var h = r[f], p = 0; p < h.length; p++) { 0 === p && ((h[0].trace._xA = o), (h[0].trace._yA = s)); var d = h[p], m = d.r; if (m === i) d.x = d.y = i; else { var g = c.c2g(m), v = u.c2g(d.theta); (d.x = g * Math.cos(v)), (d.y = g * Math.sin(v)); } } n(t, l, r, a); }; }, { "../../constants/numerical": 491, "../scatter/plot": 957 }, ], 1018: [ function (t, e, r) { "use strict"; var n = t("../scatterpolar/attributes"), i = t("../scattergl/attributes"), a = t("../../plots/template_attributes").texttemplateAttrs; e.exports = { mode: n.mode, r: n.r, theta: n.theta, r0: n.r0, dr: n.dr, theta0: n.theta0, dtheta: n.dtheta, thetaunit: n.thetaunit, text: n.text, texttemplate: a( { editType: "plot" }, { keys: ["r", "theta", "text"] }, ), hovertext: n.hovertext, hovertemplate: n.hovertemplate, line: i.line, connectgaps: i.connectgaps, marker: i.marker, fill: i.fill, fillcolor: i.fillcolor, textposition: i.textposition, textfont: i.textfont, hoverinfo: n.hoverinfo, selected: n.selected, unselected: n.unselected, }; }, { "../../plots/template_attributes": 642, "../scattergl/attributes": 988, "../scatterpolar/attributes": 1011, }, ], 1019: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "scatterpolargl", basePlotModule: t("../../plots/polar"), categories: [ "gl", "regl", "polar", "symbols", "showLegend", "scatter-like", ], attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../scatter/marker_colorbar"), formatLabels: t("./format_labels"), calc: t("./calc"), hoverPoints: t("./hover").hoverPoints, selectPoints: t("../scattergl/select"), meta: {}, }; }, { "../../plots/polar": 631, "../scatter/marker_colorbar": 954, "../scattergl/select": 1001, "./attributes": 1018, "./calc": 1020, "./defaults": 1021, "./format_labels": 1022, "./hover": 1023, }, ], 1020: [ function (t, e, r) { "use strict"; var n = t("../scatter/colorscale_calc"), i = t("../scatter/calc").calcMarkerSize, a = t("../scattergl/convert"), o = t("../../plots/cartesian/axes"), s = t("../scattergl/constants").TOO_MANY_POINTS; e.exports = function (t, e) { var r = t._fullLayout, l = e.subplot, c = r[l].radialaxis, u = r[l].angularaxis, f = (e._r = c.makeCalcdata(e, "r")), h = (e._theta = u.makeCalcdata(e, "theta")), p = e._length, d = {}; p < f.length && (f = f.slice(0, p)), p < h.length && (h = h.slice(0, p)), (d.r = f), (d.theta = h), n(t, e); var m, g = (d.opts = a.style(t, e)); return ( p < s ? (m = i(e, p)) : g.marker && (m = 2 * (g.marker.sizeAvg || Math.max(g.marker.size, 3))), (e._extremes.x = o.findExtremes(c, f, { ppad: m })), [{ x: !1, y: !1, t: d, trace: e }] ); }; }, { "../../plots/cartesian/axes": 566, "../scatter/calc": 937, "../scatter/colorscale_calc": 939, "../scattergl/constants": 991, "../scattergl/convert": 992, }, ], 1021: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../scatter/subtypes"), a = t("../scatterpolar/defaults").handleRThetaDefaults, o = t("../scatter/marker_defaults"), s = t("../scatter/line_defaults"), l = t("../scatter/text_defaults"), c = t("../scatter/fillcolor_defaults"), u = t("../scatter/constants").PTS_LINESONLY, f = t("./attributes"); e.exports = function (t, e, r, h) { function p(r, i) { return n.coerce(t, e, f, r, i); } var d = a(t, e, h, p); d ? (p("thetaunit"), p("mode", d < u ? "lines+markers" : "lines"), p("text"), p("hovertext"), "fills" !== e.hoveron && p("hovertemplate"), i.hasLines(e) && (s(t, e, r, h, p), p("connectgaps")), i.hasMarkers(e) && o(t, e, r, h, p, { noAngleRef: !0, noStandOff: !0 }), i.hasText(e) && (p("texttemplate"), l(t, e, h, p)), p("fill"), "none" !== e.fill && c(t, e, r, p), n.coerceSelectionMarkerOpacity(e, p)) : (e.visible = !1); }; }, { "../../lib": 515, "../scatter/constants": 940, "../scatter/fillcolor_defaults": 944, "../scatter/line_defaults": 949, "../scatter/marker_defaults": 955, "../scatter/subtypes": 961, "../scatter/text_defaults": 962, "../scatterpolar/defaults": 1013, "./attributes": 1018, }, ], 1022: [ function (t, e, r) { "use strict"; var n = t("../scatterpolar/format_labels"); e.exports = function (t, e, r) { var i = t.i; return ( "r" in t || (t.r = e._r[i]), "theta" in t || (t.theta = e._theta[i]), n(t, e, r) ); }; }, { "../scatterpolar/format_labels": 1014 }, ], 1023: [ function (t, e, r) { "use strict"; var n = t("../scattergl/hover"), i = t("../scatterpolar/hover").makeHoverPointText; e.exports = { hoverPoints: function (t, e, r, a) { var o = t.cd[0].t, s = o.r, l = o.theta, c = n.hoverPoints(t, e, r, a); if (c && !1 !== c[0].index) { var u = c[0]; if (void 0 === u.index) return c; var f = t.subplot, h = u.cd[u.index], p = u.trace; if ( ((h.r = s[u.index]), (h.theta = l[u.index]), f.isPtInside(h)) ) return ( (u.xLabelVal = void 0), (u.yLabelVal = void 0), i(h, p, f, u), c ); } }, }; }, { "../scattergl/hover": 997, "../scatterpolar/hover": 1015 }, ], 1024: [ function (t, e, r) { arguments[4][905][0].apply(r, arguments); }, { "./base_index": 1019, "./plot": 1025, dup: 905 }, ], 1025: [ function (t, e, r) { "use strict"; var n = t("@plotly/point-cluster"), i = t("fast-isnumeric"), a = t("../scattergl/plot"), o = t("../scattergl/scene_update"), s = t("../scattergl/convert"), l = t("../../lib"), c = t("../scattergl/constants").TOO_MANY_POINTS; (e.exports = function (t, e, r) { if (r.length) { var u = e.radialAxis, f = e.angularAxis, h = o(t, e); return ( r.forEach(function (r) { if (r && r[0] && r[0].trace) { var a, o = r[0], p = o.trace, d = o.t, m = p._length, g = d.r, v = d.theta, y = d.opts, x = g.slice(), b = v.slice(); for (a = 0; a < g.length; a++) e.isPtInside({ r: g[a], theta: v[a] }) || ((x[a] = NaN), (b[a] = NaN)); var _ = new Array(2 * m), w = Array(m), T = Array(m); for (a = 0; a < m; a++) { var k, A, M = x[a]; if (i(M)) { var S = u.c2g(M), E = f.c2g(b[a], p.thetaunit); (k = S * Math.cos(E)), (A = S * Math.sin(E)); } else k = A = NaN; (w[a] = _[2 * a] = k), (T[a] = _[2 * a + 1] = A); } (d.tree = n(_)), y.marker && m >= c && (y.marker.cluster = d.tree), y.marker && (y.markerSel.positions = y.markerUnsel.positions = y.marker.positions = _), y.line && _.length > 1 && l.extendFlat(y.line, s.linePositions(t, p, _)), y.text && (l.extendFlat( y.text, { positions: _ }, s.textPosition(t, p, y.text, y.marker), ), l.extendFlat( y.textSel, { positions: _ }, s.textPosition(t, p, y.text, y.markerSel), ), l.extendFlat( y.textUnsel, { positions: _ }, s.textPosition(t, p, y.text, y.markerUnsel), )), y.fill && !h.fill2d && (h.fill2d = !0), y.marker && !h.scatter2d && (h.scatter2d = !0), y.line && !h.line2d && (h.line2d = !0), y.text && !h.glText && (h.glText = !0), h.lineOptions.push(y.line), h.fillOptions.push(y.fill), h.markerOptions.push(y.marker), h.markerSelectedOptions.push(y.markerSel), h.markerUnselectedOptions.push(y.markerUnsel), h.textOptions.push(y.text), h.textSelectedOptions.push(y.textSel), h.textUnselectedOptions.push(y.textUnsel), h.selectBatch.push([]), h.unselectBatch.push([]), (d.x = w), (d.y = T), (d.rawx = w), (d.rawy = T), (d.r = g), (d.theta = v), (d.positions = _), (d._scene = h), (d.index = h.count), h.count++; } }), a(t, e, r) ); } }), (e.exports.reglPrecompiled = {}); }, { "../../lib": 515, "../scattergl/constants": 991, "../scattergl/convert": 992, "../scattergl/plot": 999, "../scattergl/scene_update": 1e3, "@plotly/point-cluster": 59, "fast-isnumeric": 190, }, ], 1026: [ function (t, e, r) { "use strict"; var n = t( "../../plots/template_attributes", ).hovertemplateAttrs, i = t("../../plots/template_attributes").texttemplateAttrs, a = t("../../lib/extend").extendFlat, o = t("../scatter/attributes"), s = t("../../plots/attributes"), l = o.line; e.exports = { mode: o.mode, real: { valType: "data_array", editType: "calc+clearAxisTypes", }, imag: { valType: "data_array", editType: "calc+clearAxisTypes", }, text: o.text, texttemplate: i( { editType: "plot" }, { keys: ["real", "imag", "text"] }, ), hovertext: o.hovertext, line: { color: l.color, width: l.width, dash: l.dash, backoff: l.backoff, shape: a({}, l.shape, { values: ["linear", "spline"] }), smoothing: l.smoothing, editType: "calc", }, connectgaps: o.connectgaps, marker: o.marker, cliponaxis: a({}, o.cliponaxis, { dflt: !1 }), textposition: o.textposition, textfont: o.textfont, fill: a({}, o.fill, { values: ["none", "toself", "tonext"], dflt: "none", }), fillcolor: o.fillcolor, hoverinfo: a({}, s.hoverinfo, { flags: ["real", "imag", "text", "name"], }), hoveron: o.hoveron, hovertemplate: n(), selected: o.selected, unselected: o.unselected, }; }, { "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/template_attributes": 642, "../scatter/attributes": 936, }, ], 1027: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../../constants/numerical").BADNUM, a = t("../scatter/colorscale_calc"), o = t("../scatter/arrays_to_calcdata"), s = t("../scatter/calc_selection"), l = t("../scatter/calc").calcMarkerSize; e.exports = function (t, e) { for ( var r = t._fullLayout, c = e.subplot, u = r[c].realaxis, f = r[c].imaginaryaxis, h = u.makeCalcdata(e, "real"), p = f.makeCalcdata(e, "imag"), d = e._length, m = new Array(d), g = 0; g < d; g++ ) { var v = h[g], y = p[g], x = (m[g] = {}); n(v) && n(y) ? ((x.real = v), (x.imag = y)) : (x.real = i); } return l(e, d), a(t, e), o(m, e), s(m, e), m; }; }, { "../../constants/numerical": 491, "../scatter/arrays_to_calcdata": 935, "../scatter/calc": 937, "../scatter/calc_selection": 938, "../scatter/colorscale_calc": 939, "fast-isnumeric": 190, }, ], 1028: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../scatter/subtypes"), a = t("../scatter/marker_defaults"), o = t("../scatter/line_defaults"), s = t("../scatter/line_shape_defaults"), l = t("../scatter/text_defaults"), c = t("../scatter/fillcolor_defaults"), u = t("../scatter/constants").PTS_LINESONLY, f = t("./attributes"); e.exports = function (t, e, r, h) { function p(r, i) { return n.coerce(t, e, f, r, i); } var d = (function (t, e, r, n) { var i, a = n("real"), o = n("imag"); a && o && (i = Math.min(a.length, o.length)); return (e._length = i), i; })(0, e, 0, p); if (d) { p("mode", d < u ? "lines+markers" : "lines"), p("text"), p("hovertext"), "fills" !== e.hoveron && p("hovertemplate"), i.hasLines(e) && (o(t, e, r, h, p, { backoff: !0 }), s(t, e, p), p("connectgaps")), i.hasMarkers(e) && a(t, e, r, h, p, { gradient: !0 }), i.hasText(e) && (p("texttemplate"), l(t, e, h, p)); var m = []; (i.hasMarkers(e) || i.hasText(e)) && (p("cliponaxis"), p("marker.maxdisplayed"), m.push("points")), p("fill"), "none" !== e.fill && (c(t, e, r, p), i.hasLines(e) || s(t, e, p)), ("tonext" !== e.fill && "toself" !== e.fill) || m.push("fills"), p("hoveron", m.join("+") || "points"), n.coerceSelectionMarkerOpacity(e, p); } else e.visible = !1; }; }, { "../../lib": 515, "../scatter/constants": 940, "../scatter/fillcolor_defaults": 944, "../scatter/line_defaults": 949, "../scatter/line_shape_defaults": 951, "../scatter/marker_defaults": 955, "../scatter/subtypes": 961, "../scatter/text_defaults": 962, "./attributes": 1026, }, ], 1029: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"); e.exports = function (t, e, r) { var i = {}, a = r[e.subplot]._subplot; return ( (i.realLabel = n.tickText(a.radialAxis, t.real, !0).text), (i.imagLabel = n.tickText( a.angularAxis, t.imag, !0, ).text), i ); }; }, { "../../plots/cartesian/axes": 566 }, ], 1030: [ function (t, e, r) { "use strict"; var n = t("../scatter/hover"); function i(t, e, r, n) { var i = r.radialAxis, a = r.angularAxis; (i._hovertitle = "real"), (a._hovertitle = "imag"); var o = {}; o[e.subplot] = { _subplot: r }; var s = e._module.formatLabels(t, e, o); (n.realLabel = s.realLabel), (n.imagLabel = s.imagLabel); var l = t.hi || e.hoverinfo, c = []; function u(t, e) { c.push(t._hovertitle + ": " + e); } if (!e.hovertemplate) { var f = l.split("+"); -1 !== f.indexOf("all") && (f = ["real", "imag", "text"]), -1 !== f.indexOf("real") && u(i, n.realLabel), -1 !== f.indexOf("imag") && u(a, n.imagLabel), -1 !== f.indexOf("text") && n.text && (c.push(n.text), delete n.text), (n.extraText = c.join("
")); } } e.exports = { hoverPoints: function (t, e, r, a) { var o = n(t, e, r, a); if (o && !1 !== o[0].index) { var s = o[0]; if (void 0 === s.index) return o; var l = t.subplot, c = s.cd[s.index], u = s.trace; if (l.isPtInside(c)) return ( (s.xLabelVal = void 0), (s.yLabelVal = void 0), i(c, u, l, s), (s.hovertemplate = u.hovertemplate), o ); } }, makeHoverPointText: i, }; }, { "../scatter/hover": 947 }, ], 1031: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "scattersmith", basePlotModule: t("../../plots/smith"), categories: [ "smith", "symbols", "showLegend", "scatter-like", ], attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../scatter/marker_colorbar"), formatLabels: t("./format_labels"), calc: t("./calc"), plot: t("./plot"), style: t("../scatter/style").style, styleOnSelect: t("../scatter/style").styleOnSelect, hoverPoints: t("./hover").hoverPoints, selectPoints: t("../scatter/select"), meta: {}, }; }, { "../../plots/smith": 638, "../scatter/marker_colorbar": 954, "../scatter/select": 958, "../scatter/style": 960, "./attributes": 1026, "./calc": 1027, "./defaults": 1028, "./format_labels": 1029, "./hover": 1030, "./plot": 1032, }, ], 1032: [ function (t, e, r) { "use strict"; var n = t("../scatter/plot"), i = t("../../constants/numerical").BADNUM, a = t("../../plots/smith/helpers").smith; e.exports = function (t, e, r) { for ( var o = e.layers.frontplot.select("g.scatterlayer"), s = e.xaxis, l = e.yaxis, c = { xaxis: s, yaxis: l, plot: e.framework, layerClipId: e._hasClipOnAxisFalse ? e.clipIds.forTraces : null, }, u = 0; u < r.length; u++ ) for (var f = r[u], h = 0; h < f.length; h++) { 0 === h && ((f[0].trace._xA = s), (f[0].trace._yA = l)); var p = f[h], d = p.real; if (d === i) p.x = p.y = i; else { var m = a([d, p.imag]); (p.x = m[0]), (p.y = m[1]); } } n(t, c, r, o); }; }, { "../../constants/numerical": 491, "../../plots/smith/helpers": 637, "../scatter/plot": 957, }, ], 1033: [ function (t, e, r) { "use strict"; var n = t( "../../plots/template_attributes", ).hovertemplateAttrs, i = t("../../plots/template_attributes").texttemplateAttrs, a = t("../scatter/attributes"), o = t("../../plots/attributes"), s = t("../../components/colorscale/attributes"), l = t("../../components/drawing/attributes").dash, c = t("../../lib/extend").extendFlat, u = a.marker, f = a.line, h = u.line; e.exports = { a: { valType: "data_array", editType: "calc" }, b: { valType: "data_array", editType: "calc" }, c: { valType: "data_array", editType: "calc" }, sum: { valType: "number", dflt: 0, min: 0, editType: "calc", }, mode: c({}, a.mode, { dflt: "markers" }), text: c({}, a.text, {}), texttemplate: i( { editType: "plot" }, { keys: ["a", "b", "c", "text"] }, ), hovertext: c({}, a.hovertext, {}), line: { color: f.color, width: f.width, dash: l, backoff: f.backoff, shape: c({}, f.shape, { values: ["linear", "spline"] }), smoothing: f.smoothing, editType: "calc", }, connectgaps: a.connectgaps, cliponaxis: a.cliponaxis, fill: c({}, a.fill, { values: ["none", "toself", "tonext"], dflt: "none", }), fillcolor: a.fillcolor, marker: c( { symbol: u.symbol, opacity: u.opacity, angle: u.angle, angleref: u.angleref, standoff: u.standoff, maxdisplayed: u.maxdisplayed, size: u.size, sizeref: u.sizeref, sizemin: u.sizemin, sizemode: u.sizemode, line: c( { width: h.width, editType: "calc" }, s("marker.line"), ), gradient: u.gradient, editType: "calc", }, s("marker"), ), textfont: a.textfont, textposition: a.textposition, selected: a.selected, unselected: a.unselected, hoverinfo: c({}, o.hoverinfo, { flags: ["a", "b", "c", "text", "name"], }), hoveron: a.hoveron, hovertemplate: n(), }; }, { "../../components/colorscale/attributes": 374, "../../components/drawing/attributes": 388, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/template_attributes": 642, "../scatter/attributes": 936, }, ], 1034: [ function (t, e, r) { "use strict"; var n = t("fast-isnumeric"), i = t("../scatter/colorscale_calc"), a = t("../scatter/arrays_to_calcdata"), o = t("../scatter/calc_selection"), s = t("../scatter/calc").calcMarkerSize, l = ["a", "b", "c"], c = { a: ["b", "c"], b: ["a", "c"], c: ["a", "b"] }; e.exports = function (t, e) { var r, u, f, h, p, d, m = t._fullLayout[e.subplot].sum, g = e.sum || m, v = { a: e.a, b: e.b, c: e.c }; for (r = 0; r < l.length; r++) if (!v[(f = l[r])]) { for ( p = v[c[f][0]], d = v[c[f][1]], h = new Array(p.length), u = 0; u < p.length; u++ ) h[u] = g - p[u] - d[u]; v[f] = h; } var y, x, b, _, w, T, k = e._length, A = new Array(k); for (r = 0; r < k; r++) (y = v.a[r]), (x = v.b[r]), (b = v.c[r]), n(y) && n(x) && n(b) ? (1 !== (_ = m / ((y = +y) + (x = +x) + (b = +b))) && ((y *= _), (x *= _), (b *= _)), (T = y), (w = b - x), (A[r] = { x: w, y: T, a: y, b: x, c: b })) : (A[r] = { x: !1, y: !1 }); return s(e, k), i(t, e), a(A, e), o(A, e), A; }; }, { "../scatter/arrays_to_calcdata": 935, "../scatter/calc": 937, "../scatter/calc_selection": 938, "../scatter/colorscale_calc": 939, "fast-isnumeric": 190, }, ], 1035: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../scatter/constants"), a = t("../scatter/subtypes"), o = t("../scatter/marker_defaults"), s = t("../scatter/line_defaults"), l = t("../scatter/line_shape_defaults"), c = t("../scatter/text_defaults"), u = t("../scatter/fillcolor_defaults"), f = t("./attributes"); e.exports = function (t, e, r, h) { function p(r, i) { return n.coerce(t, e, f, r, i); } var d, m = p("a"), g = p("b"), v = p("c"); if ( (m ? ((d = m.length), g ? ((d = Math.min(d, g.length)), v && (d = Math.min(d, v.length))) : (d = v ? Math.min(d, v.length) : 0)) : g && v && (d = Math.min(g.length, v.length)), d) ) { (e._length = d), p("sum"), p("text"), p("hovertext"), "fills" !== e.hoveron && p("hovertemplate"), p( "mode", d < i.PTS_LINESONLY ? "lines+markers" : "lines", ), a.hasLines(e) && (s(t, e, r, h, p, { backoff: !0 }), l(t, e, p), p("connectgaps")), a.hasMarkers(e) && o(t, e, r, h, p, { gradient: !0 }), a.hasText(e) && (p("texttemplate"), c(t, e, h, p)); var y = []; (a.hasMarkers(e) || a.hasText(e)) && (p("cliponaxis"), p("marker.maxdisplayed"), y.push("points")), p("fill"), "none" !== e.fill && (u(t, e, r, p), a.hasLines(e) || l(t, e, p)), ("tonext" !== e.fill && "toself" !== e.fill) || y.push("fills"), p("hoveron", y.join("+") || "points"), n.coerceSelectionMarkerOpacity(e, p); } else e.visible = !1; }; }, { "../../lib": 515, "../scatter/constants": 940, "../scatter/fillcolor_defaults": 944, "../scatter/line_defaults": 949, "../scatter/line_shape_defaults": 951, "../scatter/marker_defaults": 955, "../scatter/subtypes": 961, "../scatter/text_defaults": 962, "./attributes": 1033, }, ], 1036: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n, i) { if ( (e.xa && (t.xaxis = e.xa), e.ya && (t.yaxis = e.ya), n[i]) ) { var a = n[i]; (t.a = a.a), (t.b = a.b), (t.c = a.c); } else (t.a = e.a), (t.b = e.b), (t.c = e.c); return t; }; }, {}, ], 1037: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"); e.exports = function (t, e, r) { var i = {}, a = r[e.subplot]._subplot; return ( (i.aLabel = n.tickText(a.aaxis, t.a, !0).text), (i.bLabel = n.tickText(a.baxis, t.b, !0).text), (i.cLabel = n.tickText(a.caxis, t.c, !0).text), i ); }; }, { "../../plots/cartesian/axes": 566 }, ], 1038: [ function (t, e, r) { "use strict"; var n = t("../scatter/hover"); e.exports = function (t, e, r, i) { var a = n(t, e, r, i); if (a && !1 !== a[0].index) { var o = a[0]; if (void 0 === o.index) { var s = 1 - o.y0 / t.ya._length, l = t.xa._length, c = (l * s) / 2, u = l - c; return ( (o.x0 = Math.max(Math.min(o.x0, u), c)), (o.x1 = Math.max(Math.min(o.x1, u), c)), a ); } var f = o.cd[o.index], h = o.trace, p = o.subplot; (o.a = f.a), (o.b = f.b), (o.c = f.c), (o.xLabelVal = void 0), (o.yLabelVal = void 0); var d = {}; d[h.subplot] = { _subplot: p }; var m = h._module.formatLabels(f, h, d); (o.aLabel = m.aLabel), (o.bLabel = m.bLabel), (o.cLabel = m.cLabel); var g = f.hi || h.hoverinfo, v = []; if (!h.hovertemplate) { var y = g.split("+"); -1 !== y.indexOf("all") && (y = ["a", "b", "c"]), -1 !== y.indexOf("a") && x(p.aaxis, o.aLabel), -1 !== y.indexOf("b") && x(p.baxis, o.bLabel), -1 !== y.indexOf("c") && x(p.caxis, o.cLabel); } return ( (o.extraText = v.join("
")), (o.hovertemplate = h.hovertemplate), a ); } function x(t, e) { v.push(t._hovertitle + ": " + e); } }; }, { "../scatter/hover": 947 }, ], 1039: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../scatter/marker_colorbar"), formatLabels: t("./format_labels"), calc: t("./calc"), plot: t("./plot"), style: t("../scatter/style").style, styleOnSelect: t("../scatter/style").styleOnSelect, hoverPoints: t("./hover"), selectPoints: t("../scatter/select"), eventData: t("./event_data"), moduleType: "trace", name: "scatterternary", basePlotModule: t("../../plots/ternary"), categories: [ "ternary", "symbols", "showLegend", "scatter-like", ], meta: {}, }; }, { "../../plots/ternary": 643, "../scatter/marker_colorbar": 954, "../scatter/select": 958, "../scatter/style": 960, "./attributes": 1033, "./calc": 1034, "./defaults": 1035, "./event_data": 1036, "./format_labels": 1037, "./hover": 1038, "./plot": 1040, }, ], 1040: [ function (t, e, r) { "use strict"; var n = t("../scatter/plot"); e.exports = function (t, e, r) { var i = e.plotContainer; i.select(".scatterlayer").selectAll("*").remove(); for ( var a = e.xaxis, o = e.yaxis, s = { xaxis: a, yaxis: o, plot: i, layerClipId: e._hasClipOnAxisFalse ? e.clipIdRelative : null, }, l = e.layers.frontplot.select("g.scatterlayer"), c = 0; c < r.length; c++ ) { var u = r[c]; u.length && ((u[0].trace._xA = a), (u[0].trace._yA = o)); } n(t, s, r, l); }; }, { "../scatter/plot": 957 }, ], 1041: [ function (t, e, r) { "use strict"; var n = t("../scatter/attributes"), i = t("../../components/colorscale/attributes"), a = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, o = t("../../plots/template_attributes").hovertemplateAttrs, s = t("../scattergl/attributes"), l = t("../../plots/cartesian/constants").idRegex, c = t("../../plot_api/plot_template").templatedArray, u = t("../../lib/extend").extendFlat, f = n.marker, h = f.line, p = u(i("marker.line", { editTypeOverride: "calc" }), { width: u({}, h.width, { editType: "calc" }), editType: "calc", }), d = u(i("marker"), { symbol: f.symbol, angle: f.angle, size: u({}, f.size, { editType: "markerSize" }), sizeref: f.sizeref, sizemin: f.sizemin, sizemode: f.sizemode, opacity: f.opacity, colorbar: f.colorbar, line: p, editType: "calc", }); function m(t) { return { valType: "info_array", freeLength: !0, editType: "calc", items: { valType: "subplotid", regex: l[t], editType: "plot", }, }; } (d.color.editType = d.cmin.editType = d.cmax.editType = "style"), (e.exports = { dimensions: c("dimension", { visible: { valType: "boolean", dflt: !0, editType: "calc", }, label: { valType: "string", editType: "calc" }, values: { valType: "data_array", editType: "calc+clearAxisTypes", }, axis: { type: { valType: "enumerated", values: ["linear", "log", "date", "category"], editType: "calc+clearAxisTypes", }, matches: { valType: "boolean", dflt: !1, editType: "calc", }, editType: "calc+clearAxisTypes", }, editType: "calc+clearAxisTypes", }), text: u({}, s.text, {}), hovertext: u({}, s.hovertext, {}), hovertemplate: o(), xhoverformat: a("x"), yhoverformat: a("y"), marker: d, xaxes: m("x"), yaxes: m("y"), diagonal: { visible: { valType: "boolean", dflt: !0, editType: "calc", }, editType: "calc", }, showupperhalf: { valType: "boolean", dflt: !0, editType: "calc", }, showlowerhalf: { valType: "boolean", dflt: !0, editType: "calc", }, selected: { marker: s.selected.marker, editType: "calc" }, unselected: { marker: s.unselected.marker, editType: "calc", }, opacity: s.opacity, }); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plot_api/plot_template": 555, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/cartesian/constants": 573, "../../plots/template_attributes": 642, "../scatter/attributes": 936, "../scattergl/attributes": 988, }, ], 1042: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../components/grid"); (e.exports = { moduleType: "trace", name: "splom", categories: [ "gl", "regl", "cartesian", "symbols", "showLegend", "scatter-like", ], attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: t("../scatter/marker_colorbar"), calc: t("./calc"), plot: t("./plot"), hoverPoints: t("./hover").hoverPoints, selectPoints: t("./select"), editStyle: t("./edit_style"), meta: {}, }), n.register(i); }, { "../../components/grid": 411, "../../registry": 647, "../scatter/marker_colorbar": 954, "./attributes": 1041, "./calc": 1044, "./defaults": 1045, "./edit_style": 1046, "./hover": 1048, "./plot": 1050, "./select": 1052, }, ], 1043: [ function (t, e, r) { "use strict"; var n = t("regl-line2d"), i = t("../../registry"), a = t("../../lib/prepare_regl"), o = t("../../plots/get_data").getModuleCalcData, s = t("../../plots/cartesian"), l = t("../../plots/cartesian/axis_ids").getFromId, c = t("../../plots/cartesian/axes").shouldShowZeroLine, u = {}; function f(t, e, r) { for ( var n = r.matrixOptions.data.length, i = e._visibleDims, a = (r.viewOpts.ranges = new Array(n)), o = 0; o < i.length; o++ ) { var s = i[o], c = (a[o] = new Array(4)), u = l(t, e._diag[s][0]); u && ((c[0] = u.r2l(u.range[0])), (c[2] = u.r2l(u.range[1]))); var f = l(t, e._diag[s][1]); f && ((c[1] = f.r2l(f.range[0])), (c[3] = f.r2l(f.range[1]))); } r.selectBatch.length || r.unselectBatch.length ? r.matrix.update({ ranges: a }, { ranges: a }) : r.matrix.update({ ranges: a }); } function h(t) { var e = t._fullLayout, r = e._glcanvas.data()[0].regl, i = e._splomGrid; i || (i = e._splomGrid = n(r)), i.update( (function (t) { var e, r = t._context.plotGlPixelRatio, n = t._fullLayout, i = n._size, a = [0, 0, n.width * r, n.height * r], o = {}; function s(t, e, n, i, s, l) { (n *= r), (i *= r), (s *= r), (l *= r); var c = e[t + "color"], u = e[t + "width"], f = String(c + u); f in o ? o[f].data.push(NaN, NaN, n, i, s, l) : (o[f] = { data: [n, i, s, l], join: "rect", thickness: u * r, color: c, viewport: a, range: a, overlay: !1, }); } for (e in n._splomSubplots) { var l, u, f = n._plots[e], h = f.xaxis, p = f.yaxis, d = h._gridVals, m = p._gridVals, g = h._offset, v = h._length, y = p._length, x = i.b + p.domain[0] * i.h, b = -p._m, _ = -b * p.r2l(p.range[0], p.calendar); if (h.showgrid) for (e = 0; e < d.length; e++) (l = g + h.l2p(d[e].x)), s("grid", h, l, x, l, x + y); if (p.showgrid) for (e = 0; e < m.length; e++) (u = x + _ + b * m[e].x), s("grid", p, g, u, g + v, u); c(t, h, p) && ((l = g + h.l2p(0)), s("zeroline", h, l, x, l, x + y)), c(t, p, h) && s("zeroline", p, g, (u = x + _ + 0), g + v, u); } var w = []; for (e in o) w.push(o[e]); return w; })(t), ); } e.exports = { name: "splom", attr: s.attr, attrRegex: s.attrRegex, layoutAttributes: s.layoutAttributes, supplyLayoutDefaults: s.supplyLayoutDefaults, drawFramework: s.drawFramework, plot: function (t) { var e = t._fullLayout, r = i.getModule("splom"), n = o(t.calcdata, r)[0]; a( t, ["ANGLE_instanced_arrays", "OES_element_index_uint"], u, ) && (e._hasOnlyLargeSploms && h(t), r.plot(t, {}, n)); }, drag: function (t) { var e = t.calcdata, r = t._fullLayout; r._hasOnlyLargeSploms && h(t); for (var n = 0; n < e.length; n++) { var i = e[n][0].trace, a = r._splomScenes[i.uid]; "splom" === i.type && a && a.matrix && f(t, i, a); } }, updateGrid: h, clean: function (t, e, r, n) { var i, a = {}; if (n._splomScenes) { for (i = 0; i < t.length; i++) { var o = t[i]; "splom" === o.type && (a[o.uid] = 1); } for (i = 0; i < r.length; i++) { var l = r[i]; if (!a[l.uid]) { var c = n._splomScenes[l.uid]; c && c.destroy && c.destroy(), (n._splomScenes[l.uid] = null), delete n._splomScenes[l.uid]; } } } 0 === Object.keys(n._splomScenes || {}).length && delete n._splomScenes, n._splomGrid && !e._hasOnlyLargeSploms && n._hasOnlyLargeSploms && (n._splomGrid.destroy(), (n._splomGrid = null), delete n._splomGrid), s.clean(t, e, r, n); }, updateFx: s.updateFx, toSVG: s.toSVG, reglPrecompiled: u, }; }, { "../../lib/prepare_regl": 528, "../../plots/cartesian": 578, "../../plots/cartesian/axes": 566, "../../plots/cartesian/axis_ids": 570, "../../plots/get_data": 602, "../../registry": 647, "regl-line2d": 281, }, ], 1044: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axis_ids"), a = t("../scatter/calc").calcMarkerSize, o = t("../scatter/calc").calcAxisExpansion, s = t("../scatter/colorscale_calc"), l = t("../scattergl/convert").markerSelection, c = t("../scattergl/convert").markerStyle, u = t("./scene_update"), f = t("../../constants/numerical").BADNUM, h = t("../scattergl/constants").TOO_MANY_POINTS; e.exports = function (t, e) { var r, p, d, m, g, v, y = e.dimensions, x = e._length, b = {}, _ = (b.cdata = []), w = (b.data = []), T = (e._visibleDims = []); function k(t, r) { for ( var i = t.makeCalcdata( { v: r.values, vcalendar: e.calendar }, "v", ), a = 0; a < i.length; a++ ) i[a] = i[a] === f ? NaN : i[a]; _.push(i), w.push("log" === t.type ? n.simpleMap(i, t.c2l) : i); } for (r = 0; r < y.length; r++) if ((d = y[r]).visible) { if ( ((m = i.getFromId(t, e._diag[r][0])), (g = i.getFromId(t, e._diag[r][1])), m && g && m.type !== g.type) ) { n.log( "Skipping splom dimension " + r + " with conflicting axis types", ); continue; } m ? (k(m, d), g && "category" === g.type && (g._categories = m._categories.slice())) : k(g, d), T.push(r); } for ( s(t, e), n.extendFlat(b, c(t, e)), v = _.length * x > h ? b.sizeAvg || Math.max(b.size, 3) : a(e, x), p = 0; p < T.length; p++ ) (d = y[(r = T[p])]), (m = i.getFromId(t, e._diag[r][0]) || {}), (g = i.getFromId(t, e._diag[r][1]) || {}), o(t, e, m, g, _[p], _[p], v); var A = u(t, e); return ( A.matrix || (A.matrix = !0), (A.matrixOptions = b), (A.selectedOptions = l(t, e, e.selected)), (A.unselectedOptions = l(t, e, e.unselected)), [{ x: !1, y: !1, t: {}, trace: e }] ); }; }, { "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/axis_ids": 570, "../scatter/calc": 937, "../scatter/colorscale_calc": 939, "../scattergl/constants": 991, "../scattergl/convert": 992, "./scene_update": 1051, }, ], 1045: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/array_container_defaults"), a = t("./attributes"), o = t("../scatter/subtypes"), s = t("../scatter/marker_defaults"), l = t("../parcoords/merge_length"), c = t("../scattergl/helpers").isOpenSymbol; function u(t, e) { function r(r, i) { return n.coerce(t, e, a.dimensions, r, i); } r("label"); var i = r("values"); i && i.length ? r("visible") : (e.visible = !1), r("axis.type"), r("axis.matches"); } e.exports = function (t, e, r, f) { function h(r, i) { return n.coerce(t, e, a, r, i); } var p = i(t, e, { name: "dimensions", handleItemDefaults: u, }), d = h("diagonal.visible"), m = h("showupperhalf"), g = h("showlowerhalf"); if (l(e, p, "values") && (d || m || g)) { h("text"), h("hovertext"), h("hovertemplate"), h("xhoverformat"), h("yhoverformat"), s(t, e, r, f, h, { noAngleRef: !0, noStandOff: !0 }); var v = c(e.marker.symbol), y = o.isBubble(e); h("marker.line.width", v || y ? 1 : 0), (function (t, e, r, n) { var i, a, o = e.dimensions, s = o.length, l = e.showupperhalf, c = e.showlowerhalf, u = e.diagonal.visible, f = new Array(s), h = new Array(s); for (i = 0; i < s; i++) { var p = i ? i + 1 : ""; (f[i] = "x" + p), (h[i] = "y" + p); } var d = n("xaxes", f), m = n("yaxes", h), g = (e._diag = new Array(s)); (e._xaxes = {}), (e._yaxes = {}); var v = [], y = []; function x(t, n, i, a) { if (t) { var o = t.charAt(0), s = r._splomAxes[o]; if ( ((e["_" + o + "axes"][t] = 1), a.push(t), !(t in s)) ) { var l = (s[t] = {}); i && ((l.label = i.label || ""), i.visible && i.axis && (i.axis.type && (l.type = i.axis.type), i.axis.matches && (l.matches = n))); } } } var b = !u && !c, _ = !u && !l; for (e._axesDim = {}, i = 0; i < s; i++) { var w = o[i], T = 0 === i, k = i === s - 1, A = (T && b) || (k && _) ? void 0 : d[i], M = (T && _) || (k && b) ? void 0 : m[i]; x(A, M, w, v), x(M, A, w, y), (g[i] = [A, M]), (e._axesDim[A] = i), (e._axesDim[M] = i); } for (i = 0; i < v.length; i++) for (a = 0; a < y.length; a++) { var S = v[i] + y[a]; (i > a && l) || (i < a && c) ? (r._splomSubplots[S] = 1) : i !== a || (!u && c && l) || (r._splomSubplots[S] = 1); } (!c || (!u && l && c)) && ((r._splomGridDflt.xside = "bottom"), (r._splomGridDflt.yside = "left")); })(0, e, f, h), n.coerceSelectionMarkerOpacity(e, h); } else e.visible = !1; }; }, { "../../lib": 515, "../../plots/array_container_defaults": 561, "../parcoords/merge_length": 907, "../scatter/marker_defaults": 955, "../scatter/subtypes": 961, "../scattergl/helpers": 996, "./attributes": 1041, }, ], 1046: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../scatter/colorscale_calc"), a = t("../scattergl/convert").markerStyle; e.exports = function (t, e) { var r = e.trace, o = t._fullLayout._splomScenes[r.uid]; if (o) { i(t, r), n.extendFlat(o.matrixOptions, a(t, r)); var s = n.extendFlat({}, o.matrixOptions, o.viewOpts); o.matrix.update(s, null); } }; }, { "../../lib": 515, "../scatter/colorscale_calc": 939, "../scattergl/convert": 992, }, ], 1047: [ function (t, e, r) { "use strict"; r.getDimIndex = function (t, e) { for ( var r = e._id, n = { x: 0, y: 1 }[r.charAt(0)], i = t._visibleDims, a = 0; a < i.length; a++ ) { var o = i[a]; if (t._diag[o][n] === r) return a; } return !1; }; }, {}, ], 1048: [ function (t, e, r) { "use strict"; var n = t("./helpers"), i = t("../scattergl/hover").calcHover; e.exports = { hoverPoints: function (t, e, r) { var a = t.cd[0].trace, o = t.scene.matrixOptions.cdata, s = t.xa, l = t.ya, c = s.c2p(e), u = l.c2p(r), f = t.distance, h = n.getDimIndex(a, s), p = n.getDimIndex(a, l); if (!1 === h || !1 === p) return [t]; for ( var d, m, g = o[h], v = o[p], y = f, x = 0; x < g.length; x++ ) { var b = g[x], _ = v[x], w = s.c2p(b) - c, T = l.c2p(_) - u, k = Math.sqrt(w * w + T * T); k < y && ((y = m = k), (d = x)); } return ( (t.index = d), (t.distance = y), (t.dxy = m), void 0 === d ? [t] : [i(t, g, v, a)] ); }, }; }, { "../scattergl/hover": 997, "./helpers": 1047 }, ], 1049: [ function (t, e, r) { "use strict"; var n = t("./base_index"); (n.basePlotModule = t("./base_plot")), (e.exports = n); }, { "./base_index": 1042, "./base_plot": 1043 }, ], 1050: [ function (t, e, r) { "use strict"; var n = t("regl-splom"), i = t("../../lib"), a = t("../../plots/cartesian/axis_ids"), o = t("../../components/dragelement/helpers").selectMode; function s(t, e) { var r, s, l, c, u, f = t._fullLayout, h = f._size, p = e.trace, d = e.t, m = f._splomScenes[p.uid], g = m.matrixOptions, v = g.cdata, y = f._glcanvas.data()[0].regl, x = f.dragmode; if (0 !== v.length) { (g.lower = p.showupperhalf), (g.upper = p.showlowerhalf), (g.diagonal = p.diagonal.visible); var b = p._visibleDims, _ = v.length, w = (m.viewOpts = {}); for ( w.ranges = new Array(_), w.domains = new Array(_), u = 0; u < b.length; u++ ) { l = b[u]; var T = (w.ranges[u] = new Array(4)), k = (w.domains[u] = new Array(4)); (r = a.getFromId(t, p._diag[l][0])) && ((T[0] = r._rl[0]), (T[2] = r._rl[1]), (k[0] = r.domain[0]), (k[2] = r.domain[1])), (s = a.getFromId(t, p._diag[l][1])) && ((T[1] = s._rl[0]), (T[3] = s._rl[1]), (k[1] = s.domain[0]), (k[3] = s.domain[1])); } var A = t._context.plotGlPixelRatio, M = h.l * A, S = h.b * A, E = h.w * A, L = h.h * A; (w.viewport = [M, S, E + M, L + S]), !0 === m.matrix && (m.matrix = n(y)); var C = f.clickmode.indexOf("select") > -1, P = !0; if (o(x) || !!p.selectedpoints || C) { var I = p._length; if (p.selectedpoints) { m.selectBatch = p.selectedpoints; var O = p.selectedpoints, z = {}; for (l = 0; l < O.length; l++) z[O[l]] = !0; var D = []; for (l = 0; l < I; l++) z[l] || D.push(l); m.unselectBatch = D; } var R = (d.xpx = new Array(_)), F = (d.ypx = new Array(_)); for (u = 0; u < b.length; u++) { if (((l = b[u]), (r = a.getFromId(t, p._diag[l][0])))) for (R[u] = new Array(I), c = 0; c < I; c++) R[u][c] = r.c2p(v[u][c]); if ((s = a.getFromId(t, p._diag[l][1]))) for (F[u] = new Array(I), c = 0; c < I; c++) F[u][c] = s.c2p(v[u][c]); } if (m.selectBatch.length || m.unselectBatch.length) { var B = i.extendFlat({}, g, m.unselectedOptions, w), N = i.extendFlat({}, g, m.selectedOptions, w); m.matrix.update(B, N), (P = !1); } } else d.xpx = d.ypx = null; if (P) { var j = i.extendFlat({}, g, w); m.matrix.update(j, null); } } } e.exports = function (t, e, r) { if (r.length) for (var n = 0; n < r.length; n++) s(t, r[n][0]); }; }, { "../../components/dragelement/helpers": 385, "../../lib": 515, "../../plots/cartesian/axis_ids": 570, "regl-splom": 283, }, ], 1051: [ function (t, e, r) { "use strict"; var n = t("../../lib"); e.exports = function (t, e) { var r = t._fullLayout, i = e.uid, a = r._splomScenes; a || (a = r._splomScenes = {}); var o = { dirty: !0, selectBatch: [], unselectBatch: [] }, s = a[e.uid]; return ( s || (((s = a[i] = n.extendFlat({}, o, { matrix: !1, selectBatch: [], unselectBatch: [], })).draw = function () { s.matrix && s.matrix.draw && (s.selectBatch.length || s.unselectBatch.length ? s.matrix.draw(s.unselectBatch, s.selectBatch) : s.matrix.draw()), (s.dirty = !1); }), (s.destroy = function () { s.matrix && s.matrix.destroy && s.matrix.destroy(), (s.matrixOptions = null), (s.selectBatch = null), (s.unselectBatch = null), (s = null); })), s.dirty || n.extendFlat(s, o), s ); }; }, { "../../lib": 515 }, ], 1052: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = n.pushUnique, a = t("../scatter/subtypes"), o = t("./helpers"); e.exports = function (t, e) { var r = t.cd, s = r[0].trace, l = r[0].t, c = t.scene, u = c.matrixOptions.cdata, f = t.xaxis, h = t.yaxis, p = []; if (!c) return p; var d = !a.hasMarkers(s) && !a.hasText(s); if (!0 !== s.visible || d) return p; var m = o.getDimIndex(s, f), g = o.getDimIndex(s, h); if (!1 === m || !1 === g) return p; var v = l.xpx[m], y = l.ypx[g], x = u[m], b = u[g], _ = (t.scene.selectBatch || []).slice(), w = []; if (!1 !== e && !e.degenerate) for (var T = 0; T < x.length; T++) e.contains([v[T], y[T]], null, T, t) ? (p.push({ pointNumber: T, x: x[T], y: b[T] }), i(_, T)) : -1 !== _.indexOf(T) ? i(_, T) : w.push(T); var k = c.matrixOptions; return ( _.length || w.length ? c.selectBatch.length || c.unselectBatch.length || c.matrix.update( c.unselectedOptions, n.extendFlat({}, k, c.selectedOptions, c.viewOpts), ) : c.matrix.update(k, null), (c.selectBatch = _), (c.unselectBatch = w), p ); }; }, { "../../lib": 515, "../scatter/subtypes": 961, "./helpers": 1047, }, ], 1053: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/attributes"), i = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, a = t("../../plots/template_attributes").hovertemplateAttrs, o = t("../mesh3d/attributes"), s = t("../../plots/attributes"), l = t("../../lib/extend").extendFlat, c = { x: { valType: "data_array", editType: "calc+clearAxisTypes", }, y: { valType: "data_array", editType: "calc+clearAxisTypes", }, z: { valType: "data_array", editType: "calc+clearAxisTypes", }, u: { valType: "data_array", editType: "calc" }, v: { valType: "data_array", editType: "calc" }, w: { valType: "data_array", editType: "calc" }, starts: { x: { valType: "data_array", editType: "calc" }, y: { valType: "data_array", editType: "calc" }, z: { valType: "data_array", editType: "calc" }, editType: "calc", }, maxdisplayed: { valType: "integer", min: 0, dflt: 1e3, editType: "calc", }, sizeref: { valType: "number", editType: "calc", min: 0, dflt: 1, }, text: { valType: "string", dflt: "", editType: "calc" }, hovertext: { valType: "string", dflt: "", editType: "calc", }, hovertemplate: a( { editType: "calc" }, { keys: [ "tubex", "tubey", "tubez", "tubeu", "tubev", "tubew", "norm", "divergence", ], }, ), uhoverformat: i("u", 1), vhoverformat: i("v", 1), whoverformat: i("w", 1), xhoverformat: i("x"), yhoverformat: i("y"), zhoverformat: i("z"), showlegend: l({}, s.showlegend, { dflt: !1 }), }; l( c, n("", { colorAttr: "u/v/w norm", showScaleDflt: !0, editTypeOverride: "calc", }), ); ["opacity", "lightposition", "lighting"].forEach( function (t) { c[t] = o[t]; }, ), (c.hoverinfo = l({}, s.hoverinfo, { editType: "calc", flags: [ "x", "y", "z", "u", "v", "w", "norm", "divergence", "text", "name", ], dflt: "x+y+z+norm+text+name", })), (c.transforms = void 0), (e.exports = c); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/template_attributes": 642, "../mesh3d/attributes": 876, }, ], 1054: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/colorscale/calc"); function a(t) { var e, r, i, a, s, l, c, u, f, h, p, d, m = t._x, g = t._y, v = t._z, y = t._len, x = -1 / 0, b = 1 / 0, _ = -1 / 0, w = 1 / 0, T = -1 / 0, k = 1 / 0, A = ""; for ( y && ((c = m[0]), (f = g[0]), (p = v[0])), y > 1 && ((u = m[y - 1]), (h = g[y - 1]), (d = v[y - 1])), e = 0; e < y; e++ ) (x = Math.max(x, m[e])), (b = Math.min(b, m[e])), (_ = Math.max(_, g[e])), (w = Math.min(w, g[e])), (T = Math.max(T, v[e])), (k = Math.min(k, v[e])), a || m[e] === c || ((a = !0), (A += "x")), s || g[e] === f || ((s = !0), (A += "y")), l || v[e] === p || ((l = !0), (A += "z")); a || (A += "x"), s || (A += "y"), l || (A += "z"); var M = o(t._x), S = o(t._y), E = o(t._z); A = (A = (A = A.replace( "x", (c > u ? "-" : "+") + "x", )).replace("y", (f > h ? "-" : "+") + "y")).replace( "z", (p > d ? "-" : "+") + "z", ); var L = function () { (y = 0), (M = []), (S = []), (E = []); }; (!y || y < M.length * S.length * E.length) && L(); var C = function (t) { return "x" === t ? m : "y" === t ? g : v; }, P = function (t) { return "x" === t ? M : "y" === t ? S : E; }, I = function (t) { return t[y - 1] < t[0] ? -1 : 1; }, O = C(A[1]), z = C(A[3]), D = C(A[5]), R = P(A[1]).length, F = P(A[3]).length, B = P(A[5]).length, N = !1, j = function (t, e, r) { return R * (F * t + e) + r; }, U = I(C(A[1])), V = I(C(A[3])), H = I(C(A[5])); for (e = 0; e < B - 1; e++) { for (r = 0; r < F - 1; r++) { for (i = 0; i < R - 1; i++) { var q = j(e, r, i), G = j(e, r, i + 1), Y = j(e, r + 1, i), W = j(e + 1, r, i); if ( ((O[q] * U < O[G] * U && z[q] * V < z[Y] * V && D[q] * H < D[W] * H) || (N = !0), N) ) break; } if (N) break; } if (N) break; } return ( N && (n.warn( "Encountered arbitrary coordinates! Unable to input data grid.", ), L()), { xMin: b, yMin: w, zMin: k, xMax: x, yMax: _, zMax: T, Xs: M, Ys: S, Zs: E, len: y, fill: A, } ); } function o(t) { return n.distinctVals(t).vals; } function s(t, e) { if ((void 0 === e && (e = t.length), n.isTypedArray(t))) return t.subarray(0, e); for (var r = [], i = 0; i < e; i++) r[i] = +t[i]; return r; } e.exports = { calc: function (t, e) { (e._len = Math.min( e.u.length, e.v.length, e.w.length, e.x.length, e.y.length, e.z.length, )), (e._u = s(e.u, e._len)), (e._v = s(e.v, e._len)), (e._w = s(e.w, e._len)), (e._x = s(e.x, e._len)), (e._y = s(e.y, e._len)), (e._z = s(e.z, e._len)); var r = a(e); (e._gridFill = r.fill), (e._Xs = r.Xs), (e._Ys = r.Ys), (e._Zs = r.Zs), (e._len = r.len); var n, o, l, c = 0; e.starts && ((n = s(e.starts.x || [])), (o = s(e.starts.y || [])), (l = s(e.starts.z || [])), (c = Math.min(n.length, o.length, l.length))), (e._startsX = n || []), (e._startsY = o || []), (e._startsZ = l || []); var u, f = 0, h = 1 / 0; for (u = 0; u < e._len; u++) { var p = e._u[u], d = e._v[u], m = e._w[u], g = Math.sqrt(p * p + d * d + m * m); (f = Math.max(f, g)), (h = Math.min(h, g)); } for ( i(t, e, { vals: [h, f], containerStr: "", cLetter: "c", }), u = 0; u < c; u++ ) { var v = n[u]; (r.xMax = Math.max(r.xMax, v)), (r.xMin = Math.min(r.xMin, v)); var y = o[u]; (r.yMax = Math.max(r.yMax, y)), (r.yMin = Math.min(r.yMin, y)); var x = l[u]; (r.zMax = Math.max(r.zMax, x)), (r.zMin = Math.min(r.zMin, x)); } (e._slen = c), (e._normMax = f), (e._xbnds = [r.xMin, r.xMax]), (e._ybnds = [r.yMin, r.yMax]), (e._zbnds = [r.zMin, r.zMax]); }, filter: s, processGrid: a, }; }, { "../../components/colorscale/calc": 375, "../../lib": 515 }, ], 1055: [ function (t, e, r) { "use strict"; var n = t("../../../stackgl_modules").gl_streamtube3d, i = n.createTubeMesh, a = t("../../lib"), o = t("../../lib/gl_format_color").parseColorScale, s = t("../../components/colorscale").extractOpts, l = t("../../plots/gl3d/zip3"), c = { xaxis: 0, yaxis: 1, zaxis: 2 }; function u(t, e) { (this.scene = t), (this.uid = e), (this.mesh = null), (this.data = null); } var f = u.prototype; function h(t) { var e = t.length; return e > 2 ? t.slice(1, e - 1) : 2 === e ? [(t[0] + t[1]) / 2] : t; } function p(t) { var e = t.length; return 1 === e ? [0.5, 0.5] : [t[1] - t[0], t[e - 1] - t[e - 2]]; } function d(t, e) { var r = t.fullSceneLayout, i = t.dataScale, u = e._len, f = {}; function d(t, e) { var n = r[e], o = i[c[e]]; return a.simpleMap(t, function (t) { return n.d2l(t) * o; }); } if ( ((f.vectors = l( d(e._u, "xaxis"), d(e._v, "yaxis"), d(e._w, "zaxis"), u, )), !u) ) return { positions: [], cells: [] }; var m = d(e._Xs, "xaxis"), g = d(e._Ys, "yaxis"), v = d(e._Zs, "zaxis"); if ( ((f.meshgrid = [m, g, v]), (f.gridFill = e._gridFill), e._slen) ) f.startingPositions = l( d(e._startsX, "xaxis"), d(e._startsY, "yaxis"), d(e._startsZ, "zaxis"), ); else { for ( var y = g[0], x = h(m), b = h(v), _ = new Array(x.length * b.length), w = 0, T = 0; T < x.length; T++ ) for (var k = 0; k < b.length; k++) _[w++] = [x[T], y, b[k]]; f.startingPositions = _; } (f.colormap = o(e)), (f.tubeSize = e.sizeref), (f.maxLength = e.maxdisplayed); var A = d(e._xbnds, "xaxis"), M = d(e._ybnds, "yaxis"), S = d(e._zbnds, "zaxis"), E = p(m), L = p(g), C = p(v), P = [ [A[0] - E[0], M[0] - L[0], S[0] - C[0]], [A[1] + E[1], M[1] + L[1], S[1] + C[1]], ], I = n(f, P), O = s(e); I.vertexIntensityBounds = [ O.min / e._normMax, O.max / e._normMax, ]; var z = e.lightposition; return ( (I.lightPosition = [z.x, z.y, z.z]), (I.ambient = e.lighting.ambient), (I.diffuse = e.lighting.diffuse), (I.specular = e.lighting.specular), (I.roughness = e.lighting.roughness), (I.fresnel = e.lighting.fresnel), (I.opacity = e.opacity), (e._pad = I.tubeScale * e.sizeref * 2), I ); } (f.handlePick = function (t) { var e = this.scene.fullSceneLayout, r = this.scene.dataScale; function n(t, n) { var i = e[n], a = r[c[n]]; return i.l2c(t) / a; } if (t.object === this.mesh) { var i = t.data.position, a = t.data.velocity; return ( (t.traceCoordinate = [ n(i[0], "xaxis"), n(i[1], "yaxis"), n(i[2], "zaxis"), n(a[0], "xaxis"), n(a[1], "yaxis"), n(a[2], "zaxis"), t.data.intensity * this.data._normMax, t.data.divergence, ]), (t.textLabel = this.data.hovertext || this.data.text), !0 ); } }), (f.update = function (t) { this.data = t; var e = d(this.scene, t); this.mesh.update(e); }), (f.dispose = function () { this.scene.glplot.remove(this.mesh), this.mesh.dispose(); }), (e.exports = function (t, e) { var r = t.glplot.gl, n = d(t, e), a = i(r, n), o = new u(t, e.uid); return ( (o.mesh = a), (o.data = e), (a._trace = o), t.glplot.add(a), o ); }); }, { "../../../stackgl_modules": 1133, "../../components/colorscale": 379, "../../lib": 515, "../../lib/gl_format_color": 511, "../../plots/gl3d/zip3": 618, }, ], 1056: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/colorscale/defaults"), a = t("./attributes"); e.exports = function (t, e, r, o) { function s(r, i) { return n.coerce(t, e, a, r, i); } var l = s("u"), c = s("v"), u = s("w"), f = s("x"), h = s("y"), p = s("z"); l && l.length && c && c.length && u && u.length && f && f.length && h && h.length && p && p.length ? (s("starts.x"), s("starts.y"), s("starts.z"), s("maxdisplayed"), s("sizeref"), s("lighting.ambient"), s("lighting.diffuse"), s("lighting.specular"), s("lighting.roughness"), s("lighting.fresnel"), s("lightposition.x"), s("lightposition.y"), s("lightposition.z"), i(t, e, o, s, { prefix: "", cLetter: "c" }), s("text"), s("hovertext"), s("hovertemplate"), s("uhoverformat"), s("vhoverformat"), s("whoverformat"), s("xhoverformat"), s("yhoverformat"), s("zhoverformat"), (e._length = null)) : (e.visible = !1); }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "./attributes": 1053, }, ], 1057: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "streamtube", basePlotModule: t("../../plots/gl3d"), categories: ["gl3d", "showLegend"], attributes: t("./attributes"), supplyDefaults: t("./defaults"), colorbar: { min: "cmin", max: "cmax" }, calc: t("./calc").calc, plot: t("./convert"), eventData: function (t, e) { return ( (t.tubex = t.x), (t.tubey = t.y), (t.tubez = t.z), (t.tubeu = e.traceCoordinate[3]), (t.tubev = e.traceCoordinate[4]), (t.tubew = e.traceCoordinate[5]), (t.norm = e.traceCoordinate[6]), (t.divergence = e.traceCoordinate[7]), delete t.x, delete t.y, delete t.z, t ); }, meta: {}, }; }, { "../../plots/gl3d": 607, "./attributes": 1053, "./calc": 1054, "./convert": 1055, "./defaults": 1056, }, ], 1058: [ function (t, e, r) { "use strict"; var n = t("../../plots/attributes"), i = t("../../plots/template_attributes").hovertemplateAttrs, a = t("../../plots/template_attributes").texttemplateAttrs, o = t("../../components/colorscale/attributes"), s = t("../../plots/domain").attributes, l = t("../pie/attributes"), c = t("./constants"), u = t("../../lib/extend").extendFlat; e.exports = { labels: { valType: "data_array", editType: "calc" }, parents: { valType: "data_array", editType: "calc" }, values: { valType: "data_array", editType: "calc" }, branchvalues: { valType: "enumerated", values: ["remainder", "total"], dflt: "remainder", editType: "calc", }, count: { valType: "flaglist", flags: ["branches", "leaves"], dflt: "leaves", editType: "calc", }, level: { valType: "any", editType: "plot", anim: !0 }, maxdepth: { valType: "integer", editType: "plot", dflt: -1, }, marker: u( { colors: { valType: "data_array", editType: "calc" }, line: { color: u({}, l.marker.line.color, { dflt: null }), width: u({}, l.marker.line.width, { dflt: 1 }), editType: "calc", }, editType: "calc", }, o("marker", { colorAttr: "colors", anim: !1 }), ), leaf: { opacity: { valType: "number", editType: "style", min: 0, max: 1, }, editType: "plot", }, text: l.text, textinfo: { valType: "flaglist", flags: [ "label", "text", "value", "current path", "percent root", "percent entry", "percent parent", ], extras: ["none"], editType: "plot", }, texttemplate: a( { editType: "plot" }, { keys: c.eventDataKeys.concat(["label", "value"]) }, ), hovertext: l.hovertext, hoverinfo: u({}, n.hoverinfo, { flags: [ "label", "text", "value", "name", "current path", "percent root", "percent entry", "percent parent", ], dflt: "label+text+value+name", }), hovertemplate: i({}, { keys: c.eventDataKeys }), textfont: l.textfont, insidetextorientation: l.insidetextorientation, insidetextfont: l.insidetextfont, outsidetextfont: u({}, l.outsidetextfont, {}), rotation: { valType: "angle", dflt: 0, editType: "plot" }, sort: l.sort, root: { color: { valType: "color", editType: "calc", dflt: "rgba(0,0,0,0)", }, editType: "calc", }, domain: s({ name: "sunburst", trace: !0, editType: "calc", }), }; }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/domain": 593, "../../plots/template_attributes": 642, "../pie/attributes": 910, "./constants": 1061, }, ], 1059: [ function (t, e, r) { "use strict"; var n = t("../../plots/plots"); (r.name = "sunburst"), (r.plot = function (t, e, i, a) { n.plotBasePlot(r.name, t, e, i, a); }), (r.clean = function (t, e, i, a) { n.cleanBasePlot(r.name, t, e, i, a); }); }, { "../../plots/plots": 628 }, ], 1060: [ function (t, e, r) { "use strict"; var n = t("d3-hierarchy"), i = t("fast-isnumeric"), a = t("../../lib"), o = t( "../../components/colorscale", ).makeColorScaleFuncFromTrace, s = t("../pie/calc").makePullColorFn, l = t("../pie/calc").generateExtendedColors, c = t("../../components/colorscale").calc, u = t("../../constants/numerical").ALMOST_EQUAL, f = {}, h = {}, p = {}; (r.calc = function (t, e) { var r, l, f, h, p, d, m = t._fullLayout, g = e.ids, v = a.isArrayOrTypedArray(g), y = e.labels, x = e.parents, b = e.values, _ = a.isArrayOrTypedArray(b), w = [], T = {}, k = {}, A = function (t) { return t || "number" == typeof t; }, M = function (t) { return !_ || (i(b[t]) && b[t] >= 0); }; v ? ((r = Math.min(g.length, x.length)), (l = function (t) { return A(g[t]) && M(t); }), (f = function (t) { return String(g[t]); })) : ((r = Math.min(y.length, x.length)), (l = function (t) { return A(y[t]) && M(t); }), (f = function (t) { return String(y[t]); })), _ && (r = Math.min(r, b.length)); for (var S = 0; S < r; S++) if (l(S)) { var E = f(S), L = A(x[S]) ? String(x[S]) : "", C = { i: S, id: E, pid: L, label: A(y[S]) ? String(y[S]) : "", }; _ && (C.v = +b[S]), w.push(C), (p = E), T[(h = L)] ? T[h].push(p) : (T[h] = [p]), (k[p] = 1); } if (T[""]) { if (T[""].length > 1) { for (var P = a.randstr(), I = 0; I < w.length; I++) "" === w[I].pid && (w[I].pid = P); w.unshift({ hasMultipleRoots: !0, id: P, pid: "", label: "", }); } } else { var O, z = []; for (O in T) k[O] || z.push(O); if (1 !== z.length) return a.warn( [ "Multiple implied roots, cannot build", e.type, "hierarchy of", e.name + ".", "These roots include:", z.join(", "), ].join(" "), ); (O = z[0]), w.unshift({ hasImpliedRoot: !0, id: O, pid: "", label: O, }); } try { d = n .stratify() .id(function (t) { return t.id; }) .parentId(function (t) { return t.pid; })(w); } catch (t) { return a.warn( [ "Failed to build", e.type, "hierarchy of", e.name + ".", "Error:", t.message, ].join(" "), ); } var D = n.hierarchy(d), R = !1; if (_) switch (e.branchvalues) { case "remainder": D.sum(function (t) { return t.data.v; }); break; case "total": D.each(function (t) { var r = t.data.data, n = r.v; if (t.children) { var i = t.children.reduce(function (t, e) { return t + e.data.data.v; }, 0); if ( ((r.hasImpliedRoot || r.hasMultipleRoots) && (n = i), n < i * u) ) return ( (R = !0), a.warn( [ "Total value for node", t.data.data.id, "of", e.name, "is smaller than the sum of its children.", "\nparent value =", n, "\nchildren sum =", i, ].join(" "), ) ); } t.value = n; }); } else !(function t(e, r, n) { var i = 0, a = e.children; if (a) { for (var o = a.length, s = 0; s < o; s++) i += t(a[s], r, n); n.branches && i++; } else n.leaves && i++; (e.value = e.data.data.value = i), r._values || (r._values = []); return (r._values[e.data.data.i] = i), i; })(D, e, { branches: -1 !== e.count.indexOf("branches"), leaves: -1 !== e.count.indexOf("leaves"), }); if (!R) { var F, B; e.sort && D.sort(function (t, e) { return e.value - t.value; }); var N = e.marker.colors || [], j = !!N.length; return ( e._hasColorscale ? (j || (N = _ ? e.values : e._values), c(t, e, { vals: N, containerStr: "marker", cLetter: "c", }), (B = o(e.marker))) : (F = s(m["_" + e.type + "colormap"])), D.each(function (t) { var r = t.data.data; r.color = e._hasColorscale ? B(N[r.i]) : F(N[r.i], r.id); }), (w[0].hierarchy = D), w ); } }), (r._runCrossTraceCalc = function (t, e) { var r = e._fullLayout, n = e.calcdata, i = r[t + "colorway"], a = r["_" + t + "colormap"]; r["extend" + t + "colors"] && (i = l( i, "icicle" === t ? p : "treemap" === t ? h : f, )); var o, s = 0; function c(t) { var e = t.data.data, r = e.id; !1 === e.color && (a[r] ? (e.color = a[r]) : t.parent ? t.parent.parent ? (e.color = t.parent.data.data.color) : ((a[r] = e.color = i[s % i.length]), s++) : (e.color = o)); } for (var u = 0; u < n.length; u++) { var d = n[u][0]; d.trace.type === t && d.hierarchy && ((o = d.trace.root.color), d.hierarchy.each(c)); } }), (r.crossTraceCalc = function (t) { return r._runCrossTraceCalc("sunburst", t); }); }, { "../../components/colorscale": 379, "../../constants/numerical": 491, "../../lib": 515, "../pie/calc": 912, "d3-hierarchy": 115, "fast-isnumeric": 190, }, ], 1061: [ function (t, e, r) { "use strict"; e.exports = { CLICK_TRANSITION_TIME: 750, CLICK_TRANSITION_EASING: "linear", eventDataKeys: [ "currentPath", "root", "entry", "percentRoot", "percentEntry", "percentParent", ], }; }, {}, ], 1062: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("../../plots/domain").defaults, o = t("../bar/defaults").handleText, s = t("../../components/colorscale"), l = s.hasColorscale, c = s.handleDefaults; e.exports = function (t, e, r, s) { function u(r, a) { return n.coerce(t, e, i, r, a); } var f = u("labels"), h = u("parents"); if (f && f.length && h && h.length) { var p = u("values"); p && p.length ? u("branchvalues") : u("count"), u("level"), u("maxdepth"), u("marker.line.width") && u("marker.line.color", s.paper_bgcolor), u("marker.colors"); var d = (e._hasColorscale = l(t, "marker", "colors") || (t.marker || {}).coloraxis); d && c(t, e, s, u, { prefix: "marker.", cLetter: "c" }), u("leaf.opacity", d ? 1 : 0.7); var m = u("text"); u("texttemplate"), e.texttemplate || u( "textinfo", Array.isArray(m) ? "text+label" : "label", ), u("hovertext"), u("hovertemplate"); o(t, e, s, u, "auto", { moduleHasSelected: !1, moduleHasUnselected: !1, moduleHasConstrain: !1, moduleHasCliponaxis: !1, moduleHasTextangle: !1, moduleHasInsideanchor: !1, }), u("insidetextorientation"), u("sort"), u("rotation"), u("root.color"), a(e, s, u), (e._length = null); } else e.visible = !1; }; }, { "../../components/colorscale": 379, "../../lib": 515, "../../plots/domain": 593, "../bar/defaults": 661, "./attributes": 1058, }, ], 1063: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../registry"), a = t("../../components/fx/helpers").appendArrayPointValue, o = t("../../components/fx"), s = t("../../lib"), l = t("../../lib/events"), c = t("./helpers"), u = t("../pie/helpers").formatPieValue; function f(t, e, r) { for ( var n = t.data.data, i = { curveNumber: e.index, pointNumber: n.i, data: e._input, fullData: e, }, o = 0; o < r.length; o++ ) { var s = r[o]; s in t && (i[s] = t[s]); } return ( "parentString" in t && !c.isHierarchyRoot(t) && (i.parent = t.parentString), a(i, e, n.i), i ); } e.exports = function (t, e, r, a, h) { var p = a[0], d = p.trace, m = p.hierarchy, g = "sunburst" === d.type, v = "treemap" === d.type || "icicle" === d.type; "_hasHoverLabel" in d || (d._hasHoverLabel = !1), "_hasHoverEvent" in d || (d._hasHoverEvent = !1); t.on("mouseover", function (i) { var a = r._fullLayout; if (!r._dragging && !1 !== a.hovermode) { var l, y = r._fullData[d.index], x = i.data.data, b = x.i, _ = c.isHierarchyRoot(i), w = c.getParent(m, i), T = c.getValue(i), k = function (t) { return s.castOption(y, b, t); }, A = k("hovertemplate"), M = o.castHoverinfo(y, a, b), S = a.separators; if (A || (M && "none" !== M && "skip" !== M)) { var E, L; g && ((E = p.cx + i.pxmid[0] * (1 - i.rInscribed)), (L = p.cy + i.pxmid[1] * (1 - i.rInscribed))), v && ((E = i._hoverX), (L = i._hoverY)); var C, P = {}, I = [], O = [], z = function (t) { return -1 !== I.indexOf(t); }; M && (I = "all" === M ? y._module.attributes.hoverinfo.flags : M.split("+")), (P.label = x.label), z("label") && P.label && O.push(P.label), x.hasOwnProperty("v") && ((P.value = x.v), (P.valueLabel = u(P.value, S)), z("value") && O.push(P.valueLabel)), (P.currentPath = i.currentPath = c.getPath(i.data)), z("current path") && !_ && O.push(P.currentPath); var D = [], R = function () { -1 === D.indexOf(C) && (O.push(C), D.push(C)); }; (P.percentParent = i.percentParent = T / c.getValue(w)), (P.parent = i.parentString = c.getPtLabel(w)), z("percent parent") && ((C = c.formatPercent(P.percentParent, S) + " of " + P.parent), R()), (P.percentEntry = i.percentEntry = T / c.getValue(e)), (P.entry = i.entry = c.getPtLabel(e)), !z("percent entry") || _ || i.onPathbar || ((C = c.formatPercent(P.percentEntry, S) + " of " + P.entry), R()), (P.percentRoot = i.percentRoot = T / c.getValue(m)), (P.root = i.root = c.getPtLabel(m)), z("percent root") && !_ && ((C = c.formatPercent(P.percentRoot, S) + " of " + P.root), R()), (P.text = k("hovertext") || k("text")), z("text") && ((C = P.text), s.isValidTextValue(C) && O.push(C)), (l = [f(i, y, h.eventDataKeys)]); var F = { trace: y, y: L, _x0: i._x0, _x1: i._x1, _y0: i._y0, _y1: i._y1, text: O.join("
"), name: A || z("name") ? y.name : void 0, color: k("hoverlabel.bgcolor") || x.color, borderColor: k("hoverlabel.bordercolor"), fontFamily: k("hoverlabel.font.family"), fontSize: k("hoverlabel.font.size"), fontColor: k("hoverlabel.font.color"), nameLength: k("hoverlabel.namelength"), textAlign: k("hoverlabel.align"), hovertemplate: A, hovertemplateLabels: P, eventData: l, }; g && ((F.x0 = E - i.rInscribed * i.rpx1), (F.x1 = E + i.rInscribed * i.rpx1), (F.idealAlign = i.pxmid[0] < 0 ? "left" : "right")), v && ((F.x = E), (F.idealAlign = E < 0 ? "left" : "right")); var B = []; o.loneHover(F, { container: a._hoverlayer.node(), outerContainer: a._paper.node(), gd: r, inOut_bbox: B, }), (l[0].bbox = B[0]), (d._hasHoverLabel = !0); } if (v) { var N = t.select("path.surface"); h.styleOne(N, i, y, { hovered: !0 }); } (d._hasHoverEvent = !0), r.emit("plotly_hover", { points: l || [f(i, y, h.eventDataKeys)], event: n.event, }); } }), t.on("mouseout", function (e) { var i = r._fullLayout, a = r._fullData[d.index], s = n.select(this).datum(); if ( (d._hasHoverEvent && ((e.originalEvent = n.event), r.emit("plotly_unhover", { points: [f(s, a, h.eventDataKeys)], event: n.event, }), (d._hasHoverEvent = !1)), d._hasHoverLabel && (o.loneUnhover(i._hoverlayer.node()), (d._hasHoverLabel = !1)), v) ) { var l = t.select("path.surface"); h.styleOne(l, s, a, { hovered: !1 }); } }), t.on("click", function (t) { var e = r._fullLayout, a = r._fullData[d.index], s = g && (c.isHierarchyRoot(t) || c.isLeaf(t)), u = c.getPtId(t), p = c.isEntry(t) ? c.findEntryWithChild(m, u) : c.findEntryWithLevel(m, u), v = c.getPtId(p), y = { points: [f(t, a, h.eventDataKeys)], event: n.event, }; s || (y.nextLevel = v); var x = l.triggerHandler( r, "plotly_" + d.type + "click", y, ); if ( (!1 !== x && e.hovermode && ((r._hoverdata = [f(t, a, h.eventDataKeys)]), o.click(r, n.event)), !s && !1 !== x && !r._dragging && !r._transitioning) ) { i.call( "_storeDirectGUIEdit", a, e._tracePreGUI[a.uid], { level: a.level }, ); var b = { data: [{ level: v }], traces: [d.index] }, _ = { frame: { redraw: !1, duration: h.transitionTime }, transition: { duration: h.transitionTime, easing: h.transitionEasing, }, mode: "immediate", fromcurrent: !0, }; o.loneUnhover(e._hoverlayer.node()), i.call("animate", r, b, _); } }); }; }, { "../../components/fx": 407, "../../components/fx/helpers": 403, "../../lib": 515, "../../lib/events": 504, "../../registry": 647, "../pie/helpers": 915, "./helpers": 1064, "@plotly/d3": 58, }, ], 1064: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/color"), a = t("../../lib/setcursor"), o = t("../pie/helpers"); function s(t) { return t.data.data.pid; } (r.findEntryWithLevel = function (t, e) { var n; return ( e && t.eachAfter(function (t) { if (r.getPtId(t) === e) return (n = t.copy()); }), n || t ); }), (r.findEntryWithChild = function (t, e) { var n; return ( t.eachAfter(function (t) { for ( var i = t.children || [], a = 0; a < i.length; a++ ) { var o = i[a]; if (r.getPtId(o) === e) return (n = t.copy()); } }), n || t ); }), (r.isEntry = function (t) { return !t.parent; }), (r.isLeaf = function (t) { return !t.children; }), (r.getPtId = function (t) { return t.data.data.id; }), (r.getPtLabel = function (t) { return t.data.data.label; }), (r.getValue = function (t) { return t.value; }), (r.isHierarchyRoot = function (t) { return "" === s(t); }), (r.setSliceCursor = function (t, e, n) { var i = n.isTransitioning; if (!i) { var o = t.datum(); i = (n.hideOnRoot && r.isHierarchyRoot(o)) || (n.hideOnLeaves && r.isLeaf(o)); } a(t, i ? null : "pointer"); }), (r.getInsideTextFontKey = function (t, e, r, i, a) { var o = (a || {}).onPathbar ? "pathbar.textfont" : "insidetextfont", s = r.data.data.i; return ( n.castOption(e, s, o + "." + t) || n.castOption(e, s, "textfont." + t) || i.size ); }), (r.getOutsideTextFontKey = function (t, e, r, i) { var a = r.data.data.i; return ( n.castOption(e, a, "outsidetextfont." + t) || n.castOption(e, a, "textfont." + t) || i.size ); }), (r.isOutsideText = function (t, e) { return !t._hasColorscale && r.isHierarchyRoot(e); }), (r.determineTextFont = function (t, e, a, o) { return r.isOutsideText(t, e) ? (function (t, e, n) { return { color: r.getOutsideTextFontKey("color", t, e, n), family: r.getOutsideTextFontKey( "family", t, e, n, ), size: r.getOutsideTextFontKey("size", t, e, n), }; })(t, e, a) : (function (t, e, a, o) { var s = (o || {}).onPathbar, l = e.data.data, c = l.i, u = n.castOption( t, c, (s ? "pathbar.textfont" : "insidetextfont") + ".color", ); return ( !u && t._input.textfont && (u = n.castOption( t._input, c, "textfont.color", )), { color: u || i.contrast(l.color), family: r.getInsideTextFontKey( "family", t, e, a, o, ), size: r.getInsideTextFontKey( "size", t, e, a, o, ), } ); })(t, e, a, o); }), (r.hasTransition = function (t) { return !!(t && t.duration > 0); }), (r.getMaxDepth = function (t) { return t.maxdepth >= 0 ? t.maxdepth : 1 / 0; }), (r.isHeader = function (t, e) { return !(r.isLeaf(t) || t.depth === e._maxDepth - 1); }), (r.getParent = function (t, e) { return r.findEntryWithLevel(t, s(e)); }), (r.listPath = function (t, e) { var n = t.parent; if (!n) return []; var i = e ? [n.data[e]] : [n]; return r.listPath(n, e).concat(i); }), (r.getPath = function (t) { return r.listPath(t, "label").join("/") + "/"; }), (r.formatValue = o.formatPieValue), (r.formatPercent = function (t, e) { var r = n.formatPercent(t, 0); return "0%" === r && (r = o.formatPiePercent(t, e)), r; }); }, { "../../components/color": 367, "../../lib": 515, "../../lib/setcursor": 536, "../pie/helpers": 915, }, ], 1065: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "sunburst", basePlotModule: t("./base_plot"), categories: [], animatable: !0, attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyDefaults: t("./defaults"), supplyLayoutDefaults: t("./layout_defaults"), calc: t("./calc").calc, crossTraceCalc: t("./calc").crossTraceCalc, plot: t("./plot").plot, style: t("./style").style, colorbar: t("../scatter/marker_colorbar"), meta: {}, }; }, { "../scatter/marker_colorbar": 954, "./attributes": 1058, "./base_plot": 1059, "./calc": 1060, "./defaults": 1062, "./layout_attributes": 1066, "./layout_defaults": 1067, "./plot": 1068, "./style": 1069, }, ], 1066: [ function (t, e, r) { "use strict"; e.exports = { sunburstcolorway: { valType: "colorlist", editType: "calc", }, extendsunburstcolors: { valType: "boolean", dflt: !0, editType: "calc", }, }; }, {}, ], 1067: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"); e.exports = function (t, e) { function r(r, a) { return n.coerce(t, e, i, r, a); } r("sunburstcolorway", e.colorway), r("extendsunburstcolors"); }; }, { "../../lib": 515, "./layout_attributes": 1066 }, ], 1068: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("d3-hierarchy"), a = t("d3-interpolate").interpolate, o = t("../../components/drawing"), s = t("../../lib"), l = t("../../lib/svg_text_utils"), c = t("../bar/uniform_text"), u = c.recordMinTextSize, f = c.clearMinTextSize, h = t("../pie/plot"), p = t("../pie/helpers").getRotationAngle, d = h.computeTransform, m = h.transformInsideText, g = t("./style").styleOne, v = t("../bar/style").resizeText, y = t("./fx"), x = t("./constants"), b = t("./helpers"); function _(t, e, c, f) { var h = t._context.staticPlot, v = t._fullLayout, _ = !v.uniformtext.mode && b.hasTransition(f), T = n.select(c).selectAll("g.slice"), k = e[0], A = k.trace, M = k.hierarchy, S = b.findEntryWithLevel(M, A.level), E = b.getMaxDepth(A), L = v._size, C = A.domain, P = L.w * (C.x[1] - C.x[0]), I = L.h * (C.y[1] - C.y[0]), O = 0.5 * Math.min(P, I), z = (k.cx = L.l + (L.w * (C.x[1] + C.x[0])) / 2), D = (k.cy = L.t + L.h * (1 - C.y[0]) - I / 2); if (!S) return T.remove(); var R = null, F = {}; _ && T.each(function (t) { (F[b.getPtId(t)] = { rpx0: t.rpx0, rpx1: t.rpx1, x0: t.x0, x1: t.x1, transform: t.transform, }), !R && b.isEntry(t) && (R = t); }); var B = (function (t) { return i.partition().size([2 * Math.PI, t.height + 1])( t, ); })(S).descendants(), N = S.height + 1, j = 0, U = E; k.hasMultipleRoots && b.isHierarchyRoot(S) && ((B = B.slice(1)), (N -= 1), (j = 1), (U += 1)), (B = B.filter(function (t) { return t.y1 <= U; })); var V = p(A.rotation); V && B.forEach(function (t) { (t.x0 += V), (t.x1 += V); }); var H = Math.min(N, E), q = function (t) { return ((t - j) / H) * O; }, G = function (t, e) { return [t * Math.cos(e), -t * Math.sin(e)]; }, Y = function (t) { return s.pathAnnulus(t.rpx0, t.rpx1, t.x0, t.x1, z, D); }, W = function (t) { return ( z + w(t)[0] * (t.transform.rCenter || 0) + (t.transform.x || 0) ); }, Z = function (t) { return ( D + w(t)[1] * (t.transform.rCenter || 0) + (t.transform.y || 0) ); }; (T = T.data(B, b.getPtId)) .enter() .append("g") .classed("slice", !0), _ ? T.exit() .transition() .each(function () { var t = n.select(this); t .select("path.surface") .transition() .attrTween("d", function (t) { var e = (function (t) { var e, r = b.getPtId(t), n = F[r], i = F[b.getPtId(S)]; if (i) { var o = (t.x1 > i.x1 ? 2 * Math.PI : 0) + V; e = t.rpx1 < i.rpx1 ? { x0: t.x0, x1: t.x1, rpx0: 0, rpx1: 0, } : { x0: o, x1: o, rpx0: t.rpx0, rpx1: t.rpx1, }; } else { var s, l = b.getPtId(t.parent); T.each(function (t) { if (b.getPtId(t) === l) return (s = t); }); var c, u = s.children; u.forEach(function (t, e) { if (b.getPtId(t) === r) return (c = e); }); var f = u.length, h = a(s.x0, s.x1); e = { rpx0: O, rpx1: O, x0: h(c / f), x1: h((c + 1) / f), }; } return a(n, e); })(t); return function (t) { return Y(e(t)); }; }), t.select("g.slicetext").attr("opacity", 0); }) .remove() : T.exit().remove(), T.order(); var X = null; if (_ && R) { var J = b.getPtId(R); T.each(function (t) { null === X && b.getPtId(t) === J && (X = t.x1); }); } var K = T; function Q(t) { var e = t.parent, r = F[b.getPtId(e)], n = {}; if (r) { var i = e.children, o = i.indexOf(t), s = i.length, l = a(r.x0, r.x1); (n.x0 = l(o / s)), (n.x1 = l(o / s)); } else n.x0 = n.x1 = 0; return n; } _ && (K = K.transition().each("end", function () { var e = n.select(this); b.setSliceCursor(e, t, { hideOnRoot: !0, hideOnLeaves: !0, isTransitioning: !1, }); })), K.each(function (i) { var c = n.select(this), f = s.ensureSingle( c, "path", "surface", function (t) { t.style("pointer-events", h ? "none" : "all"); }, ); (i.rpx0 = q(i.y0)), (i.rpx1 = q(i.y1)), (i.xmid = (i.x0 + i.x1) / 2), (i.pxmid = G(i.rpx1, i.xmid)), (i.midangle = -(i.xmid - Math.PI / 2)), (i.startangle = -(i.x0 - Math.PI / 2)), (i.stopangle = -(i.x1 - Math.PI / 2)), (i.halfangle = 0.5 * Math.min( s.angleDelta(i.x0, i.x1) || Math.PI, Math.PI, )), (i.ring = 1 - i.rpx0 / i.rpx1), (i.rInscribed = (function (t) { return 0 === t.rpx0 && s.isFullCircle([t.x0, t.x1]) ? 1 : Math.max( 0, Math.min( 1 / (1 + 1 / Math.sin(t.halfangle)), t.ring / 2, ), ); })(i)), _ ? f.transition().attrTween("d", function (t) { var e = (function (t) { var e, r = F[b.getPtId(t)], n = { x0: t.x0, x1: t.x1, rpx0: t.rpx0, rpx1: t.rpx1, }; if (r) e = r; else if (R) if (t.parent) if (X) { var i = (t.x1 > X ? 2 * Math.PI : 0) + V; e = { x0: i, x1: i }; } else (e = { rpx0: O, rpx1: O }), s.extendFlat(e, Q(t)); else e = { rpx0: 0, rpx1: 0 }; else e = { x0: V, x1: V }; return a(e, n); })(t); return function (t) { return Y(e(t)); }; }) : f.attr("d", Y), c .call(y, S, t, e, { eventDataKeys: x.eventDataKeys, transitionTime: x.CLICK_TRANSITION_TIME, transitionEasing: x.CLICK_TRANSITION_EASING, }) .call(b.setSliceCursor, t, { hideOnRoot: !0, hideOnLeaves: !0, isTransitioning: t._transitioning, }), f.call(g, i, A); var p = s.ensureSingle(c, "g", "slicetext"), w = s.ensureSingle(p, "text", "", function (t) { t.attr("data-notex", 1); }), T = s.ensureUniformFontSize( t, b.determineTextFont(A, i, v.font), ); w.text(r.formatSliceLabel(i, S, A, e, v)) .classed("slicetext", !0) .attr("text-anchor", "middle") .call(o.font, T) .call(l.convertToTspans, t); var M = o.bBox(w.node()); (i.transform = m(M, i, k)), (i.transform.targetX = W(i)), (i.transform.targetY = Z(i)); var E = function (t, e) { var r = t.transform; return ( d(r, e), (r.fontSize = T.size), u(A.type, r, v), s.getTextTransform(r) ); }; _ ? w.transition().attrTween("transform", function (t) { var e = (function (t) { var e, r = F[b.getPtId(t)], n = t.transform; if (r) e = r; else if ( ((e = { rpx1: t.rpx1, transform: { textPosAngle: n.textPosAngle, scale: 0, rotate: n.rotate, rCenter: n.rCenter, x: n.x, y: n.y, }, }), R) ) if (t.parent) if (X) { var i = t.x1 > X ? 2 * Math.PI : 0; e.x0 = e.x1 = i; } else s.extendFlat(e, Q(t)); else e.x0 = e.x1 = V; else e.x0 = e.x1 = V; var o = a( e.transform.textPosAngle, t.transform.textPosAngle, ), l = a(e.rpx1, t.rpx1), c = a(e.x0, t.x0), f = a(e.x1, t.x1), h = a(e.transform.scale, n.scale), p = a(e.transform.rotate, n.rotate), d = 0 === n.rCenter ? 3 : 0 === e.transform.rCenter ? 1 / 3 : 1, m = a(e.transform.rCenter, n.rCenter); return function (t) { var e = l(t), r = c(t), i = f(t), a = (function (t) { return m(Math.pow(t, d)); })(t), s = { pxmid: G(e, (r + i) / 2), rpx1: e, transform: { textPosAngle: o(t), rCenter: a, x: n.x, y: n.y, }, }; return ( u(A.type, n, v), { transform: { targetX: W(s), targetY: Z(s), scale: h(t), rotate: p(t), rCenter: a, }, } ); }; })(t); return function (t) { return E(e(t), M); }; }) : w.attr("transform", E(i, M)); }); } function w(t) { return ( (e = t.rpx1), (r = t.transform.textPosAngle), [e * Math.sin(r), -e * Math.cos(r)] ); var e, r; } (r.plot = function (t, e, r, i) { var a, o, s = t._fullLayout, l = s._sunburstlayer, c = !r, u = !s.uniformtext.mode && b.hasTransition(r); (f("sunburst", s), (a = l.selectAll("g.trace.sunburst").data(e, function (t) { return t[0].trace.uid; })) .enter() .append("g") .classed("trace", !0) .classed("sunburst", !0) .attr("stroke-linejoin", "round"), a.order(), u) ? (i && (o = i()), n .transition() .duration(r.duration) .ease(r.easing) .each("end", function () { o && o(); }) .each("interrupt", function () { o && o(); }) .each(function () { l.selectAll("g.trace").each(function (e) { _(t, e, this, r); }); })) : (a.each(function (e) { _(t, e, this, r); }), s.uniformtext.mode && v( t, s._sunburstlayer.selectAll(".trace"), "sunburst", )); c && a.exit().remove(); }), (r.formatSliceLabel = function (t, e, r, n, i) { var a = r.texttemplate, o = r.textinfo; if (!(a || (o && "none" !== o))) return ""; var l = i.separators, c = n[0], u = t.data.data, f = c.hierarchy, h = b.isHierarchyRoot(t), p = b.getParent(f, t), d = b.getValue(t); if (!a) { var m, g = o.split("+"), v = function (t) { return -1 !== g.indexOf(t); }, y = []; if ( (v("label") && u.label && y.push(u.label), u.hasOwnProperty("v") && v("value") && y.push(b.formatValue(u.v, l)), !h) ) { v("current path") && y.push(b.getPath(t.data)); var x = 0; v("percent parent") && x++, v("percent entry") && x++, v("percent root") && x++; var _ = x > 1; if (x) { var w, T = function (t) { (m = b.formatPercent(w, l)), _ && (m += " of " + t), y.push(m); }; v("percent parent") && !h && ((w = d / b.getValue(p)), T("parent")), v("percent entry") && ((w = d / b.getValue(e)), T("entry")), v("percent root") && ((w = d / b.getValue(f)), T("root")); } } return ( v("text") && ((m = s.castOption(r, u.i, "text")), s.isValidTextValue(m) && y.push(m)), y.join("
") ); } var k = s.castOption(r, u.i, "texttemplate"); if (!k) return ""; var A = {}; u.label && (A.label = u.label), u.hasOwnProperty("v") && ((A.value = u.v), (A.valueLabel = b.formatValue(u.v, l))), (A.currentPath = b.getPath(t.data)), h || ((A.percentParent = d / b.getValue(p)), (A.percentParentLabel = b.formatPercent( A.percentParent, l, )), (A.parent = b.getPtLabel(p))), (A.percentEntry = d / b.getValue(e)), (A.percentEntryLabel = b.formatPercent( A.percentEntry, l, )), (A.entry = b.getPtLabel(e)), (A.percentRoot = d / b.getValue(f)), (A.percentRootLabel = b.formatPercent( A.percentRoot, l, )), (A.root = b.getPtLabel(f)), u.hasOwnProperty("color") && (A.color = u.color); var M = s.castOption(r, u.i, "text"); return ( (s.isValidTextValue(M) || "" === M) && (A.text = M), (A.customdata = s.castOption(r, u.i, "customdata")), s.texttemplateString( k, A, i._d3locale, A, r._meta || {}, ) ); }); }, { "../../components/drawing": 389, "../../lib": 515, "../../lib/svg_text_utils": 541, "../bar/style": 671, "../bar/uniform_text": 673, "../pie/helpers": 915, "../pie/plot": 919, "./constants": 1061, "./fx": 1063, "./helpers": 1064, "./style": 1069, "@plotly/d3": 58, "d3-hierarchy": 115, "d3-interpolate": 116, }, ], 1069: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/color"), a = t("../../lib"), o = t("../bar/uniform_text").resizeText; function s(t, e, r) { var n = e.data.data, o = !e.children, s = n.i, l = a.castOption(r, s, "marker.line.color") || i.defaultLine, c = a.castOption(r, s, "marker.line.width") || 0; t.style("stroke-width", c) .call(i.fill, n.color) .call(i.stroke, l) .style("opacity", o ? r.leaf.opacity : null); } e.exports = { style: function (t) { var e = t._fullLayout._sunburstlayer.selectAll(".trace"); o(t, e, "sunburst"), e.each(function (t) { var e = n.select(this), r = t[0].trace; e.style("opacity", r.opacity), e.selectAll("path.surface").each(function (t) { n.select(this).call(s, t, r); }); }); }, styleOne: s, }; }, { "../../components/color": 367, "../../lib": 515, "../bar/uniform_text": 673, "@plotly/d3": 58, }, ], 1070: [ function (t, e, r) { "use strict"; var n = t("../../components/color"), i = t("../../components/colorscale/attributes"), a = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, o = t("../../plots/template_attributes").hovertemplateAttrs, s = t("../../plots/attributes"), l = t("../../lib/extend").extendFlat, c = t("../../plot_api/edit_types").overrideAll; function u(t) { return { show: { valType: "boolean", dflt: !1 }, start: { valType: "number", dflt: null, editType: "plot", }, end: { valType: "number", dflt: null, editType: "plot" }, size: { valType: "number", dflt: null, min: 0, editType: "plot", }, project: { x: { valType: "boolean", dflt: !1 }, y: { valType: "boolean", dflt: !1 }, z: { valType: "boolean", dflt: !1 }, }, color: { valType: "color", dflt: n.defaultLine }, usecolormap: { valType: "boolean", dflt: !1 }, width: { valType: "number", min: 1, max: 16, dflt: 2 }, highlight: { valType: "boolean", dflt: !0 }, highlightcolor: { valType: "color", dflt: n.defaultLine }, highlightwidth: { valType: "number", min: 1, max: 16, dflt: 2, }, }; } var f = (e.exports = c( l( { z: { valType: "data_array" }, x: { valType: "data_array" }, y: { valType: "data_array" }, text: { valType: "string", dflt: "", arrayOk: !0 }, hovertext: { valType: "string", dflt: "", arrayOk: !0 }, hovertemplate: o(), xhoverformat: a("x"), yhoverformat: a("y"), zhoverformat: a("z"), connectgaps: { valType: "boolean", dflt: !1, editType: "calc", }, surfacecolor: { valType: "data_array" }, }, i("", { colorAttr: "z or surfacecolor", showScaleDflt: !0, autoColorDflt: !1, editTypeOverride: "calc", }), { contours: { x: u(), y: u(), z: u() }, hidesurface: { valType: "boolean", dflt: !1 }, lightposition: { x: { valType: "number", min: -1e5, max: 1e5, dflt: 10, }, y: { valType: "number", min: -1e5, max: 1e5, dflt: 1e4, }, z: { valType: "number", min: -1e5, max: 1e5, dflt: 0, }, }, lighting: { ambient: { valType: "number", min: 0, max: 1, dflt: 0.8, }, diffuse: { valType: "number", min: 0, max: 1, dflt: 0.8, }, specular: { valType: "number", min: 0, max: 2, dflt: 0.05, }, roughness: { valType: "number", min: 0, max: 1, dflt: 0.5, }, fresnel: { valType: "number", min: 0, max: 5, dflt: 0.2, }, }, opacity: { valType: "number", min: 0, max: 1, dflt: 1 }, opacityscale: { valType: "any", editType: "calc" }, _deprecated: { zauto: l({}, i.zauto, {}), zmin: l({}, i.zmin, {}), zmax: l({}, i.zmax, {}), }, hoverinfo: l({}, s.hoverinfo), showlegend: l({}, s.showlegend, { dflt: !1 }), }, ), "calc", "nested", )); (f.x.editType = f.y.editType = f.z.editType = "calc+clearAxisTypes"), (f.transforms = void 0); }, { "../../components/color": 367, "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/template_attributes": 642, }, ], 1071: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/calc"); e.exports = function (t, e) { e.surfacecolor ? n(t, e, { vals: e.surfacecolor, containerStr: "", cLetter: "c", }) : n(t, e, { vals: e.z, containerStr: "", cLetter: "c" }); }; }, { "../../components/colorscale/calc": 375 }, ], 1072: [ function (t, e, r) { "use strict"; var n = t("../../../stackgl_modules").gl_surface3d, i = t("../../../stackgl_modules").ndarray, a = t("../../../stackgl_modules").ndarray_linear_interpolate .d2, o = t("../heatmap/interp2d"), s = t("../heatmap/find_empties"), l = t("../../lib").isArrayOrTypedArray, c = t("../../lib/gl_format_color").parseColorScale, u = t("../../lib/str2rgbarray"), f = t("../../components/colorscale").extractOpts; function h(t, e, r) { (this.scene = t), (this.uid = r), (this.surface = e), (this.data = null), (this.showContour = [!1, !1, !1]), (this.contourStart = [null, null, null]), (this.contourEnd = [null, null, null]), (this.contourSize = [0, 0, 0]), (this.minValues = [1 / 0, 1 / 0, 1 / 0]), (this.maxValues = [-1 / 0, -1 / 0, -1 / 0]), (this.dataScaleX = 1), (this.dataScaleY = 1), (this.refineData = !0), (this.objectOffset = [0, 0, 0]); } var p = h.prototype; (p.getXat = function (t, e, r, n) { var i = l(this.data.x) ? l(this.data.x[0]) ? this.data.x[e][t] : this.data.x[t] : t; return void 0 === r ? i : n.d2l(i, 0, r); }), (p.getYat = function (t, e, r, n) { var i = l(this.data.y) ? l(this.data.y[0]) ? this.data.y[e][t] : this.data.y[e] : e; return void 0 === r ? i : n.d2l(i, 0, r); }), (p.getZat = function (t, e, r, n) { var i = this.data.z[e][t]; return ( null === i && this.data.connectgaps && this.data._interpolatedZ && (i = this.data._interpolatedZ[e][t]), void 0 === r ? i : n.d2l(i, 0, r) ); }), (p.handlePick = function (t) { if (t.object === this.surface) { var e = (t.data.index[0] - 1) / this.dataScaleX - 1, r = (t.data.index[1] - 1) / this.dataScaleY - 1, n = Math.max( Math.min(Math.round(e), this.data.z[0].length - 1), 0, ), i = Math.max( Math.min(Math.round(r), this.data._ylength - 1), 0, ); (t.index = [n, i]), (t.traceCoordinate = [ this.getXat(n, i), this.getYat(n, i), this.getZat(n, i), ]), (t.dataCoordinate = [ this.getXat( n, i, this.data.xcalendar, this.scene.fullSceneLayout.xaxis, ), this.getYat( n, i, this.data.ycalendar, this.scene.fullSceneLayout.yaxis, ), this.getZat( n, i, this.data.zcalendar, this.scene.fullSceneLayout.zaxis, ), ]); for (var a = 0; a < 3; a++) { var o = t.dataCoordinate[a]; null != o && (t.dataCoordinate[a] *= this.scene.dataScale[a]); } var s = this.data.hovertext || this.data.text; return ( Array.isArray(s) && s[i] && void 0 !== s[i][n] ? (t.textLabel = s[i][n]) : (t.textLabel = s || ""), (t.data.dataCoordinate = t.dataCoordinate.slice()), this.surface.highlight(t.data), (this.scene.glplot.spikes.position = t.dataCoordinate), !0 ); } }); var d = [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, ]; function m(t, e) { if (t < e) return 0; for (var r = 0; 0 === Math.floor(t % e); ) (t /= e), r++; return r; } function g(t) { for (var e = [], r = 0; r < d.length; r++) { var n = d[r]; e.push(m(t, n)); } return e; } function v(t) { for (var e = g(t), r = t, n = 0; n < d.length; n++) if (e[n] > 0) { r = d[n]; break; } return r; } function y(t, e) { if (!(t < 1 || e < 1)) { for ( var r = g(t), n = g(e), i = 1, a = 0; a < d.length; a++ ) i *= Math.pow(d[a], Math.max(r[a], n[a])); return i; } } (p.calcXnums = function (t) { var e, r = []; for (e = 1; e < t; e++) { var n = this.getXat(e - 1, 0), i = this.getXat(e, 0); r[e - 1] = i !== n && null != n && null != i ? Math.abs(i - n) : 0; } var a = 0; for (e = 1; e < t; e++) a += r[e - 1]; for (e = 1; e < t; e++) 0 === r[e - 1] ? (r[e - 1] = 1) : (r[e - 1] = Math.round(a / r[e - 1])); return r; }), (p.calcYnums = function (t) { var e, r = []; for (e = 1; e < t; e++) { var n = this.getYat(0, e - 1), i = this.getYat(0, e); r[e - 1] = i !== n && null != n && null != i ? Math.abs(i - n) : 0; } var a = 0; for (e = 1; e < t; e++) a += r[e - 1]; for (e = 1; e < t; e++) 0 === r[e - 1] ? (r[e - 1] = 1) : (r[e - 1] = Math.round(a / r[e - 1])); return r; }); var x = [ 1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, ], b = x[9], _ = x[13]; function w(t, e, r) { var n = r[8] + r[2] * e[0] + r[5] * e[1]; return ( (t[0] = (r[6] + r[0] * e[0] + r[3] * e[1]) / n), (t[1] = (r[7] + r[1] * e[0] + r[4] * e[1]) / n), t ); } function T(t, e, r) { return ( (function (t, e, r, n) { for ( var i = [0, 0], o = t.shape[0], s = t.shape[1], l = 0; l < o; l++ ) for (var c = 0; c < s; c++) r(i, [l, c], n), t.set(l, c, a(e, i[0], i[1])); })(t, e, w, r), t ); } function k(t, e) { for (var r = !1, n = 0; n < t.length; n++) if (e === t[n]) { r = !0; break; } !1 === r && t.push(e); } (p.estimateScale = function (t, e) { for ( var r = 1 + (function (t) { if (0 !== t.length) { for (var e = 1, r = 0; r < t.length; r++) e = y(e, t[r]); return e; } })(0 === e ? this.calcXnums(t) : this.calcYnums(t)); r < b; ) r *= 2; for (; r > _; ) r--, (r /= v(r)), ++r < b && (r = _); var n = Math.round(r / t); return n > 1 ? n : 1; }), (p.refineCoords = function (t) { for ( var e = this.dataScaleX, r = this.dataScaleY, n = t[0].shape[0], a = t[0].shape[1], o = 0 | Math.floor(t[0].shape[0] * e + 1), s = 0 | Math.floor(t[0].shape[1] * r + 1), l = 1 + n + 1, c = 1 + a + 1, u = i(new Float32Array(l * c), [l, c]), f = [1 / e, 0, 0, 0, 1 / r, 0, 0, 0, 1], h = 0; h < t.length; ++h ) { this.surface.padField(u, t[h]); var p = i(new Float32Array(o * s), [o, s]); T(p, u, f), (t[h] = p); } }), (p.setContourLevels = function () { var t, e, r, n = [[], [], []], i = [!1, !1, !1], a = !1; for (t = 0; t < 3; ++t) if ( this.showContour[t] && ((a = !0), this.contourSize[t] > 0 && null !== this.contourStart[t] && null !== this.contourEnd[t] && this.contourEnd[t] > this.contourStart[t]) ) for ( i[t] = !0, e = this.contourStart[t]; e < this.contourEnd[t]; e += this.contourSize[t] ) (r = e * this.scene.dataScale[t]), k(n[t], r); if (a) { var o = [[], [], []]; for (t = 0; t < 3; ++t) this.showContour[t] && (o[t] = i[t] ? n[t] : this.scene.contourLevels[t]); this.surface.update({ levels: o }); } }), (p.update = function (t) { var e, r, n, a, l = this.scene, h = l.fullSceneLayout, p = this.surface, d = c(t), m = l.dataScale, g = t.z[0].length, v = t._ylength, y = l.contourLevels; this.data = t; var x = []; for (e = 0; e < 3; e++) for (x[e] = [], r = 0; r < g; r++) x[e][r] = []; for (r = 0; r < g; r++) for (n = 0; n < v; n++) (x[0][r][n] = this.getXat( r, n, t.xcalendar, h.xaxis, )), (x[1][r][n] = this.getYat( r, n, t.ycalendar, h.yaxis, )), (x[2][r][n] = this.getZat( r, n, t.zcalendar, h.zaxis, )); if (t.connectgaps) for ( t._emptypoints = s(x[2]), o(x[2], t._emptypoints), t._interpolatedZ = [], r = 0; r < g; r++ ) for (t._interpolatedZ[r] = [], n = 0; n < v; n++) t._interpolatedZ[r][n] = x[2][r][n]; for (e = 0; e < 3; e++) for (r = 0; r < g; r++) for (n = 0; n < v; n++) null == (a = x[e][r][n]) ? (x[e][r][n] = NaN) : (a = x[e][r][n] *= m[e]); for (e = 0; e < 3; e++) for (r = 0; r < g; r++) for (n = 0; n < v; n++) null != (a = x[e][r][n]) && (this.minValues[e] > a && (this.minValues[e] = a), this.maxValues[e] < a && (this.maxValues[e] = a)); for (e = 0; e < 3; e++) this.objectOffset[e] = 0.5 * (this.minValues[e] + this.maxValues[e]); for (e = 0; e < 3; e++) for (r = 0; r < g; r++) for (n = 0; n < v; n++) null != (a = x[e][r][n]) && (x[e][r][n] -= this.objectOffset[e]); var b = [ i(new Float32Array(g * v), [g, v]), i(new Float32Array(g * v), [g, v]), i(new Float32Array(g * v), [g, v]), ]; for (e = 0; e < 3; e++) for (r = 0; r < g; r++) for (n = 0; n < v; n++) b[e].set(r, n, x[e][r][n]); x = []; var w = { colormap: d, levels: [[], [], []], showContour: [!0, !0, !0], showSurface: !t.hidesurface, contourProject: [ [!1, !1, !1], [!1, !1, !1], [!1, !1, !1], ], contourWidth: [1, 1, 1], contourColor: [ [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], ], contourTint: [1, 1, 1], dynamicColor: [ [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], ], dynamicWidth: [1, 1, 1], dynamicTint: [1, 1, 1], opacityscale: t.opacityscale, opacity: t.opacity, }, T = f(t); if ( ((w.intensityBounds = [T.min, T.max]), t.surfacecolor) ) { var k = i(new Float32Array(g * v), [g, v]); for (r = 0; r < g; r++) for (n = 0; n < v; n++) k.set(r, n, t.surfacecolor[n][r]); b.push(k); } else (w.intensityBounds[0] *= m[2]), (w.intensityBounds[1] *= m[2]); (_ < b[0].shape[0] || _ < b[0].shape[1]) && (this.refineData = !1), !0 === this.refineData && ((this.dataScaleX = this.estimateScale( b[0].shape[0], 0, )), (this.dataScaleY = this.estimateScale( b[0].shape[1], 1, )), (1 === this.dataScaleX && 1 === this.dataScaleY) || this.refineCoords(b)), t.surfacecolor && (w.intensity = b.pop()); var A = [!0, !0, !0], M = ["x", "y", "z"]; for (e = 0; e < 3; ++e) { var S = t.contours[M[e]]; (A[e] = S.highlight), (w.showContour[e] = S.show || S.highlight), w.showContour[e] && ((w.contourProject[e] = [ S.project.x, S.project.y, S.project.z, ]), S.show ? ((this.showContour[e] = !0), (w.levels[e] = y[e]), (p.highlightColor[e] = w.contourColor[e] = u(S.color)), S.usecolormap ? (p.highlightTint[e] = w.contourTint[e] = 0) : (p.highlightTint[e] = w.contourTint[e] = 1), (w.contourWidth[e] = S.width), (this.contourStart[e] = S.start), (this.contourEnd[e] = S.end), (this.contourSize[e] = S.size)) : ((this.showContour[e] = !1), (this.contourStart[e] = null), (this.contourEnd[e] = null), (this.contourSize[e] = 0)), S.highlight && ((w.dynamicColor[e] = u(S.highlightcolor)), (w.dynamicWidth[e] = S.highlightwidth))); } (function (t) { var e = t[0].rgb, r = t[t.length - 1].rgb; return ( e[0] === r[0] && e[1] === r[1] && e[2] === r[2] && e[3] === r[3] ); })(d) && (w.vertexColor = !0), (w.objectOffset = this.objectOffset), (w.coords = b), p.update(w), (p.visible = t.visible), (p.enableDynamic = A), (p.enableHighlight = A), (p.snapToData = !0), "lighting" in t && ((p.ambientLight = t.lighting.ambient), (p.diffuseLight = t.lighting.diffuse), (p.specularLight = t.lighting.specular), (p.roughness = t.lighting.roughness), (p.fresnel = t.lighting.fresnel)), "lightposition" in t && (p.lightPosition = [ t.lightposition.x, t.lightposition.y, t.lightposition.z, ]); }), (p.dispose = function () { this.scene.glplot.remove(this.surface), this.surface.dispose(); }), (e.exports = function (t, e) { var r = t.glplot.gl, i = n({ gl: r }), a = new h(t, i, e.uid); return (i._trace = a), a.update(e), t.glplot.add(i), a; }); }, { "../../../stackgl_modules": 1133, "../../components/colorscale": 379, "../../lib": 515, "../../lib/gl_format_color": 511, "../../lib/str2rgbarray": 540, "../heatmap/find_empties": 807, "../heatmap/interp2d": 810, }, ], 1073: [ function (t, e, r) { "use strict"; var n = t("../../registry"), i = t("../../lib"), a = t("../../components/colorscale/defaults"), o = t("./attributes"); function s(t, e, r, n) { var i = n("opacityscale"); "max" === i ? (e.opacityscale = [ [0, 0.1], [1, 1], ]) : "min" === i ? (e.opacityscale = [ [0, 1], [1, 0.1], ]) : "extremes" === i ? (e.opacityscale = (function (t, e) { for (var r = [], n = 0; n < 32; n++) { var i = n / 31, a = e + (1 - e) * (1 - Math.pow(Math.sin(t * i * Math.PI), 2)); r.push([i, Math.max(0, Math.min(1, a))]); } return r; })(1, 0.1)) : (function (t) { var e = 0; if (!Array.isArray(t) || t.length < 2) return !1; if (!t[0] || !t[t.length - 1]) return !1; if (0 != +t[0][0] || 1 != +t[t.length - 1][0]) return !1; for (var r = 0; r < t.length; r++) { var n = t[r]; if (2 !== n.length || +n[0] < e) return !1; e = +n[0]; } return !0; })(i) || (e.opacityscale = void 0); } function l(t, e, r) { e in t && !(r in t) && (t[r] = t[e]); } e.exports = { supplyDefaults: function (t, e, r, c) { var u, f; function h(r, n) { return i.coerce(t, e, o, r, n); } var p = h("x"), d = h("y"), m = h("z"); if ( !m || !m.length || (p && p.length < 1) || (d && d.length < 1) ) e.visible = !1; else { (e._xlength = Array.isArray(p) && i.isArrayOrTypedArray(p[0]) ? m.length : m[0].length), (e._ylength = m.length), n.getComponentMethod( "calendars", "handleTraceDefaults", )(t, e, ["x", "y", "z"], c), h("text"), h("hovertext"), h("hovertemplate"), h("xhoverformat"), h("yhoverformat"), h("zhoverformat"), [ "lighting.ambient", "lighting.diffuse", "lighting.specular", "lighting.roughness", "lighting.fresnel", "lightposition.x", "lightposition.y", "lightposition.z", "hidesurface", "connectgaps", "opacity", ].forEach(function (t) { h(t); }); var g = h("surfacecolor"), v = ["x", "y", "z"]; for (u = 0; u < 3; ++u) { var y = "contours." + v[u], x = h(y + ".show"), b = h(y + ".highlight"); if (x || b) for (f = 0; f < 3; ++f) h(y + ".project." + v[f]); x && (h(y + ".color"), h(y + ".width"), h(y + ".usecolormap")), b && (h(y + ".highlightcolor"), h(y + ".highlightwidth")), h(y + ".start"), h(y + ".end"), h(y + ".size"); } g || (l(t, "zmin", "cmin"), l(t, "zmax", "cmax"), l(t, "zauto", "cauto")), a(t, e, c, h, { prefix: "", cLetter: "c" }), s(t, e, c, h), (e._length = null); } }, opacityscaleDefaults: s, }; }, { "../../components/colorscale/defaults": 377, "../../lib": 515, "../../registry": 647, "./attributes": 1070, }, ], 1074: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults").supplyDefaults, colorbar: { min: "cmin", max: "cmax" }, calc: t("./calc"), plot: t("./convert"), moduleType: "trace", name: "surface", basePlotModule: t("../../plots/gl3d"), categories: ["gl3d", "2dMap", "showLegend"], meta: {}, }; }, { "../../plots/gl3d": 607, "./attributes": 1070, "./calc": 1071, "./convert": 1072, "./defaults": 1073, }, ], 1075: [ function (t, e, r) { "use strict"; var n = t("../../components/annotations/attributes"), i = t("../../lib/extend").extendFlat, a = t("../../plot_api/edit_types").overrideAll, o = t("../../plots/font_attributes"), s = t("../../plots/domain").attributes, l = t( "../../plots/cartesian/axis_format_attributes", ).descriptionOnlyNumbers; (e.exports = a( { domain: s({ name: "table", trace: !0 }), columnwidth: { valType: "number", arrayOk: !0, dflt: null, }, columnorder: { valType: "data_array" }, header: { values: { valType: "data_array", dflt: [] }, format: { valType: "data_array", dflt: [], description: l("cell value"), }, prefix: { valType: "string", arrayOk: !0, dflt: null }, suffix: { valType: "string", arrayOk: !0, dflt: null }, height: { valType: "number", dflt: 28 }, align: i({}, n.align, { arrayOk: !0 }), line: { width: { valType: "number", arrayOk: !0, dflt: 1 }, color: { valType: "color", arrayOk: !0, dflt: "grey", }, }, fill: { color: { valType: "color", arrayOk: !0, dflt: "white", }, }, font: i({}, o({ arrayOk: !0 })), }, cells: { values: { valType: "data_array", dflt: [] }, format: { valType: "data_array", dflt: [], description: l("cell value"), }, prefix: { valType: "string", arrayOk: !0, dflt: null }, suffix: { valType: "string", arrayOk: !0, dflt: null }, height: { valType: "number", dflt: 20 }, align: i({}, n.align, { arrayOk: !0 }), line: { width: { valType: "number", arrayOk: !0, dflt: 1 }, color: { valType: "color", arrayOk: !0, dflt: "grey", }, }, fill: { color: { valType: "color", arrayOk: !0, dflt: "white", }, }, font: i({}, o({ arrayOk: !0 })), }, }, "calc", "from-root", )).transforms = void 0; }, { "../../components/annotations/attributes": 350, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/domain": 593, "../../plots/font_attributes": 594, }, ], 1076: [ function (t, e, r) { "use strict"; var n = t("../../plots/get_data").getModuleCalcData, i = t("./plot"); (r.name = "table"), (r.plot = function (t) { var e = n(t.calcdata, "table")[0]; e.length && i(t, e); }), (r.clean = function (t, e, r, n) { var i = n._has && n._has("table"), a = e._has && e._has("table"); i && !a && n._paperdiv.selectAll(".table").remove(); }); }, { "../../plots/get_data": 602, "./plot": 1083 }, ], 1077: [ function (t, e, r) { "use strict"; var n = t("../../lib/gup").wrap; e.exports = function () { return n({}); }; }, { "../../lib/gup": 512 }, ], 1078: [ function (t, e, r) { "use strict"; e.exports = { cellPad: 8, columnExtentOffset: 10, columnTitleOffset: 28, emptyHeaderHeight: 16, latexCheck: /^\$.*\$$/, goldenRatio: 1.618, lineBreaker: "
", maxDimensionCount: 60, overdrag: 45, releaseTransitionDuration: 120, releaseTransitionEase: "cubic-out", scrollbarCaptureWidth: 18, scrollbarHideDelay: 1e3, scrollbarHideDuration: 1e3, scrollbarOffset: 5, scrollbarWidth: 8, transitionDuration: 100, transitionEase: "cubic-out", uplift: 5, wrapSpacer: " ", wrapSplitCharacter: " ", cn: { table: "table", tableControlView: "table-control-view", scrollBackground: "scroll-background", yColumn: "y-column", columnBlock: "column-block", scrollAreaClip: "scroll-area-clip", scrollAreaClipRect: "scroll-area-clip-rect", columnBoundary: "column-boundary", columnBoundaryClippath: "column-boundary-clippath", columnBoundaryRect: "column-boundary-rect", columnCells: "column-cells", columnCell: "column-cell", cellRect: "cell-rect", cellText: "cell-text", cellTextHolder: "cell-text-holder", scrollbarKit: "scrollbar-kit", scrollbar: "scrollbar", scrollbarSlider: "scrollbar-slider", scrollbarGlyph: "scrollbar-glyph", scrollbarCaptureZone: "scrollbar-capture-zone", }, }; }, {}, ], 1079: [ function (t, e, r) { "use strict"; var n = t("./constants"), i = t("../../lib/extend").extendFlat, a = t("fast-isnumeric"); function o(t) { if (Array.isArray(t)) { for (var e = 0, r = 0; r < t.length; r++) e = Math.max(e, o(t[r])); return e; } return t; } function s(t, e) { return t + e; } function l(t) { var e, r = t.slice(), n = 1 / 0, i = 0; for (e = 0; e < r.length; e++) Array.isArray(r[e]) || (r[e] = [r[e]]), (n = Math.min(n, r[e].length)), (i = Math.max(i, r[e].length)); if (n !== i) for (e = 0; e < r.length; e++) { var a = i - r[e].length; a && (r[e] = r[e].concat(c(a))); } return r; } function c(t) { for (var e = new Array(t), r = 0; r < t; r++) e[r] = ""; return e; } function u(t) { return t.calcdata.columns.reduce(function (e, r) { return r.xIndex < t.xIndex ? e + r.columnWidth : e; }, 0); } function f(t, e) { return Object.keys(t).map(function (r) { return i({}, t[r], { auxiliaryBlocks: e }); }); } function h(t, e) { for ( var r, n = {}, i = 0, a = 0, o = { firstRowIndex: null, lastRowIndex: null, rows: [], }, s = 0, l = 0, c = 0; c < t.length; c++ ) (r = t[c]), o.rows.push({ rowIndex: c, rowHeight: r }), ((a += r) >= e || c === t.length - 1) && ((n[i] = o), (o.key = l++), (o.firstRowIndex = s), (o.lastRowIndex = c), (o = { firstRowIndex: null, lastRowIndex: null, rows: [], }), (i += a), (s = c + 1), (a = 0)); return n; } e.exports = function (t, e) { var r = l(e.cells.values), p = function (t) { return t.slice(e.header.values.length, t.length); }, d = l(e.header.values); d.length && !d[0].length && ((d[0] = [""]), (d = l(d))); var m = d.concat( p(r).map(function () { return c((d[0] || [""]).length); }), ), g = e.domain, v = Math.floor(t._fullLayout._size.w * (g.x[1] - g.x[0])), y = Math.floor(t._fullLayout._size.h * (g.y[1] - g.y[0])), x = e.header.values.length ? m[0].map(function () { return e.header.height; }) : [n.emptyHeaderHeight], b = r.length ? r[0].map(function () { return e.cells.height; }) : [], _ = x.reduce(s, 0), w = h(b, y - _ + n.uplift), T = f(h(x, _), []), k = f(w, T), A = {}, M = e._fullInput.columnorder.concat( p( r.map(function (t, e) { return e; }), ), ), S = m.map(function (t, r) { var n = Array.isArray(e.columnwidth) ? e.columnwidth[Math.min(r, e.columnwidth.length - 1)] : e.columnwidth; return a(n) ? Number(n) : 1; }), E = S.reduce(s, 0); S = S.map(function (t) { return (t / E) * v; }); var L = Math.max( o(e.header.line.width), o(e.cells.line.width), ), C = { key: e.uid + t._context.staticPlot, translateX: g.x[0] * t._fullLayout._size.w, translateY: t._fullLayout._size.h * (1 - g.y[1]), size: t._fullLayout._size, width: v, maxLineWidth: L, height: y, columnOrder: M, groupHeight: y, rowBlocks: k, headerRowBlocks: T, scrollY: 0, cells: i({}, e.cells, { values: r }), headerCells: i({}, e.header, { values: m }), gdColumns: m.map(function (t) { return t[0]; }), gdColumnsOriginalOrder: m.map(function (t) { return t[0]; }), prevPages: [0, 0], scrollbarState: { scrollbarScrollInProgress: !1 }, columns: m.map(function (t, e) { var r = A[t]; return ( (A[t] = (r || 0) + 1), { key: t + "__" + A[t], label: t, specIndex: e, xIndex: M[e], xScale: u, x: void 0, calcdata: void 0, columnWidth: S[e], } ); }), }; return ( C.columns.forEach(function (t) { (t.calcdata = C), (t.x = u(t)); }), C ); }; }, { "../../lib/extend": 505, "./constants": 1078, "fast-isnumeric": 190, }, ], 1080: [ function (t, e, r) { "use strict"; var n = t("../../lib/extend").extendFlat; (r.splitToPanels = function (t) { var e = [0, 0], r = n({}, t, { key: "header", type: "header", page: 0, prevPages: e, currentRepaint: [null, null], dragHandle: !0, values: t.calcdata.headerCells.values[t.specIndex], rowBlocks: t.calcdata.headerRowBlocks, calcdata: n({}, t.calcdata, { cells: t.calcdata.headerCells, }), }); return [ n({}, t, { key: "cells1", type: "cells", page: 0, prevPages: e, currentRepaint: [null, null], dragHandle: !1, values: t.calcdata.cells.values[t.specIndex], rowBlocks: t.calcdata.rowBlocks, }), n({}, t, { key: "cells2", type: "cells", page: 1, prevPages: e, currentRepaint: [null, null], dragHandle: !1, values: t.calcdata.cells.values[t.specIndex], rowBlocks: t.calcdata.rowBlocks, }), r, ]; }), (r.splitToCells = function (t) { var e = (function (t) { var e = t.rowBlocks[t.page], r = e ? e.rows[0].rowIndex : 0, n = e ? r + e.rows.length : 0; return [r, n]; })(t); return (t.values || []) .slice(e[0], e[1]) .map(function (r, n) { return { keyWithinBlock: n + ("string" == typeof r && r.match(/[<$&> ]/) ? "_keybuster_" + Math.random() : ""), key: e[0] + n, column: t, calcdata: t.calcdata, page: t.page, rowBlocks: t.rowBlocks, value: r, }; }); }); }, { "../../lib/extend": 505 }, ], 1081: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("../../plots/domain").defaults; e.exports = function (t, e, r, o) { function s(r, a) { return n.coerce(t, e, i, r, a); } a(e, o, s), s("columnwidth"), s("header.values"), s("header.format"), s("header.align"), s("header.prefix"), s("header.suffix"), s("header.height"), s("header.line.width"), s("header.line.color"), s("header.fill.color"), n.coerceFont(s, "header.font", n.extendFlat({}, o.font)), (function (t, e) { for ( var r = t.columnorder || [], n = t.header.values.length, i = r.slice(0, n), a = i.slice().sort(function (t, e) { return t - e; }), o = i.map(function (t) { return a.indexOf(t); }), s = o.length; s < n; s++ ) o.push(s); e("columnorder", o); })(e, s), s("cells.values"), s("cells.format"), s("cells.align"), s("cells.prefix"), s("cells.suffix"), s("cells.height"), s("cells.line.width"), s("cells.line.color"), s("cells.fill.color"), n.coerceFont(s, "cells.font", n.extendFlat({}, o.font)), (e._length = null); }; }, { "../../lib": 515, "../../plots/domain": 593, "./attributes": 1075, }, ], 1082: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("./calc"), plot: t("./plot"), moduleType: "trace", name: "table", basePlotModule: t("./base_plot"), categories: ["noOpacity"], meta: {}, }; }, { "./attributes": 1075, "./base_plot": 1076, "./calc": 1077, "./defaults": 1081, "./plot": 1083, }, ], 1083: [ function (t, e, r) { "use strict"; var n = t("./constants"), i = t("@plotly/d3"), a = t("../../lib").numberFormat, o = t("../../lib/gup"), s = t("../../components/drawing"), l = t("../../lib/svg_text_utils"), c = t("../../lib").raiseToTop, u = t("../../lib").strTranslate, f = t("../../lib").cancelTransition, h = t("./data_preparation_helper"), p = t("./data_split_helpers"), d = t("../../components/color"); function m(t) { return Math.ceil(t.calcdata.maxLineWidth / 2); } function g(t, e) { return ( "clip" + t._fullLayout._uid + "_scrollAreaBottomClip_" + e.key ); } function v(t, e) { return ( "clip" + t._fullLayout._uid + "_columnBoundaryClippath_" + e.calcdata.key + "_" + e.specIndex ); } function y(t) { return [].concat .apply( [], t.map(function (t) { return t; }), ) .map(function (t) { return t.__data__; }); } function x(t, e, r) { var a = t .selectAll("." + n.cn.scrollbarKit) .data(o.repeat, o.keyFun); a .enter() .append("g") .classed(n.cn.scrollbarKit, !0) .style("shape-rendering", "geometricPrecision"), a .each(function (t) { var e = t.scrollbarState; (e.totalHeight = (function (t) { var e = t.rowBlocks; return ( D(e, e.length - 1) + (e.length ? R(e[e.length - 1], 1 / 0) : 1) ); })(t)), (e.scrollableAreaHeight = t.groupHeight - S(t)), (e.currentlyVisibleHeight = Math.min( e.totalHeight, e.scrollableAreaHeight, )), (e.ratio = e.currentlyVisibleHeight / e.totalHeight), (e.barLength = Math.max( e.ratio * e.currentlyVisibleHeight, n.goldenRatio * n.scrollbarWidth, )), (e.barWiggleRoom = e.currentlyVisibleHeight - e.barLength), (e.wiggleRoom = Math.max( 0, e.totalHeight - e.scrollableAreaHeight, )), (e.topY = 0 === e.barWiggleRoom ? 0 : (t.scrollY / e.wiggleRoom) * e.barWiggleRoom), (e.bottomY = e.topY + e.barLength), (e.dragMultiplier = e.wiggleRoom / e.barWiggleRoom); }) .attr("transform", function (t) { var e = t.width + n.scrollbarWidth / 2 + n.scrollbarOffset; return u(e, S(t)); }); var s = a .selectAll("." + n.cn.scrollbar) .data(o.repeat, o.keyFun); s.enter().append("g").classed(n.cn.scrollbar, !0); var l = s .selectAll("." + n.cn.scrollbarSlider) .data(o.repeat, o.keyFun); l.enter().append("g").classed(n.cn.scrollbarSlider, !0), l.attr("transform", function (t) { return u(0, t.scrollbarState.topY || 0); }); var c = l .selectAll("." + n.cn.scrollbarGlyph) .data(o.repeat, o.keyFun); c .enter() .append("line") .classed(n.cn.scrollbarGlyph, !0) .attr("stroke", "black") .attr("stroke-width", n.scrollbarWidth) .attr("stroke-linecap", "round") .attr("y1", n.scrollbarWidth / 2), c .attr("y2", function (t) { return ( t.scrollbarState.barLength - n.scrollbarWidth / 2 ); }) .attr("stroke-opacity", function (t) { return t.columnDragInProgress || !t.scrollbarState.barWiggleRoom || r ? 0 : 0.4; }), c.transition().delay(0).duration(0), c .transition() .delay(n.scrollbarHideDelay) .duration(n.scrollbarHideDuration) .attr("stroke-opacity", 0); var f = s .selectAll("." + n.cn.scrollbarCaptureZone) .data(o.repeat, o.keyFun); f .enter() .append("line") .classed(n.cn.scrollbarCaptureZone, !0) .attr("stroke", "white") .attr("stroke-opacity", 0.01) .attr("stroke-width", n.scrollbarCaptureWidth) .attr("stroke-linecap", "butt") .attr("y1", 0) .on("mousedown", function (r) { var n = i.event.y, a = this.getBoundingClientRect(), o = r.scrollbarState, s = n - a.top, l = i.scale .linear() .domain([0, o.scrollableAreaHeight]) .range([0, o.totalHeight]) .clamp(!0); (o.topY <= s && s <= o.bottomY) || L(e, t, null, l(s - o.barLength / 2))(r); }) .call( i.behavior .drag() .origin(function (t) { return ( i.event.stopPropagation(), (t.scrollbarState.scrollbarScrollInProgress = !0), t ); }) .on("drag", L(e, t)) .on("dragend", function () {}), ), f.attr("y2", function (t) { return t.scrollbarState.scrollableAreaHeight; }), e._context.staticPlot && (c.remove(), f.remove()); } function b(t, e, r, a) { var l = (function (t) { var e = t .selectAll("." + n.cn.columnCell) .data(p.splitToCells, function (t) { return t.keyWithinBlock; }); return ( e.enter().append("g").classed(n.cn.columnCell, !0), e.exit().remove(), e ); })( (function (t) { var e = t .selectAll("." + n.cn.columnCells) .data(o.repeat, o.keyFun); return ( e.enter().append("g").classed(n.cn.columnCells, !0), e.exit().remove(), e ); })(r), ); !(function (t) { t.each(function (t, e) { var r = t.calcdata.cells.font, n = t.column.specIndex, i = { size: T(r.size, n, e), color: T(r.color, n, e), family: T(r.family, n, e), }; (t.rowNumber = t.key), (t.align = T(t.calcdata.cells.align, n, e)), (t.cellBorderWidth = T( t.calcdata.cells.line.width, n, e, )), (t.font = i); }); })(l), (function (t) { t.attr("width", function (t) { return t.column.columnWidth; }) .attr("stroke-width", function (t) { return t.cellBorderWidth; }) .each(function (t) { var e = i.select(this); d.stroke( e, T( t.calcdata.cells.line.color, t.column.specIndex, t.rowNumber, ), ), d.fill( e, T( t.calcdata.cells.fill.color, t.column.specIndex, t.rowNumber, ), ); }); })( (function (t) { var e = t .selectAll("." + n.cn.cellRect) .data(o.repeat, function (t) { return t.keyWithinBlock; }); return ( e.enter().append("rect").classed(n.cn.cellRect, !0), e ); })(l), ); var c = (function (t) { var e = t .selectAll("." + n.cn.cellText) .data(o.repeat, function (t) { return t.keyWithinBlock; }); return ( e .enter() .append("text") .classed(n.cn.cellText, !0) .style("cursor", function () { return "auto"; }) .on("mousedown", function () { i.event.stopPropagation(); }), e ); })( (function (t) { var e = t .selectAll("." + n.cn.cellTextHolder) .data(o.repeat, function (t) { return t.keyWithinBlock; }); return ( e .enter() .append("g") .classed(n.cn.cellTextHolder, !0) .style("shape-rendering", "geometricPrecision"), e ); })(l), ); !(function (t) { t.each(function (t) { s.font(i.select(this), t.font); }); })(c), _(c, e, a, t), z(l); } function _(t, e, r, o) { t.text(function (t) { var e = t.column.specIndex, r = t.rowNumber, i = t.value, o = "string" == typeof i, s = o && i.match(/
/i), l = !o || s; t.mayHaveMarkup = o && i.match(/[<&>]/); var c, u = "string" == typeof (c = i) && c.match(n.latexCheck); t.latex = u; var f, h, p = u ? "" : T(t.calcdata.cells.prefix, e, r) || "", d = u ? "" : T(t.calcdata.cells.suffix, e, r) || "", m = u ? null : T(t.calcdata.cells.format, e, r) || null, g = p + (m ? a(m)(t.value) : t.value) + d; if ( ((t.wrappingNeeded = !t.wrapped && !l && !u && (f = w(g))), (t.cellHeightMayIncrease = s || u || t.mayHaveMarkup || (void 0 === f ? w(g) : f)), (t.needsConvertToTspans = t.mayHaveMarkup || t.wrappingNeeded || t.latex), t.wrappingNeeded) ) { var v = ( " " === n.wrapSplitCharacter ? g.replace(/ i && n.push(a), (i += l); } return n; })(i, l, s); 1 === c.length && (c[0] === i.length - 1 ? c.unshift(c[0] - 1) : c.push(c[0] + 1)), c[0] % 2 && c.reverse(), e.each(function (t, e) { (t.page = c[e]), (t.scrollY = l); }), e.attr("transform", function (t) { var e = D(t.rowBlocks, t.page) - t.scrollY; return u(0, e); }), t && (C(t, r, e, c, n.prevPages, n, 0), C(t, r, e, c, n.prevPages, n, 1), x(r, t)); } } function L(t, e, r, a) { return function (o) { var s = o.calcdata ? o.calcdata : o, l = e.filter(function (t) { return s.key === t.key; }), c = r || s.scrollbarState.dragMultiplier, u = s.scrollY; s.scrollY = void 0 === a ? s.scrollY + c * i.event.dy : a; var f = l .selectAll("." + n.cn.yColumn) .selectAll("." + n.cn.columnBlock) .filter(A); return E(t, f, l), s.scrollY === u; }; } function C(t, e, r, n, i, a, o) { n[o] !== i[o] && (clearTimeout(a.currentRepaint[o]), (a.currentRepaint[o] = setTimeout(function () { var a = r.filter(function (t, e) { return e === o && n[e] !== i[e]; }); b(t, e, a, r), (i[o] = n[o]); }))); } function P(t, e, r, a) { return function () { var o = i.select(e.parentNode); o.each(function (t) { var e = t.fragments; o.selectAll("tspan.line").each(function (t, r) { e[r].width = this.getComputedTextLength(); }); var r, i, a = e[e.length - 1].width, s = e.slice(0, -1), l = [], c = 0, u = t.column.columnWidth - 2 * n.cellPad; for (t.value = ""; s.length; ) c + (i = (r = s.shift()).width + a) > u && ((t.value += l.join(n.wrapSpacer) + n.lineBreaker), (l = []), (c = 0)), l.push(r.text), (c += i); c && (t.value += l.join(n.wrapSpacer)), (t.wrapped = !0); }), o.selectAll("tspan.line").remove(), _(o.select("." + n.cn.cellText), r, t, a), i.select(e.parentNode.parentNode).call(z); }; } function I(t, e, r, a, o) { return function () { if (!o.settledY) { var s = i.select(e.parentNode), l = B(o), c = o.key - l.firstRowIndex, f = l.rows[c].rowHeight, h = o.cellHeightMayIncrease ? e.parentNode.getBoundingClientRect().height + 2 * n.cellPad : f, p = Math.max(h, f); p - l.rows[c].rowHeight && ((l.rows[c].rowHeight = p), t.selectAll("." + n.cn.columnCell).call(z), E(null, t.filter(A), 0), x(r, a, !0)), s.attr("transform", function () { var t = this.parentNode.getBoundingClientRect(), e = i .select(this.parentNode) .select("." + n.cn.cellRect) .node() .getBoundingClientRect(), r = this.transform.baseVal.consolidate(), a = e.top - t.top + (r ? r.matrix.f : n.cellPad); return u( O( o, i .select(this.parentNode) .select("." + n.cn.cellTextHolder) .node() .getBoundingClientRect().width, ), a, ); }), (o.settledY = !0); } }; } function O(t, e) { switch (t.align) { case "left": return n.cellPad; case "right": return t.column.columnWidth - (e || 0) - n.cellPad; case "center": return (t.column.columnWidth - (e || 0)) / 2; default: return n.cellPad; } } function z(t) { t.attr("transform", function (t) { var e = t.rowBlocks[0].auxiliaryBlocks.reduce(function ( t, e, ) { return t + R(e, 1 / 0); }, 0), r = R(B(t), t.key); return u(0, r + e); }) .selectAll("." + n.cn.cellRect) .attr("height", function (t) { return ((e = B(t)), (r = t.key), e.rows[r - e.firstRowIndex]).rowHeight; var e, r; }); } function D(t, e) { for (var r = 0, n = e - 1; n >= 0; n--) r += F(t[n]); return r; } function R(t, e) { for ( var r = 0, n = 0; n < t.rows.length && t.rows[n].rowIndex < e; n++ ) r += t.rows[n].rowHeight; return r; } function F(t) { var e = t.allRowsHeight; if (void 0 !== e) return e; for (var r = 0, n = 0; n < t.rows.length; n++) r += t.rows[n].rowHeight; return (t.allRowsHeight = r), r; } function B(t) { return t.rowBlocks[t.page]; } e.exports = function (t, e) { var r = !t._context.staticPlot, a = t._fullLayout._paper.selectAll("." + n.cn.table).data( e.map(function (e) { var r = o.unwrap(e).trace; return h(t, r); }), o.keyFun, ); a.exit().remove(), a .enter() .append("g") .classed(n.cn.table, !0) .attr("overflow", "visible") .style("box-sizing", "content-box") .style("position", "absolute") .style("left", 0) .style("overflow", "visible") .style("shape-rendering", "crispEdges") .style("pointer-events", "all"), a .attr("width", function (t) { return t.width + t.size.l + t.size.r; }) .attr("height", function (t) { return t.height + t.size.t + t.size.b; }) .attr("transform", function (t) { return u(t.translateX, t.translateY); }); var l = a .selectAll("." + n.cn.tableControlView) .data(o.repeat, o.keyFun), d = l .enter() .append("g") .classed(n.cn.tableControlView, !0) .style("box-sizing", "content-box"); if (r) { var _ = "onwheel" in document ? "wheel" : "mousewheel"; d.on("mousemove", function (e) { l.filter(function (t) { return e === t; }).call(x, t); }) .on(_, function (e) { if (!e.scrollbarState.wheeling) { e.scrollbarState.wheeling = !0; var r = e.scrollY + i.event.deltaY; L(t, l, null, r)(e) || (i.event.stopPropagation(), i.event.preventDefault()), (e.scrollbarState.wheeling = !1); } }) .call(x, t, !0); } l.attr("transform", function (t) { return u(t.size.l, t.size.t); }); var w = l .selectAll("." + n.cn.scrollBackground) .data(o.repeat, o.keyFun); w .enter() .append("rect") .classed(n.cn.scrollBackground, !0) .attr("fill", "none"), w .attr("width", function (t) { return t.width; }) .attr("height", function (t) { return t.height; }), l.each(function (e) { s.setClipUrl(i.select(this), g(t, e), t); }); var T = l.selectAll("." + n.cn.yColumn).data(function (t) { return t.columns; }, o.keyFun); T.enter().append("g").classed(n.cn.yColumn, !0), T.exit().remove(), T.attr("transform", function (t) { return u(t.x, 0); }), r && T.call( i.behavior .drag() .origin(function (e) { return ( k(i.select(this), e, -n.uplift), c(this), (e.calcdata.columnDragInProgress = !0), x( l.filter(function (t) { return e.calcdata.key === t.key; }), t, ), e ); }) .on("drag", function (t) { var e = i.select(this), r = function (e) { return ( (t === e ? i.event.x : e.x) + e.columnWidth / 2 ); }; (t.x = Math.max( -n.overdrag, Math.min( t.calcdata.width + n.overdrag - t.columnWidth, i.event.x, ), )), y(T) .filter(function (e) { return e.calcdata.key === t.calcdata.key; }) .sort(function (t, e) { return r(t) - r(e); }) .forEach(function (e, r) { (e.xIndex = r), (e.x = t === e ? e.x : e.xScale(e)); }), T.filter(function (e) { return t !== e; }) .transition() .ease(n.transitionEase) .duration(n.transitionDuration) .attr("transform", function (t) { return u(t.x, 0); }), e.call(f).attr("transform", u(t.x, -n.uplift)); }) .on("dragend", function (e) { var r = i.select(this), n = e.calcdata; (e.x = e.xScale(e)), (e.calcdata.columnDragInProgress = !1), k(r, e, 0), (function (t, e, r) { var n = e.gdColumnsOriginalOrder; e.gdColumns.sort(function (t, e) { return r[n.indexOf(t)] - r[n.indexOf(e)]; }), (e.columnorder = r), t.emit("plotly_restyle"); })( t, n, n.columns.map(function (t) { return t.xIndex; }), ); }), ), T.each(function (e) { s.setClipUrl(i.select(this), v(t, e), t); }); var S = T.selectAll("." + n.cn.columnBlock).data( p.splitToPanels, o.keyFun, ); S.enter() .append("g") .classed(n.cn.columnBlock, !0) .attr("id", function (t) { return t.key; }), S.style("cursor", function (t) { return t.dragHandle ? "ew-resize" : t.calcdata.scrollbarState.barWiggleRoom ? "ns-resize" : "default"; }); var C = S.filter(M), P = S.filter(A); r && P.call( i.behavior .drag() .origin(function (t) { return i.event.stopPropagation(), t; }) .on("drag", L(t, l, -1)) .on("dragend", function () {}), ), b(t, l, C, S), b(t, l, P, S); var I = l .selectAll("." + n.cn.scrollAreaClip) .data(o.repeat, o.keyFun); I.enter() .append("clipPath") .classed(n.cn.scrollAreaClip, !0) .attr("id", function (e) { return g(t, e); }); var O = I.selectAll("." + n.cn.scrollAreaClipRect).data( o.repeat, o.keyFun, ); O.enter() .append("rect") .classed(n.cn.scrollAreaClipRect, !0) .attr("x", -n.overdrag) .attr("y", -n.uplift) .attr("fill", "none"), O.attr("width", function (t) { return t.width + 2 * n.overdrag; }).attr("height", function (t) { return t.height + n.uplift; }), T.selectAll("." + n.cn.columnBoundary) .data(o.repeat, o.keyFun) .enter() .append("g") .classed(n.cn.columnBoundary, !0); var z = T.selectAll("." + n.cn.columnBoundaryClippath).data( o.repeat, o.keyFun, ); z .enter() .append("clipPath") .classed(n.cn.columnBoundaryClippath, !0), z.attr("id", function (e) { return v(t, e); }); var D = z .selectAll("." + n.cn.columnBoundaryRect) .data(o.repeat, o.keyFun); D.enter() .append("rect") .classed(n.cn.columnBoundaryRect, !0) .attr("fill", "none"), D.attr("width", function (t) { return t.columnWidth + 2 * m(t); }) .attr("height", function (t) { return t.calcdata.height + 2 * m(t) + n.uplift; }) .attr("x", function (t) { return -m(t); }) .attr("y", function (t) { return -m(t); }), E(null, P, l); }; }, { "../../components/color": 367, "../../components/drawing": 389, "../../lib": 515, "../../lib/gup": 512, "../../lib/svg_text_utils": 541, "./constants": 1078, "./data_preparation_helper": 1079, "./data_split_helpers": 1080, "@plotly/d3": 58, }, ], 1084: [ function (t, e, r) { "use strict"; var n = t( "../../plots/template_attributes", ).hovertemplateAttrs, i = t("../../plots/template_attributes").texttemplateAttrs, a = t("../../components/colorscale/attributes"), o = t("../../plots/domain").attributes, s = t("../pie/attributes"), l = t("../sunburst/attributes"), c = t("./constants"), u = t("../../lib/extend").extendFlat; e.exports = { labels: l.labels, parents: l.parents, values: l.values, branchvalues: l.branchvalues, count: l.count, level: l.level, maxdepth: l.maxdepth, tiling: { packing: { valType: "enumerated", values: [ "squarify", "binary", "dice", "slice", "slice-dice", "dice-slice", ], dflt: "squarify", editType: "plot", }, squarifyratio: { valType: "number", min: 1, dflt: 1, editType: "plot", }, flip: { valType: "flaglist", flags: ["x", "y"], dflt: "", editType: "plot", }, pad: { valType: "number", min: 0, dflt: 3, editType: "plot", }, editType: "calc", }, marker: u( { pad: { t: { valType: "number", min: 0, editType: "plot" }, l: { valType: "number", min: 0, editType: "plot" }, r: { valType: "number", min: 0, editType: "plot" }, b: { valType: "number", min: 0, editType: "plot" }, editType: "calc", }, colors: l.marker.colors, depthfade: { valType: "enumerated", values: [!0, !1, "reversed"], editType: "style", }, line: l.marker.line, editType: "calc", }, a("marker", { colorAttr: "colors", anim: !1 }), ), pathbar: { visible: { valType: "boolean", dflt: !0, editType: "plot", }, side: { valType: "enumerated", values: ["top", "bottom"], dflt: "top", editType: "plot", }, edgeshape: { valType: "enumerated", values: [">", "<", "|", "/", "\\"], dflt: ">", editType: "plot", }, thickness: { valType: "number", min: 12, editType: "plot", }, textfont: u({}, s.textfont, {}), editType: "calc", }, text: s.text, textinfo: l.textinfo, texttemplate: i( { editType: "plot" }, { keys: c.eventDataKeys.concat(["label", "value"]) }, ), hovertext: s.hovertext, hoverinfo: l.hoverinfo, hovertemplate: n({}, { keys: c.eventDataKeys }), textfont: s.textfont, insidetextfont: s.insidetextfont, outsidetextfont: u({}, s.outsidetextfont, {}), textposition: { valType: "enumerated", values: [ "top left", "top center", "top right", "middle left", "middle center", "middle right", "bottom left", "bottom center", "bottom right", ], dflt: "top left", editType: "plot", }, sort: s.sort, root: l.root, domain: o({ name: "treemap", trace: !0, editType: "calc" }), }; }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plots/domain": 593, "../../plots/template_attributes": 642, "../pie/attributes": 910, "../sunburst/attributes": 1058, "./constants": 1087, }, ], 1085: [ function (t, e, r) { "use strict"; var n = t("../../plots/plots"); (r.name = "treemap"), (r.plot = function (t, e, i, a) { n.plotBasePlot(r.name, t, e, i, a); }), (r.clean = function (t, e, i, a) { n.cleanBasePlot(r.name, t, e, i, a); }); }, { "../../plots/plots": 628 }, ], 1086: [ function (t, e, r) { "use strict"; var n = t("../sunburst/calc"); (r.calc = function (t, e) { return n.calc(t, e); }), (r.crossTraceCalc = function (t) { return n._runCrossTraceCalc("treemap", t); }); }, { "../sunburst/calc": 1060 }, ], 1087: [ function (t, e, r) { "use strict"; e.exports = { CLICK_TRANSITION_TIME: 750, CLICK_TRANSITION_EASING: "poly", eventDataKeys: [ "currentPath", "root", "entry", "percentRoot", "percentEntry", "percentParent", ], gapWithPathbar: 1, }; }, {}, ], 1088: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("../../components/color"), o = t("../../plots/domain").defaults, s = t("../bar/defaults").handleText, l = t("../bar/constants").TEXTPAD, c = t("../../components/colorscale"), u = c.hasColorscale, f = c.handleDefaults; e.exports = function (t, e, r, c) { function h(r, a) { return n.coerce(t, e, i, r, a); } var p = h("labels"), d = h("parents"); if (p && p.length && d && d.length) { var m = h("values"); m && m.length ? h("branchvalues") : h("count"), h("level"), h("maxdepth"), "squarify" === h("tiling.packing") && h("tiling.squarifyratio"), h("tiling.flip"), h("tiling.pad"); var g = h("text"); h("texttemplate"), e.texttemplate || h( "textinfo", Array.isArray(g) ? "text+label" : "label", ), h("hovertext"), h("hovertemplate"); var v = h("pathbar.visible"); s(t, e, c, h, "auto", { hasPathbar: v, moduleHasSelected: !1, moduleHasUnselected: !1, moduleHasConstrain: !1, moduleHasCliponaxis: !1, moduleHasTextangle: !1, moduleHasInsideanchor: !1, }), h("textposition"); var y = -1 !== e.textposition.indexOf("bottom"); h("marker.line.width") && h("marker.line.color", c.paper_bgcolor); var x = h("marker.colors"); (e._hasColorscale = u(t, "marker", "colors") || (t.marker || {}).coloraxis) ? f(t, e, c, h, { prefix: "marker.", cLetter: "c" }) : h("marker.depthfade", !(x || []).length); var b = 2 * e.textfont.size; h("marker.pad.t", y ? b / 4 : b), h("marker.pad.l", b / 4), h("marker.pad.r", b / 4), h("marker.pad.b", y ? b : b / 4), (e._hovered = { marker: { line: { width: 2, color: a.contrast(c.paper_bgcolor), }, }, }), v && (h( "pathbar.thickness", e.pathbar.textfont.size + 2 * l, ), h("pathbar.side"), h("pathbar.edgeshape")), h("sort"), h("root.color"), o(e, c, h), (e._length = null); } else e.visible = !1; }; }, { "../../components/color": 367, "../../components/colorscale": 379, "../../lib": 515, "../../plots/domain": 593, "../bar/constants": 659, "../bar/defaults": 661, "./attributes": 1084, }, ], 1089: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../sunburst/helpers"), a = t("../bar/uniform_text").clearMinTextSize, o = t("../bar/style").resizeText, s = t("./plot_one"); e.exports = function (t, e, r, l, c) { var u, f, h = c.type, p = c.drawDescendants, d = t._fullLayout, m = d["_" + h + "layer"], g = !r; (a(h, d), (u = m.selectAll("g.trace." + h).data(e, function (t) { return t[0].trace.uid; })) .enter() .append("g") .classed("trace", !0) .classed(h, !0), u.order(), !d.uniformtext.mode && i.hasTransition(r)) ? (l && (f = l()), n .transition() .duration(r.duration) .ease(r.easing) .each("end", function () { f && f(); }) .each("interrupt", function () { f && f(); }) .each(function () { m.selectAll("g.trace").each(function (e) { s(t, e, this, r, p); }); })) : (u.each(function (e) { s(t, e, this, r, p); }), d.uniformtext.mode && o(t, m.selectAll(".trace"), h)); g && u.exit().remove(); }; }, { "../bar/style": 671, "../bar/uniform_text": 673, "../sunburst/helpers": 1064, "./plot_one": 1098, "@plotly/d3": 58, }, ], 1090: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../components/drawing"), o = t("../../lib/svg_text_utils"), s = t("./partition"), l = t("./style").styleOne, c = t("./constants"), u = t("../sunburst/helpers"), f = t("../sunburst/fx"); e.exports = function (t, e, r, h, p) { var d = p.barDifY, m = p.width, g = p.height, v = p.viewX, y = p.viewY, x = p.pathSlice, b = p.toMoveInsideSlice, _ = p.strTransform, w = p.hasTransition, T = p.handleSlicesExit, k = p.makeUpdateSliceInterpolator, A = p.makeUpdateTextInterpolator, M = {}, S = t._context.staticPlot, E = t._fullLayout, L = e[0], C = L.trace, P = L.hierarchy, I = m / C._entryDepth, O = u.listPath(r.data, "id"), z = s(P.copy(), [m, g], { packing: "dice", pad: { inner: 0, top: 0, left: 0, right: 0, bottom: 0 }, }).descendants(); (z = z.filter(function (t) { var e = O.indexOf(t.data.id); return ( -1 !== e && ((t.x0 = I * e), (t.x1 = I * (e + 1)), (t.y0 = d), (t.y1 = d + g), (t.onPathbar = !0), !0) ); })).reverse(), (h = h.data(z, u.getPtId)) .enter() .append("g") .classed("pathbar", !0), T(h, !0, M, [m, g], x), h.order(); var D = h; w && (D = D.transition().each("end", function () { var e = n.select(this); u.setSliceCursor(e, t, { hideOnRoot: !1, hideOnLeaves: !1, isTransitioning: !1, }); })), D.each(function (s) { (s._x0 = v(s.x0)), (s._x1 = v(s.x1)), (s._y0 = y(s.y0)), (s._y1 = y(s.y1)), (s._hoverX = v(s.x1 - Math.min(m, g) / 2)), (s._hoverY = y(s.y1 - g / 2)); var h = n.select(this), p = i.ensureSingle( h, "path", "surface", function (t) { t.style("pointer-events", S ? "none" : "all"); }, ); w ? p.transition().attrTween("d", function (t) { var e = k(t, !0, M, [m, g]); return function (t) { return x(e(t)); }; }) : p.attr("d", x), h .call(f, r, t, e, { styleOne: l, eventDataKeys: c.eventDataKeys, transitionTime: c.CLICK_TRANSITION_TIME, transitionEasing: c.CLICK_TRANSITION_EASING, }) .call(u.setSliceCursor, t, { hideOnRoot: !1, hideOnLeaves: !1, isTransitioning: t._transitioning, }), p.call(l, s, C, { hovered: !1 }), (s._text = (u.getPtLabel(s) || "").split("
").join(" ") || ""); var d = i.ensureSingle(h, "g", "slicetext"), T = i.ensureSingle(d, "text", "", function (t) { t.attr("data-notex", 1); }), L = i.ensureUniformFontSize( t, u.determineTextFont(C, s, E.font, { onPathbar: !0, }), ); T.text(s._text || " ") .classed("slicetext", !0) .attr("text-anchor", "start") .call(a.font, L) .call(o.convertToTspans, t), (s.textBB = a.bBox(T.node())), (s.transform = b(s, { fontSize: L.size, onPathbar: !0, })), (s.transform.fontSize = L.size), w ? T.transition().attrTween( "transform", function (t) { var e = A(t, !0, M, [m, g]); return function (t) { return _(e(t)); }; }, ) : T.attr("transform", _(s)); }); }; }, { "../../components/drawing": 389, "../../lib": 515, "../../lib/svg_text_utils": 541, "../sunburst/fx": 1063, "../sunburst/helpers": 1064, "./constants": 1087, "./partition": 1096, "./style": 1099, "@plotly/d3": 58, }, ], 1091: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../components/drawing"), o = t("../../lib/svg_text_utils"), s = t("./partition"), l = t("./style").styleOne, c = t("./constants"), u = t("../sunburst/helpers"), f = t("../sunburst/fx"), h = t("../sunburst/plot").formatSliceLabel; e.exports = function (t, e, r, p, d) { var m = d.width, g = d.height, v = d.viewX, y = d.viewY, x = d.pathSlice, b = d.toMoveInsideSlice, _ = d.strTransform, w = d.hasTransition, T = d.handleSlicesExit, k = d.makeUpdateSliceInterpolator, A = d.makeUpdateTextInterpolator, M = d.prevEntry, S = t._context.staticPlot, E = t._fullLayout, L = e[0].trace, C = -1 !== L.textposition.indexOf("left"), P = -1 !== L.textposition.indexOf("right"), I = -1 !== L.textposition.indexOf("bottom"), O = (!I && !L.marker.pad.t) || (I && !L.marker.pad.b), z = s(r, [m, g], { packing: L.tiling.packing, squarifyratio: L.tiling.squarifyratio, flipX: L.tiling.flip.indexOf("x") > -1, flipY: L.tiling.flip.indexOf("y") > -1, pad: { inner: L.tiling.pad, top: L.marker.pad.t, left: L.marker.pad.l, right: L.marker.pad.r, bottom: L.marker.pad.b, }, }).descendants(), D = 1 / 0, R = -1 / 0; z.forEach(function (t) { var e = t.depth; e >= L._maxDepth ? ((t.x0 = t.x1 = (t.x0 + t.x1) / 2), (t.y0 = t.y1 = (t.y0 + t.y1) / 2)) : ((D = Math.min(D, e)), (R = Math.max(R, e))); }), (p = p.data(z, u.getPtId)), (L._maxVisibleLayers = isFinite(R) ? R - D + 1 : 0), p.enter().append("g").classed("slice", !0), T(p, !1, {}, [m, g], x), p.order(); var F = null; if (w && M) { var B = u.getPtId(M); p.each(function (t) { null === F && u.getPtId(t) === B && (F = { x0: t.x0, x1: t.x1, y0: t.y0, y1: t.y1 }); }); } var N = function () { return F || { x0: 0, x1: m, y0: 0, y1: g }; }, j = p; return ( w && (j = j.transition().each("end", function () { var e = n.select(this); u.setSliceCursor(e, t, { hideOnRoot: !0, hideOnLeaves: !1, isTransitioning: !1, }); })), j.each(function (s) { var p = u.isHeader(s, L); (s._x0 = v(s.x0)), (s._x1 = v(s.x1)), (s._y0 = y(s.y0)), (s._y1 = y(s.y1)), (s._hoverX = v(s.x1 - L.marker.pad.r)), (s._hoverY = y( I ? s.y1 - L.marker.pad.b / 2 : s.y0 + L.marker.pad.t / 2, )); var d = n.select(this), T = i.ensureSingle( d, "path", "surface", function (t) { t.style("pointer-events", S ? "none" : "all"); }, ); w ? T.transition().attrTween("d", function (t) { var e = k(t, !1, N(), [m, g]); return function (t) { return x(e(t)); }; }) : T.attr("d", x), d .call(f, r, t, e, { styleOne: l, eventDataKeys: c.eventDataKeys, transitionTime: c.CLICK_TRANSITION_TIME, transitionEasing: c.CLICK_TRANSITION_EASING, }) .call(u.setSliceCursor, t, { isTransitioning: t._transitioning, }), T.call(l, s, L, { hovered: !1 }), s.x0 === s.x1 || s.y0 === s.y1 ? (s._text = "") : (s._text = p ? O ? "" : u.getPtLabel(s) || "" : h(s, r, L, e, E) || ""); var M = i.ensureSingle(d, "g", "slicetext"), z = i.ensureSingle(M, "text", "", function (t) { t.attr("data-notex", 1); }), D = i.ensureUniformFontSize( t, u.determineTextFont(L, s, E.font), ); z .text(s._text || " ") .classed("slicetext", !0) .attr( "text-anchor", P ? "end" : C || p ? "start" : "middle", ) .call(a.font, D) .call(o.convertToTspans, t), (s.textBB = a.bBox(z.node())), (s.transform = b(s, { fontSize: D.size, isHeader: p, })), (s.transform.fontSize = D.size), w ? z .transition() .attrTween("transform", function (t) { var e = A(t, !1, N(), [m, g]); return function (t) { return _(e(t)); }; }) : z.attr("transform", _(s)); }), F ); }; }, { "../../components/drawing": 389, "../../lib": 515, "../../lib/svg_text_utils": 541, "../sunburst/fx": 1063, "../sunburst/helpers": 1064, "../sunburst/plot": 1068, "./constants": 1087, "./partition": 1096, "./style": 1099, "@plotly/d3": 58, }, ], 1092: [ function (t, e, r) { "use strict"; e.exports = function t(e, r, n) { var i; n.swapXY && ((i = e.x0), (e.x0 = e.y0), (e.y0 = i), (i = e.x1), (e.x1 = e.y1), (e.y1 = i)), n.flipX && ((i = e.x0), (e.x0 = r[0] - e.x1), (e.x1 = r[0] - i)), n.flipY && ((i = e.y0), (e.y0 = r[1] - e.y1), (e.y1 = r[1] - i)); var a = e.children; if (a) for (var o = 0; o < a.length; o++) t(a[o], r, n); }; }, {}, ], 1093: [ function (t, e, r) { "use strict"; e.exports = { moduleType: "trace", name: "treemap", basePlotModule: t("./base_plot"), categories: [], animatable: !0, attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyDefaults: t("./defaults"), supplyLayoutDefaults: t("./layout_defaults"), calc: t("./calc").calc, crossTraceCalc: t("./calc").crossTraceCalc, plot: t("./plot"), style: t("./style").style, colorbar: t("../scatter/marker_colorbar"), meta: {}, }; }, { "../scatter/marker_colorbar": 954, "./attributes": 1084, "./base_plot": 1085, "./calc": 1086, "./defaults": 1088, "./layout_attributes": 1094, "./layout_defaults": 1095, "./plot": 1097, "./style": 1099, }, ], 1094: [ function (t, e, r) { "use strict"; e.exports = { treemapcolorway: { valType: "colorlist", editType: "calc" }, extendtreemapcolors: { valType: "boolean", dflt: !0, editType: "calc", }, }; }, {}, ], 1095: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"); e.exports = function (t, e) { function r(r, a) { return n.coerce(t, e, i, r, a); } r("treemapcolorway", e.colorway), r("extendtreemapcolors"); }; }, { "../../lib": 515, "./layout_attributes": 1094 }, ], 1096: [ function (t, e, r) { "use strict"; var n = t("d3-hierarchy"), i = t("./flip_tree"); e.exports = function (t, e, r) { var a, o = r.flipX, s = r.flipY, l = "dice-slice" === r.packing, c = r.pad[s ? "bottom" : "top"], u = r.pad[o ? "right" : "left"], f = r.pad[o ? "left" : "right"], h = r.pad[s ? "top" : "bottom"]; l && ((a = u), (u = c), (c = a), (a = f), (f = h), (h = a)); var p = n .treemap() .tile( (function (t, e) { switch (t) { case "squarify": return n.treemapSquarify.ratio(e); case "binary": return n.treemapBinary; case "dice": return n.treemapDice; case "slice": return n.treemapSlice; default: return n.treemapSliceDice; } })(r.packing, r.squarifyratio), ) .paddingInner(r.pad.inner) .paddingLeft(u) .paddingRight(f) .paddingTop(c) .paddingBottom(h) .size(l ? [e[1], e[0]] : e)(t); return ( (l || o || s) && i(p, e, { swapXY: l, flipX: o, flipY: s }), p ); }; }, { "./flip_tree": 1092, "d3-hierarchy": 115 }, ], 1097: [ function (t, e, r) { "use strict"; var n = t("./draw"), i = t("./draw_descendants"); e.exports = function (t, e, r, a) { return n(t, e, r, a, { type: "treemap", drawDescendants: i, }); }; }, { "./draw": 1089, "./draw_descendants": 1091 }, ], 1098: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("d3-interpolate").interpolate, a = t("../sunburst/helpers"), o = t("../../lib"), s = t("../bar/constants").TEXTPAD, l = t("../bar/plot").toMoveInsideBar, c = t("../bar/uniform_text").recordMinTextSize, u = t("./constants"), f = t("./draw_ancestors"); function h(t) { return a.isHierarchyRoot(t) ? "" : a.getPtId(t); } e.exports = function (t, e, r, p, d) { var m = t._fullLayout, g = e[0], v = g.trace, y = "icicle" === v.type, x = g.hierarchy, b = a.findEntryWithLevel(x, v.level), _ = n.select(r), w = _.selectAll("g.pathbar"), T = _.selectAll("g.slice"); if (!b) return w.remove(), void T.remove(); var k = a.isHierarchyRoot(b), A = !m.uniformtext.mode && a.hasTransition(p), M = a.getMaxDepth(v), S = m._size, E = v.domain, L = S.w * (E.x[1] - E.x[0]), C = S.h * (E.y[1] - E.y[0]), P = L, I = v.pathbar.thickness, O = v.marker.line.width + u.gapWithPathbar, z = v.pathbar.visible ? v.pathbar.side.indexOf("bottom") > -1 ? C + O : -(I + O) : 0, D = { x0: P, x1: P, y0: z, y1: z + I }, R = function (t, e, r) { var n = v.tiling.pad, i = function (t) { return t - n <= e.x0; }, a = function (t) { return t + n >= e.x1; }, o = function (t) { return t - n <= e.y0; }, s = function (t) { return t + n >= e.y1; }; return t.x0 === e.x0 && t.x1 === e.x1 && t.y0 === e.y0 && t.y1 === e.y1 ? { x0: t.x0, x1: t.x1, y0: t.y0, y1: t.y1 } : { x0: i(t.x0 - n) ? 0 : a(t.x0 - n) ? r[0] : t.x0, x1: i(t.x1 + n) ? 0 : a(t.x1 + n) ? r[0] : t.x1, y0: o(t.y0 - n) ? 0 : s(t.y0 - n) ? r[1] : t.y0, y1: o(t.y1 + n) ? 0 : s(t.y1 + n) ? r[1] : t.y1, }; }, F = null, B = {}, N = {}, j = null, U = function (t, e) { return e ? B[h(t)] : N[h(t)]; }, V = function (t, e, r, n) { if (e) return B[h(x)] || D; var i = N[v.level] || r; return (function (t) { return t.data.depth - b.data.depth < M; })(t) ? R(t, i, n) : {}; }; g.hasMultipleRoots && k && M++, (v._maxDepth = M), (v._backgroundColor = m.paper_bgcolor), (v._entryDepth = b.data.depth), (v._atRootLevel = k); var H = -L / 2 + S.l + (S.w * (E.x[1] + E.x[0])) / 2, q = -C / 2 + S.t + S.h * (1 - (E.y[1] + E.y[0]) / 2), G = function (t) { return H + t; }, Y = function (t) { return q + t; }, W = Y(0), Z = G(0), X = function (t) { return Z + t; }, J = function (t) { return W + t; }; function K(t, e) { return t + "," + e; } var Q = X(0), $ = function (t) { t.x = Math.max(Q, t.x); }, tt = v.pathbar.edgeshape, et = function (t, e) { var r = t.x0, n = t.x1, i = t.y0, a = t.y1, o = t.textBB, u = function (t) { return -1 !== v.textposition.indexOf(t); }, f = u("bottom"), h = u("top") || (e.isHeader && !f) ? "start" : f ? "end" : "middle", p = u("right"), d = u("left") || e.onPathbar ? -1 : p ? 1 : 0, g = v[y ? "tiling" : "marker"].pad; if (e.isHeader) { if ( (r += (y ? g : g.l) - s) >= (n -= (y ? g : g.r) - s) ) { var x = (r + n) / 2; (r = x), (n = x); } var b; f ? i < (b = a - (y ? g : g.b)) && b < a && (i = b) : i < (b = i + (y ? g : g.t)) && b < a && (a = b); } var _ = l(r, n, i, a, o, { isHorizontal: !1, constrained: !0, angle: 0, anchor: h, leftToRight: d, }); return ( (_.fontSize = e.fontSize), (_.targetX = G(_.targetX)), (_.targetY = Y(_.targetY)), isNaN(_.targetX) || isNaN(_.targetY) ? {} : (r !== n && i !== a && c(v.type, _, m), { scale: _.scale, rotate: _.rotate, textX: _.textX, textY: _.textY, anchorX: _.anchorX, anchorY: _.anchorY, targetX: _.targetX, targetY: _.targetY, }) ); }, rt = function (t, e) { for (var r, n = 0, i = t; !r && n < M; ) n++, (i = i.parent) ? (r = U(i, e)) : (n = M); return r || {}; }, nt = function (t, e, r, n, a) { var s, l = U(t, e); if (l) s = l; else if (e) s = D; else if (F) if (t.parent) { var c = j || r; c && !e ? (s = R(t, c, n)) : ((s = {}), o.extendFlat(s, rt(t, e))); } else (s = o.extendFlat({}, t)), y && ("h" === a.orientation ? a.flipX ? (s.x0 = t.x1) : (s.x1 = 0) : a.flipY ? (s.y0 = t.y1) : (s.y1 = 0)); else s = {}; return i(s, { x0: t.x0, x1: t.x1, y0: t.y0, y1: t.y1 }); }, it = function (t, e, r, n) { var s = U(t, e), l = {}, u = V(t, e, r, n); o.extendFlat(l, { transform: et( { x0: u.x0, x1: u.x1, y0: u.y0, y1: u.y1, textBB: t.textBB, _text: t._text, }, { isHeader: a.isHeader(t, v) }, ), }), s ? (l = s) : t.parent && o.extendFlat(l, rt(t, e)); var f = t.transform; return ( t.x0 !== t.x1 && t.y0 !== t.y1 && c(v.type, f, m), i(l, { transform: { scale: f.scale, rotate: f.rotate, textX: f.textX, textY: f.textY, anchorX: f.anchorX, anchorY: f.anchorY, targetX: f.targetX, targetY: f.targetY, }, }) ); }, at = function (t, e, r, a, o) { var s = a[0], l = a[1]; A ? t .exit() .transition() .each(function () { var t = n.select(this); t .select("path.surface") .transition() .attrTween("d", function (t) { var r = (function (t, e, r, n) { var a, o = U(t, e); if (e) a = D; else { var s = U(b, e); a = s ? R(t, s, n) : {}; } return i(o, a); })(t, e, 0, [s, l]); return function (t) { return o(r(t)); }; }), t.select("g.slicetext").attr("opacity", 0); }) .remove() : t.exit().remove(); }, ot = function (t) { var e = t.transform; return ( t.x0 !== t.x1 && t.y0 !== t.y1 && c(v.type, e, m), o.getTextTransform({ textX: e.textX, textY: e.textY, anchorX: e.anchorX, anchorY: e.anchorY, targetX: e.targetX, targetY: e.targetY, scale: e.scale, rotate: e.rotate, }) ); }; A && (w.each(function (t) { (B[h(t)] = { x0: t.x0, x1: t.x1, y0: t.y0, y1: t.y1 }), t.transform && (B[h(t)].transform = { textX: t.transform.textX, textY: t.transform.textY, anchorX: t.transform.anchorX, anchorY: t.transform.anchorY, targetX: t.transform.targetX, targetY: t.transform.targetY, scale: t.transform.scale, rotate: t.transform.rotate, }); }), T.each(function (t) { (N[h(t)] = { x0: t.x0, x1: t.x1, y0: t.y0, y1: t.y1 }), t.transform && (N[h(t)].transform = { textX: t.transform.textX, textY: t.transform.textY, anchorX: t.transform.anchorX, anchorY: t.transform.anchorY, targetX: t.transform.targetX, targetY: t.transform.targetY, scale: t.transform.scale, rotate: t.transform.rotate, }), !F && a.isEntry(t) && (F = t); })), (j = d(t, e, b, T, { width: L, height: C, viewX: G, viewY: Y, pathSlice: function (t) { var e = G(t.x0), r = G(t.x1), n = Y(t.y0), i = Y(t.y1), a = r - e, o = i - n; if (!a || !o) return ""; return ( "M" + K(e, n + 0) + "L" + K(r - 0, n) + "L" + K(r, i - 0) + "L" + K(e + 0, i) + "Z" ); }, toMoveInsideSlice: et, prevEntry: F, makeUpdateSliceInterpolator: nt, makeUpdateTextInterpolator: it, handleSlicesExit: at, hasTransition: A, strTransform: ot, })), v.pathbar.visible ? f(t, e, b, w, { barDifY: z, width: P, height: I, viewX: X, viewY: J, pathSlice: function (t) { var e = X(Math.max(Math.min(t.x0, t.x0), 0)), r = X(Math.min(Math.max(t.x1, t.x1), P)), n = J(t.y0), i = J(t.y1), a = I / 2, o = {}, s = {}; (o.x = e), (s.x = r), (o.y = s.y = (n + i) / 2); var l = { x: e, y: n }, c = { x: r, y: n }, u = { x: r, y: i }, f = { x: e, y: i }; return ( ">" === tt ? ((l.x -= a), (c.x -= a), (u.x -= a), (f.x -= a)) : "/" === tt ? ((u.x -= a), (f.x -= a), (o.x -= a / 2), (s.x -= a / 2)) : "\\" === tt ? ((l.x -= a), (c.x -= a), (o.x -= a / 2), (s.x -= a / 2)) : "<" === tt && ((o.x -= a), (s.x -= a)), $(l), $(f), $(o), $(c), $(u), $(s), "M" + K(l.x, l.y) + "L" + K(c.x, c.y) + "L" + K(s.x, s.y) + "L" + K(u.x, u.y) + "L" + K(f.x, f.y) + "L" + K(o.x, o.y) + "Z" ); }, toMoveInsideSlice: et, makeUpdateSliceInterpolator: nt, makeUpdateTextInterpolator: it, handleSlicesExit: at, hasTransition: A, strTransform: ot, }) : w.remove(); }; }, { "../../lib": 515, "../bar/constants": 659, "../bar/plot": 668, "../bar/uniform_text": 673, "../sunburst/helpers": 1064, "./constants": 1087, "./draw_ancestors": 1090, "@plotly/d3": 58, "d3-interpolate": 116, }, ], 1099: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/color"), a = t("../../lib"), o = t("../sunburst/helpers"), s = t("../bar/uniform_text").resizeText; function l(t, e, r, n) { var s, l, c = (n || {}).hovered, u = e.data.data, f = u.i, h = u.color, p = o.isHierarchyRoot(e), d = 1; if (c) (s = r._hovered.marker.line.color), (l = r._hovered.marker.line.width); else if (p && h === r.root.color) (d = 100), (s = "rgba(0,0,0,0)"), (l = 0); else if ( ((s = a.castOption(r, f, "marker.line.color") || i.defaultLine), (l = a.castOption(r, f, "marker.line.width") || 0), !r._hasColorscale && !e.onPathbar) ) { var m = r.marker.depthfade; if (m) { var g, v = i.combine( i.addOpacity(r._backgroundColor, 0.75), h, ); if (!0 === m) { var y = o.getMaxDepth(r); g = isFinite(y) ? o.isLeaf(e) ? 0 : r._maxVisibleLayers - (e.data.depth - r._entryDepth) : e.data.height + 1; } else (g = e.data.depth - r._entryDepth), r._atRootLevel || g++; if (g > 0) for (var x = 0; x < g; x++) { var b = (0.5 * x) / g; h = i.combine(i.addOpacity(v, b), h); } } } t.style("stroke-width", l) .call(i.fill, h) .call(i.stroke, s) .style("opacity", d); } e.exports = { style: function (t) { var e = t._fullLayout._treemaplayer.selectAll(".trace"); s(t, e, "treemap"), e.each(function (t) { var e = n.select(this), r = t[0].trace; e.style("opacity", r.opacity), e.selectAll("path.surface").each(function (t) { n.select(this).call(l, t, r, { hovered: !1 }); }); }); }, styleOne: l, }; }, { "../../components/color": 367, "../../lib": 515, "../bar/uniform_text": 673, "../sunburst/helpers": 1064, "@plotly/d3": 58, }, ], 1100: [ function (t, e, r) { "use strict"; var n = t("../box/attributes"), i = t("../../lib/extend").extendFlat, a = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat; e.exports = { y: n.y, x: n.x, x0: n.x0, y0: n.y0, xhoverformat: a("x"), yhoverformat: a("y"), name: i({}, n.name, {}), orientation: i({}, n.orientation, {}), bandwidth: { valType: "number", min: 0, editType: "calc" }, scalegroup: { valType: "string", dflt: "", editType: "calc", }, scalemode: { valType: "enumerated", values: ["width", "count"], dflt: "width", editType: "calc", }, spanmode: { valType: "enumerated", values: ["soft", "hard", "manual"], dflt: "soft", editType: "calc", }, span: { valType: "info_array", items: [ { valType: "any", editType: "calc" }, { valType: "any", editType: "calc" }, ], editType: "calc", }, line: { color: { valType: "color", editType: "style" }, width: { valType: "number", min: 0, dflt: 2, editType: "style", }, editType: "plot", }, fillcolor: n.fillcolor, points: i({}, n.boxpoints, {}), jitter: i({}, n.jitter, {}), pointpos: i({}, n.pointpos, {}), width: i({}, n.width, {}), marker: n.marker, text: n.text, hovertext: n.hovertext, hovertemplate: n.hovertemplate, quartilemethod: n.quartilemethod, box: { visible: { valType: "boolean", dflt: !1, editType: "plot", }, width: { valType: "number", min: 0, max: 1, dflt: 0.25, editType: "plot", }, fillcolor: { valType: "color", editType: "style" }, line: { color: { valType: "color", editType: "style" }, width: { valType: "number", min: 0, editType: "style" }, editType: "style", }, editType: "plot", }, meanline: { visible: { valType: "boolean", dflt: !1, editType: "plot", }, color: { valType: "color", editType: "style" }, width: { valType: "number", min: 0, editType: "style" }, editType: "plot", }, side: { valType: "enumerated", values: ["both", "positive", "negative"], dflt: "both", editType: "calc", }, offsetgroup: n.offsetgroup, alignmentgroup: n.alignmentgroup, selected: n.selected, unselected: n.unselected, hoveron: { valType: "flaglist", flags: ["violins", "points", "kde"], dflt: "violins+points+kde", extras: ["all"], editType: "style", }, }; }, { "../../lib/extend": 505, "../../plots/cartesian/axis_format_attributes": 569, "../box/attributes": 682, }, ], 1101: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../plots/cartesian/axes"), a = t("../box/calc"), o = t("./helpers"), s = t("../../constants/numerical").BADNUM; function l(t, e, r) { var i = e.max - e.min; if (!i) return t.bandwidth ? t.bandwidth : 0; if (t.bandwidth) return Math.max(t.bandwidth, i / 1e4); var a = r.length, o = n.stdev(r, a - 1, e.mean); return Math.max( (function (t, e, r) { return ( 1.059 * Math.min(e, r / 1.349) * Math.pow(t, -0.2) ); })(a, o, e.q3 - e.q1), i / 100, ); } function c(t, e, r, n) { var a, o = t.spanmode, l = t.span || [], c = [e.min, e.max], u = [e.min - 2 * n, e.max + 2 * n]; function f(n) { var i = l[n], a = "multicategory" === r.type ? r.r2c(i) : r.d2c(i, 0, t[e.valLetter + "calendar"]); return a === s ? u[n] : a; } var h = { type: "linear", range: (a = "soft" === o ? u : "hard" === o ? c : [f(0), f(1)]), }; return i.setConvert(h), h.cleanRange(), a; } e.exports = function (t, e) { var r = a(t, e); if (r[0].t.empty) return r; for ( var s = t._fullLayout, u = i.getFromId( t, e["h" === e.orientation ? "xaxis" : "yaxis"], ), f = 1 / 0, h = -1 / 0, p = 0, d = 0, m = 0; m < r.length; m++ ) { var g = r[m], v = g.pts.map(o.extractVal), y = (g.bandwidth = l(e, g, v)), x = (g.span = c(e, g, u, y)); if (g.min === g.max && 0 === y) (x = g.span = [g.min, g.max]), (g.density = [{ v: 1, t: x[0] }]), (g.bandwidth = y), (p = Math.max(p, 1)); else { var b = x[1] - x[0], _ = Math.ceil(b / (y / 3)), w = b / _; if (!isFinite(w) || !isFinite(_)) return ( n.error( "Something went wrong with computing the violin span", ), (r[0].t.empty = !0), r ); var T = o.makeKDE(g, e, v); g.density = new Array(_); for ( var k = 0, A = x[0]; A < x[1] + w / 2; k++, A += w ) { var M = T(A); (g.density[k] = { v: M, t: A }), (p = Math.max(p, M)); } } (d = Math.max(d, v.length)), (f = Math.min(f, x[0])), (h = Math.max(h, x[1])); } var S = i.findExtremes(u, [f, h], { padded: !0 }); if (((e._extremes[u._id] = S), e.width)) r[0].t.maxKDE = p; else { var E = s._violinScaleGroupStats, L = e.scalegroup, C = E[L]; C ? ((C.maxKDE = Math.max(C.maxKDE, p)), (C.maxCount = Math.max(C.maxCount, d))) : (E[L] = { maxKDE: p, maxCount: d }); } return (r[0].t.labels.kde = n._(t, "kde:")), r; }; }, { "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/axes": 566, "../box/calc": 683, "./helpers": 1104, }, ], 1102: [ function (t, e, r) { "use strict"; var n = t("../box/cross_trace_calc").setPositionOffset, i = ["v", "h"]; e.exports = function (t, e) { for ( var r = t.calcdata, a = e.xaxis, o = e.yaxis, s = 0; s < i.length; s++ ) { for ( var l = i[s], c = "h" === l ? o : a, u = [], f = 0; f < r.length; f++ ) { var h = r[f], p = h[0].t, d = h[0].trace; !0 !== d.visible || "violin" !== d.type || p.empty || d.orientation !== l || d.xaxis !== a._id || d.yaxis !== o._id || u.push(f); } n("violin", t, u, c); } }; }, { "../box/cross_trace_calc": 684 }, ], 1103: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../../components/color"), a = t("../box/defaults"), o = t("./attributes"); e.exports = function (t, e, r, s) { function l(r, i) { return n.coerce(t, e, o, r, i); } function c(r, i) { return n.coerce2(t, e, o, r, i); } if ( (a.handleSampleDefaults(t, e, l, s), !1 !== e.visible) ) { l("bandwidth"), l("side"), l("width") || (l("scalegroup", e.name), l("scalemode")); var u, f = l("span"); Array.isArray(f) && (u = "manual"), l("spanmode", u); var h = l("line.color", (t.marker || {}).color || r), p = l("line.width"), d = l("fillcolor", i.addOpacity(e.line.color, 0.5)); a.handlePointsDefaults(t, e, l, { prefix: "" }); var m = c("box.width"), g = c("box.fillcolor", d), v = c("box.line.color", h), y = c("box.line.width", p); l("box.visible", Boolean(m || g || v || y)) || (e.box = { visible: !1 }); var x = c("meanline.color", h), b = c("meanline.width", p); l("meanline.visible", Boolean(x || b)) || (e.meanline = { visible: !1 }), l("quartilemethod"); } }; }, { "../../components/color": 367, "../../lib": 515, "../box/defaults": 685, "./attributes": 1100, }, ], 1104: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = function (t) { return ( (1 / Math.sqrt(2 * Math.PI)) * Math.exp(-0.5 * t * t) ); }; (r.makeKDE = function (t, e, r) { var n = r.length, a = i, o = t.bandwidth, s = 1 / (n * o); return function (t) { for (var e = 0, i = 0; i < n; i++) e += a((t - r[i]) / o); return s * e; }; }), (r.getPositionOnKdePath = function (t, e, r) { var i, a; "h" === e.orientation ? ((i = "y"), (a = "x")) : ((i = "x"), (a = "y")); var o = n.findPointOnPath(t.path, r, a, { pathLength: t.pathLength, }), s = t.posCenterPx, l = o[i]; return [l, "both" === e.side ? 2 * s - l : s]; }), (r.getKdeValue = function (t, e, n) { var i = t.pts.map(r.extractVal); return r.makeKDE(t, e, i)(n) / t.posDensityScale; }), (r.extractVal = function (t) { return t.v; }); }, { "../../lib": 515 }, ], 1105: [ function (t, e, r) { "use strict"; var n = t("../../components/color"), i = t("../../lib"), a = t("../../plots/cartesian/axes"), o = t("../box/hover"), s = t("./helpers"); e.exports = function (t, e, r, l, c) { c || (c = {}); var u, f, h = c.hoverLayer, p = t.cd, d = p[0].trace, m = d.hoveron, g = -1 !== m.indexOf("violins"), v = -1 !== m.indexOf("kde"), y = []; if (g || v) { var x = o.hoverOnBoxes(t, e, r, l); if (v && x.length > 0) { var b, _, w, T, k, A = t.xa, M = t.ya; "h" === d.orientation ? ((k = e), (b = "y"), (w = M), (_ = "x"), (T = A)) : ((k = r), (b = "x"), (w = A), (_ = "y"), (T = M)); var S = p[t.index]; if (k >= S.span[0] && k <= S.span[1]) { var E = i.extendFlat({}, t), L = T.c2p(k, !0), C = s.getKdeValue(S, d, k), P = s.getPositionOnKdePath(S, d, L), I = w._offset, O = w._length; (E[b + "0"] = P[0]), (E[b + "1"] = P[1]), (E[_ + "0"] = E[_ + "1"] = L), (E[_ + "Label"] = _ + ": " + a.hoverLabelText(T, k, d[_ + "hoverformat"]) + ", " + p[0].t.labels.kde + " " + C.toFixed(3)); for (var z = 0, D = 0; D < x.length; D++) if ("med" === x[D].attr) { z = D; break; } E.spikeDistance = x[z].spikeDistance; var R = b + "Spike"; (E[R] = x[z][R]), (x[z].spikeDistance = void 0), (x[z][R] = void 0), (E.hovertemplate = !1), y.push(E), ((f = {})[b + "1"] = i.constrain( I + P[0], I, I + O, )), (f[b + "2"] = i.constrain(I + P[1], I, I + O)), (f[_ + "1"] = f[_ + "2"] = T._offset + L); } } g && (y = y.concat(x)); } -1 !== m.indexOf("points") && (u = o.hoverOnPoints(t, e, r)); var F = h .selectAll(".violinline-" + d.uid) .data(f ? [0] : []); return ( F.enter() .append("line") .classed("violinline-" + d.uid, !0) .attr("stroke-width", 1.5), F.exit().remove(), F.attr(f).call(n.stroke, t.color), "closest" === l ? (u ? [u] : y) : u ? (y.push(u), y) : y ); }; }, { "../../components/color": 367, "../../lib": 515, "../../plots/cartesian/axes": 566, "../box/hover": 687, "./helpers": 1104, }, ], 1106: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyDefaults: t("./defaults"), crossTraceDefaults: t("../box/defaults").crossTraceDefaults, supplyLayoutDefaults: t("./layout_defaults"), calc: t("./calc"), crossTraceCalc: t("./cross_trace_calc"), plot: t("./plot"), style: t("./style"), styleOnSelect: t("../scatter/style").styleOnSelect, hoverPoints: t("./hover"), selectPoints: t("../box/select"), moduleType: "trace", name: "violin", basePlotModule: t("../../plots/cartesian"), categories: [ "cartesian", "svg", "symbols", "oriented", "box-violin", "showLegend", "violinLayout", "zoomScale", ], meta: {}, }; }, { "../../plots/cartesian": 578, "../box/defaults": 685, "../box/select": 692, "../scatter/style": 960, "./attributes": 1100, "./calc": 1101, "./cross_trace_calc": 1102, "./defaults": 1103, "./hover": 1105, "./layout_attributes": 1107, "./layout_defaults": 1108, "./plot": 1109, "./style": 1110, }, ], 1107: [ function (t, e, r) { "use strict"; var n = t("../box/layout_attributes"), i = t("../../lib").extendFlat; e.exports = { violinmode: i({}, n.boxmode, {}), violingap: i({}, n.boxgap, {}), violingroupgap: i({}, n.boxgroupgap, {}), }; }, { "../../lib": 515, "../box/layout_attributes": 689 }, ], 1108: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"), a = t("../box/layout_defaults"); e.exports = function (t, e, r) { a._supply( t, e, r, function (r, a) { return n.coerce(t, e, i, r, a); }, "violin", ); }; }, { "../../lib": 515, "../box/layout_defaults": 690, "./layout_attributes": 1107, }, ], 1109: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../components/drawing"), o = t("../box/plot"), s = t("../scatter/line_points"), l = t("./helpers"); e.exports = function (t, e, r, c) { var u = t._fullLayout, f = e.xaxis, h = e.yaxis; function p(t, e) { var r = s(t, { xaxis: f, yaxis: h, trace: e, connectGaps: !0, baseTolerance: 0.75, shape: "spline", simplify: !0, linearized: !0, }); return a.smoothopen(r[0], 1); } i.makeTraceGroups(c, r, "trace violins").each(function (t) { var r = n.select(this), a = t[0], s = a.t, c = a.trace; if (!0 !== c.visible || s.empty) r.remove(); else { var d = s.bPos, m = s.bdPos, g = e[s.valLetter + "axis"], v = e[s.posLetter + "axis"], y = "both" === c.side, x = y || "positive" === c.side, b = y || "negative" === c.side, _ = r.selectAll("path.violin").data(i.identity); _.enter() .append("path") .style("vector-effect", "non-scaling-stroke") .attr("class", "violin"), _.exit().remove(), _.each(function (t) { var e, r, i, a, o, l, f, h, _ = n.select(this), w = t.density, T = w.length, k = v.c2l(t.pos + d, !0), A = v.l2p(k); if (c.width) e = s.maxKDE / m; else { var M = u._violinScaleGroupStats[c.scalegroup]; e = "count" === c.scalemode ? (M.maxKDE / m) * (M.maxCount / t.pts.length) : M.maxKDE / m; } if (x) { for (f = new Array(T), o = 0; o < T; o++) ((h = f[o] = {})[s.posLetter] = k + w[o].v / e), (h[s.valLetter] = g.c2l(w[o].t, !0)); r = p(f, c); } if (b) { for ( f = new Array(T), l = 0, o = T - 1; l < T; l++, o-- ) ((h = f[l] = {})[s.posLetter] = k - w[o].v / e), (h[s.valLetter] = g.c2l(w[o].t, !0)); i = p(f, c); } if (y) a = r + "L" + i.substr(1) + "Z"; else { var S = [A, g.c2p(w[0].t)], E = [A, g.c2p(w[T - 1].t)]; "h" === c.orientation && (S.reverse(), E.reverse()), (a = x ? "M" + S + "L" + r.substr(1) + "L" + E : "M" + E + "L" + i.substr(1) + "L" + S); } _.attr("d", a), (t.posCenterPx = A), (t.posDensityScale = e * m), (t.path = _.node()), (t.pathLength = t.path.getTotalLength() / (y ? 2 : 1)); }); var w, T, k, A = c.box, M = A.width, S = (A.line || {}).width; y ? ((w = m * M), (T = 0)) : x ? ((w = [0, (m * M) / 2]), (T = S * { x: 1, y: -1 }[s.posLetter])) : ((w = [(m * M) / 2, 0]), (T = S * { x: -1, y: 1 }[s.posLetter])), o.plotBoxAndWhiskers(r, { pos: v, val: g }, c, { bPos: d, bdPos: w, bPosPxOffset: T, }), o.plotBoxMean(r, { pos: v, val: g }, c, { bPos: d, bdPos: w, bPosPxOffset: T, }), !c.box.visible && c.meanline.visible && (k = i.identity); var E = r.selectAll("path.meanline").data(k || []); E.enter() .append("path") .attr("class", "meanline") .style("fill", "none") .style("vector-effect", "non-scaling-stroke"), E.exit().remove(), E.each(function (t) { var e = g.c2p(t.mean, !0), r = l.getPositionOnKdePath(t, c, e); n.select(this).attr( "d", "h" === c.orientation ? "M" + e + "," + r[0] + "V" + r[1] : "M" + r[0] + "," + e + "H" + r[1], ); }), o.plotPoints(r, { x: f, y: h }, c, s); } }); }; }, { "../../components/drawing": 389, "../../lib": 515, "../box/plot": 691, "../scatter/line_points": 950, "./helpers": 1104, "@plotly/d3": 58, }, ], 1110: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/color"), a = t("../scatter/style").stylePoints; e.exports = function (t) { var e = n.select(t).selectAll("g.trace.violins"); e.style("opacity", function (t) { return t[0].trace.opacity; }), e.each(function (e) { var r = e[0].trace, o = n.select(this), s = r.box || {}, l = s.line || {}, c = r.meanline || {}, u = c.width; o .selectAll("path.violin") .style("stroke-width", r.line.width + "px") .call(i.stroke, r.line.color) .call(i.fill, r.fillcolor), o .selectAll("path.box") .style("stroke-width", l.width + "px") .call(i.stroke, l.color) .call(i.fill, s.fillcolor); var f = { "stroke-width": u + "px", "stroke-dasharray": 2 * u + "px," + u + "px", }; o .selectAll("path.mean") .style(f) .call(i.stroke, c.color), o .selectAll("path.meanline") .style(f) .call(i.stroke, c.color), a(o, r, t); }); }; }, { "../../components/color": 367, "../scatter/style": 960, "@plotly/d3": 58, }, ], 1111: [ function (t, e, r) { "use strict"; var n = t("../../components/colorscale/attributes"), i = t("../isosurface/attributes"), a = t("../surface/attributes"), o = t("../../plots/attributes"), s = t("../../lib/extend").extendFlat, l = t("../../plot_api/edit_types").overrideAll, c = (e.exports = l( s( { x: i.x, y: i.y, z: i.z, value: i.value, isomin: i.isomin, isomax: i.isomax, surface: i.surface, spaceframe: { show: { valType: "boolean", dflt: !1 }, fill: { valType: "number", min: 0, max: 1, dflt: 1, }, }, slices: i.slices, caps: i.caps, text: i.text, hovertext: i.hovertext, xhoverformat: i.xhoverformat, yhoverformat: i.yhoverformat, zhoverformat: i.zhoverformat, valuehoverformat: i.valuehoverformat, hovertemplate: i.hovertemplate, }, n("", { colorAttr: "`value`", showScaleDflt: !0, editTypeOverride: "calc", }), { colorbar: i.colorbar, opacity: i.opacity, opacityscale: a.opacityscale, lightposition: i.lightposition, lighting: i.lighting, flatshading: i.flatshading, contour: i.contour, hoverinfo: s({}, o.hoverinfo), showlegend: s({}, o.showlegend, { dflt: !1 }), }, ), "calc", "nested", )); (c.x.editType = c.y.editType = c.z.editType = c.value.editType = "calc+clearAxisTypes"), (c.transforms = void 0); }, { "../../components/colorscale/attributes": 374, "../../lib/extend": 505, "../../plot_api/edit_types": 548, "../../plots/attributes": 562, "../isosurface/attributes": 871, "../surface/attributes": 1070, }, ], 1112: [ function (t, e, r) { "use strict"; var n = t("../../../stackgl_modules").gl_mesh3d, i = t("../../lib/gl_format_color").parseColorScale, a = t("../../lib/str2rgbarray"), o = t("../../components/colorscale").extractOpts, s = t("../../plots/gl3d/zip3"), l = t("../isosurface/convert").findNearestOnAxis, c = t("../isosurface/convert").generateIsoMeshes; function u(t, e, r) { (this.scene = t), (this.uid = r), (this.mesh = e), (this.name = ""), (this.data = null), (this.showContour = !1); } var f = u.prototype; (f.handlePick = function (t) { if (t.object === this.mesh) { var e = t.data.index, r = this.data._meshX[e], n = this.data._meshY[e], i = this.data._meshZ[e], a = this.data._Ys.length, o = this.data._Zs.length, s = l(r, this.data._Xs).id, c = l(n, this.data._Ys).id, u = l(i, this.data._Zs).id, f = (t.index = u + o * c + o * a * s); t.traceCoordinate = [ this.data._meshX[f], this.data._meshY[f], this.data._meshZ[f], this.data._value[f], ]; var h = this.data.hovertext || this.data.text; return ( Array.isArray(h) && void 0 !== h[f] ? (t.textLabel = h[f]) : h && (t.textLabel = h), !0 ); } }), (f.update = function (t) { var e = this.scene, r = e.fullSceneLayout; function n(t, e, r, n) { return e.map(function (e) { return t.d2l(e, 0, n) * r; }); } this.data = c(t); var l = { positions: s( n(r.xaxis, t._meshX, e.dataScale[0], t.xcalendar), n(r.yaxis, t._meshY, e.dataScale[1], t.ycalendar), n(r.zaxis, t._meshZ, e.dataScale[2], t.zcalendar), ), cells: s(t._meshI, t._meshJ, t._meshK), lightPosition: [ t.lightposition.x, t.lightposition.y, t.lightposition.z, ], ambient: t.lighting.ambient, diffuse: t.lighting.diffuse, specular: t.lighting.specular, roughness: t.lighting.roughness, fresnel: t.lighting.fresnel, vertexNormalsEpsilon: t.lighting.vertexnormalsepsilon, faceNormalsEpsilon: t.lighting.facenormalsepsilon, opacity: t.opacity, opacityscale: t.opacityscale, contourEnable: t.contour.show, contourColor: a(t.contour.color).slice(0, 3), contourWidth: t.contour.width, useFacetNormals: t.flatshading, }, u = o(t); (l.vertexIntensity = t._meshIntensity), (l.vertexIntensityBounds = [u.min, u.max]), (l.colormap = i(t)), this.mesh.update(l); }), (f.dispose = function () { this.scene.glplot.remove(this.mesh), this.mesh.dispose(); }), (e.exports = function (t, e) { var r = t.glplot.gl, i = n({ gl: r }), a = new u(t, i, e.uid); return (i._trace = a), a.update(e), t.glplot.add(i), a; }); }, { "../../../stackgl_modules": 1133, "../../components/colorscale": 379, "../../lib/gl_format_color": 511, "../../lib/str2rgbarray": 540, "../../plots/gl3d/zip3": 618, "../isosurface/convert": 873, }, ], 1113: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./attributes"), a = t("../isosurface/defaults").supplyIsoDefaults, o = t("../surface/defaults").opacityscaleDefaults; e.exports = function (t, e, r, s) { function l(r, a) { return n.coerce(t, e, i, r, a); } a(t, e, r, s, l), o(t, e, s, l); }; }, { "../../lib": 515, "../isosurface/defaults": 874, "../surface/defaults": 1073, "./attributes": 1111, }, ], 1114: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), supplyDefaults: t("./defaults"), calc: t("../isosurface/calc"), colorbar: { min: "cmin", max: "cmax" }, plot: t("./convert"), moduleType: "trace", name: "volume", basePlotModule: t("../../plots/gl3d"), categories: ["gl3d", "showLegend"], meta: {}, }; }, { "../../plots/gl3d": 607, "../isosurface/calc": 872, "./attributes": 1111, "./convert": 1112, "./defaults": 1113, }, ], 1115: [ function (t, e, r) { "use strict"; var n = t("../bar/attributes"), i = t("../scatter/attributes").line, a = t("../../plots/attributes"), o = t( "../../plots/cartesian/axis_format_attributes", ).axisHoverFormat, s = t("../../plots/template_attributes").hovertemplateAttrs, l = t("../../plots/template_attributes").texttemplateAttrs, c = t("./constants"), u = t("../../lib/extend").extendFlat, f = t("../../components/color"); function h(t) { return { marker: { color: u({}, n.marker.color, { arrayOk: !1, editType: "style", }), line: { color: u({}, n.marker.line.color, { arrayOk: !1, editType: "style", }), width: u({}, n.marker.line.width, { arrayOk: !1, editType: "style", }), editType: "style", }, editType: "style", }, editType: "style", }; } e.exports = { measure: { valType: "data_array", dflt: [], editType: "calc", }, base: { valType: "number", dflt: null, arrayOk: !1, editType: "calc", }, x: n.x, x0: n.x0, dx: n.dx, y: n.y, y0: n.y0, dy: n.dy, xperiod: n.xperiod, yperiod: n.yperiod, xperiod0: n.xperiod0, yperiod0: n.yperiod0, xperiodalignment: n.xperiodalignment, yperiodalignment: n.yperiodalignment, xhoverformat: o("x"), yhoverformat: o("y"), hovertext: n.hovertext, hovertemplate: s({}, { keys: c.eventDataKeys }), hoverinfo: u({}, a.hoverinfo, { flags: [ "name", "x", "y", "text", "initial", "delta", "final", ], }), textinfo: { valType: "flaglist", flags: ["label", "text", "initial", "delta", "final"], extras: ["none"], editType: "plot", arrayOk: !1, }, texttemplate: l( { editType: "plot" }, { keys: c.eventDataKeys.concat(["label"]) }, ), text: n.text, textposition: n.textposition, insidetextanchor: n.insidetextanchor, textangle: n.textangle, textfont: n.textfont, insidetextfont: n.insidetextfont, outsidetextfont: n.outsidetextfont, constraintext: n.constraintext, cliponaxis: n.cliponaxis, orientation: n.orientation, offset: n.offset, width: n.width, increasing: h(), decreasing: h(), totals: h(), connector: { line: { color: u({}, i.color, { dflt: f.defaultLine }), width: u({}, i.width, { editType: "plot" }), dash: i.dash, editType: "plot", }, mode: { valType: "enumerated", values: ["spanning", "between"], dflt: "between", editType: "plot", }, visible: { valType: "boolean", dflt: !0, editType: "plot", }, editType: "plot", }, offsetgroup: n.offsetgroup, alignmentgroup: n.alignmentgroup, }; }, { "../../components/color": 367, "../../lib/extend": 505, "../../plots/attributes": 562, "../../plots/cartesian/axis_format_attributes": 569, "../../plots/template_attributes": 642, "../bar/attributes": 657, "../scatter/attributes": 936, "./constants": 1117, }, ], 1116: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes"), i = t("../../plots/cartesian/align_period"), a = t("../../lib").mergeArray, o = t("../scatter/calc_selection"), s = t("../../constants/numerical").BADNUM; function l(t) { return "a" === t || "absolute" === t; } function c(t) { return "t" === t || "total" === t; } e.exports = function (t, e) { var r, u, f, h, p, d, m = n.getFromId(t, e.xaxis || "x"), g = n.getFromId(t, e.yaxis || "y"); "h" === e.orientation ? ((r = m.makeCalcdata(e, "x")), (f = g.makeCalcdata(e, "y")), (h = i(e, g, "y", f)), (p = !!e.yperiodalignment), (d = "y")) : ((r = g.makeCalcdata(e, "y")), (f = m.makeCalcdata(e, "x")), (h = i(e, m, "x", f)), (p = !!e.xperiodalignment), (d = "x")), (u = h.vals); for ( var v, y = Math.min(u.length, r.length), x = new Array(y), b = 0, _ = !1, w = 0; w < y; w++ ) { var T = r[w] || 0, k = !1; (r[w] !== s || c(e.measure[w]) || l(e.measure[w])) && w + 1 < y && (r[w + 1] !== s || c(e.measure[w + 1]) || l(e.measure[w + 1])) && (k = !0); var A = (x[w] = { i: w, p: u[w], s: T, rawS: T, cNext: k, }); l(e.measure[w]) ? ((b = A.s), (A.isSum = !0), (A.dir = "totals"), (A.s = b)) : c(e.measure[w]) ? ((A.isSum = !0), (A.dir = "totals"), (A.s = b)) : ((A.isSum = !1), (A.dir = A.rawS < 0 ? "decreasing" : "increasing"), (v = A.s), (A.s = b + v), (b += v)), "totals" === A.dir && (_ = !0), p && ((x[w].orig_p = f[w]), (x[w][d + "End"] = h.ends[w]), (x[w][d + "Start"] = h.starts[w])), e.ids && (A.id = String(e.ids[w])), (A.v = (e.base || 0) + b); } return ( x.length && (x[0].hasTotals = _), a(e.text, x, "tx"), a(e.hovertext, x, "htx"), o(x, e), x ); }; }, { "../../constants/numerical": 491, "../../lib": 515, "../../plots/cartesian/align_period": 563, "../../plots/cartesian/axes": 566, "../scatter/calc_selection": 938, }, ], 1117: [ function (t, e, r) { "use strict"; e.exports = { eventDataKeys: ["initial", "delta", "final"] }; }, {}, ], 1118: [ function (t, e, r) { "use strict"; var n = t("../bar/cross_trace_calc").setGroupPositions; e.exports = function (t, e) { var r, i, a = t._fullLayout, o = t._fullData, s = t.calcdata, l = e.xaxis, c = e.yaxis, u = [], f = [], h = []; for (i = 0; i < o.length; i++) { var p = o[i]; !0 === p.visible && p.xaxis === l._id && p.yaxis === c._id && "waterfall" === p.type && ((r = s[i]), "h" === p.orientation ? h.push(r) : f.push(r), u.push(r)); } var d = { mode: a.waterfallmode, norm: a.waterfallnorm, gap: a.waterfallgap, groupgap: a.waterfallgroupgap, }; for ( n(t, l, c, f, d), n(t, c, l, h, d), i = 0; i < u.length; i++ ) { r = u[i]; for (var m = 0; m < r.length; m++) { var g = r[m]; !1 === g.isSum && (g.s0 += 0 === m ? 0 : r[m - 1].s), m + 1 < r.length && ((r[m].nextP0 = r[m + 1].p0), (r[m].nextS0 = r[m + 1].s0)); } } }; }, { "../bar/cross_trace_calc": 660 }, ], 1119: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("../bar/defaults").handleGroupingDefaults, a = t("../bar/defaults").handleText, o = t("../scatter/xy_defaults"), s = t("../scatter/period_defaults"), l = t("./attributes"), c = t("../../components/color"), u = t("../../constants/delta.js"), f = u.INCREASING.COLOR, h = u.DECREASING.COLOR; function p(t, e, r) { t(e + ".marker.color", r), t(e + ".marker.line.color", c.defaultLine), t(e + ".marker.line.width"); } e.exports = { supplyDefaults: function (t, e, r, i) { function c(r, i) { return n.coerce(t, e, l, r, i); } if (o(t, e, i, c)) { s(t, e, i, c), c("xhoverformat"), c("yhoverformat"), c("measure"), c("orientation", e.x && !e.y ? "h" : "v"), c("base"), c("offset"), c("width"), c("text"), c("hovertext"), c("hovertemplate"); var u = c("textposition"); if ( (a(t, e, i, c, u, { moduleHasSelected: !1, moduleHasUnselected: !1, moduleHasConstrain: !0, moduleHasCliponaxis: !0, moduleHasTextangle: !0, moduleHasInsideanchor: !0, }), "none" !== e.textposition && (c("texttemplate"), e.texttemplate || c("textinfo")), p(c, "increasing", f), p(c, "decreasing", h), p(c, "totals", "#4499FF"), c("connector.visible")) ) c("connector.mode"), c("connector.line.width") && (c("connector.line.color"), c("connector.line.dash")); } else e.visible = !1; }, crossTraceDefaults: function (t, e) { var r, a; function o(t) { return n.coerce(a._input, a, l, t); } if ("group" === e.waterfallmode) for (var s = 0; s < t.length; s++) (r = (a = t[s])._input), i(r, a, e, o); }, }; }, { "../../components/color": 367, "../../constants/delta.js": 485, "../../lib": 515, "../bar/defaults": 661, "../scatter/period_defaults": 956, "../scatter/xy_defaults": 963, "./attributes": 1115, }, ], 1120: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { return ( (t.x = "xVal" in e ? e.xVal : e.x), (t.y = "yVal" in e ? e.yVal : e.y), "initial" in e && (t.initial = e.initial), "delta" in e && (t.delta = e.delta), "final" in e && (t.final = e.final), e.xa && (t.xaxis = e.xa), e.ya && (t.yaxis = e.ya), t ); }; }, {}, ], 1121: [ function (t, e, r) { "use strict"; var n = t("../../plots/cartesian/axes").hoverLabelText, i = t("../../components/color").opacity, a = t("../bar/hover").hoverOnBars, o = t("../../constants/delta.js"), s = o.INCREASING.SYMBOL, l = o.DECREASING.SYMBOL; e.exports = function (t, e, r, o, c) { var u = a(t, e, r, o, c); if (u) { var f = u.cd, h = f[0].trace, p = "h" === h.orientation, d = p ? "x" : "y", m = p ? t.xa : t.ya, g = f[u.index], v = g.isSum ? g.b + g.s : g.rawS; if (!g.isSum) { (u.initial = g.b + g.s - v), (u.delta = v), (u.final = u.initial + u.delta); var y = k(Math.abs(u.delta)); (u.deltaLabel = v < 0 ? "(" + y + ")" : y), (u.finalLabel = k(u.final)), (u.initialLabel = k(u.initial)); } var x = g.hi || h.hoverinfo, b = []; if (x && "none" !== x && "skip" !== x) { var _ = "all" === x, w = x.split("+"), T = function (t) { return _ || -1 !== w.indexOf(t); }; g.isSum || (!T("final") || T(p ? "x" : "y") || b.push(u.finalLabel), T("delta") && (v < 0 ? b.push(u.deltaLabel + " " + l) : b.push(u.deltaLabel + " " + s)), T("initial") && b.push("Initial: " + u.initialLabel)); } return ( b.length && (u.extraText = b.join("
")), (u.color = (function (t, e) { var r = t[e.dir].marker, n = r.color, a = r.line.color, o = r.line.width; if (i(n)) return n; if (i(a) && o) return a; })(h, g)), [u] ); } function k(t) { return n(m, t, h[d + "hoverformat"]); } }; }, { "../../components/color": 367, "../../constants/delta.js": 485, "../../plots/cartesian/axes": 566, "../bar/hover": 664, }, ], 1122: [ function (t, e, r) { "use strict"; e.exports = { attributes: t("./attributes"), layoutAttributes: t("./layout_attributes"), supplyDefaults: t("./defaults").supplyDefaults, crossTraceDefaults: t("./defaults").crossTraceDefaults, supplyLayoutDefaults: t("./layout_defaults"), calc: t("./calc"), crossTraceCalc: t("./cross_trace_calc"), plot: t("./plot"), style: t("./style").style, hoverPoints: t("./hover"), eventData: t("./event_data"), selectPoints: t("../bar/select"), moduleType: "trace", name: "waterfall", basePlotModule: t("../../plots/cartesian"), categories: [ "bar-like", "cartesian", "svg", "oriented", "showLegend", "zoomScale", ], meta: {}, }; }, { "../../plots/cartesian": 578, "../bar/select": 669, "./attributes": 1115, "./calc": 1116, "./cross_trace_calc": 1118, "./defaults": 1119, "./event_data": 1120, "./hover": 1121, "./layout_attributes": 1123, "./layout_defaults": 1124, "./plot": 1125, "./style": 1126, }, ], 1123: [ function (t, e, r) { "use strict"; e.exports = { waterfallmode: { valType: "enumerated", values: ["group", "overlay"], dflt: "group", editType: "calc", }, waterfallgap: { valType: "number", min: 0, max: 1, editType: "calc", }, waterfallgroupgap: { valType: "number", min: 0, max: 1, dflt: 0, editType: "calc", }, }; }, {}, ], 1124: [ function (t, e, r) { "use strict"; var n = t("../../lib"), i = t("./layout_attributes"); e.exports = function (t, e, r) { var a = !1; function o(r, a) { return n.coerce(t, e, i, r, a); } for (var s = 0; s < r.length; s++) { var l = r[s]; if (l.visible && "waterfall" === l.type) { a = !0; break; } } a && (o("waterfallmode"), o("waterfallgap", 0.2), o("waterfallgroupgap")); }; }, { "../../lib": 515, "./layout_attributes": 1123 }, ], 1125: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../lib"), a = t("../../components/drawing"), o = t("../../constants/numerical").BADNUM, s = t("../bar/plot"), l = t("../bar/uniform_text").clearMinTextSize; e.exports = function (t, e, r, c) { var u = t._fullLayout; l("waterfall", u), s.plot(t, e, r, c, { mode: u.waterfallmode, norm: u.waterfallmode, gap: u.waterfallgap, groupgap: u.waterfallgroupgap, }), (function (t, e, r, s) { var l = e.xaxis, c = e.yaxis; i.makeTraceGroups(s, r, "trace bars").each( function (r) { var s = n.select(this), u = r[0].trace, f = i.ensureSingle(s, "g", "lines"); if (u.connector && u.connector.visible) { var h = "h" === u.orientation, p = u.connector.mode, d = f.selectAll("g.line").data(i.identity); d.enter().append("g").classed("line", !0), d.exit().remove(); var m = d.size(); d.each(function (r, s) { if (s === m - 1 || r.cNext) { var u = (function (t, e, r, n) { var i = [], a = [], o = n ? e : r, s = n ? r : e; return ( (i[0] = o.c2p(t.s0, !0)), (a[0] = s.c2p(t.p0, !0)), (i[1] = o.c2p(t.s1, !0)), (a[1] = s.c2p(t.p1, !0)), (i[2] = o.c2p(t.nextS0, !0)), (a[2] = s.c2p(t.nextP0, !0)), n ? [i, a] : [a, i] ); })(r, l, c, h), f = u[0], d = u[1], g = ""; f[0] !== o && d[0] !== o && f[1] !== o && d[1] !== o && ("spanning" === p && !r.isSum && s > 0 && (g += h ? "M" + f[0] + "," + d[1] + "V" + d[0] : "M" + f[1] + "," + d[0] + "H" + f[0]), "between" !== p && (r.isSum || s < m - 1) && (g += h ? "M" + f[1] + "," + d[0] + "V" + d[1] : "M" + f[0] + "," + d[1] + "H" + f[1]), f[2] !== o && d[2] !== o && (g += h ? "M" + f[1] + "," + d[1] + "V" + d[2] : "M" + f[1] + "," + d[1] + "H" + f[2])), "" === g && (g = "M0,0Z"), i .ensureSingle(n.select(this), "path") .attr("d", g) .call(a.setClipUrl, e.layerClipId, t); } }); } else f.remove(); }, ); })(t, e, r, c); }; }, { "../../components/drawing": 389, "../../constants/numerical": 491, "../../lib": 515, "../bar/plot": 668, "../bar/uniform_text": 673, "@plotly/d3": 58, }, ], 1126: [ function (t, e, r) { "use strict"; var n = t("@plotly/d3"), i = t("../../components/drawing"), a = t("../../components/color"), o = t("../../constants/interactions").DESELECTDIM, s = t("../bar/style"), l = t("../bar/uniform_text").resizeText, c = s.styleTextPoints; e.exports = { style: function (t, e, r) { var s = r || n .select(t) .selectAll("g.waterfalllayer") .selectAll("g.trace"); l(t, s, "waterfall"), s.style("opacity", function (t) { return t[0].trace.opacity; }), s.each(function (e) { var r = n.select(this), s = e[0].trace; r.selectAll(".point > path").each(function (t) { if (!t.isBlank) { var e = s[t.dir].marker; n.select(this) .call(a.fill, e.color) .call(a.stroke, e.line.color) .call(i.dashLine, e.line.dash, e.line.width) .style( "opacity", s.selectedpoints && !t.selected ? o : 1, ); } }), c(r, s, t), r.selectAll(".lines").each(function () { var t = s.connector.line; i.lineGroupStyle( n.select(this).selectAll("path"), t.width, t.color, t.dash, ); }); }); }, }; }, { "../../components/color": 367, "../../components/drawing": 389, "../../constants/interactions": 490, "../bar/style": 671, "../bar/uniform_text": 673, "@plotly/d3": 58, }, ], 1127: [ function (t, e, r) { "use strict"; var n = t("../plots/cartesian/axes"), i = t("../lib"), a = t("../plot_api/plot_schema"), o = t("./helpers").pointsAccessorFunction, s = t("../constants/numerical").BADNUM; (r.moduleType = "transform"), (r.name = "aggregate"); var l = (r.attributes = { enabled: { valType: "boolean", dflt: !0, editType: "calc", }, groups: { valType: "string", strict: !0, noBlank: !0, arrayOk: !0, dflt: "x", editType: "calc", }, aggregations: { _isLinkedToArray: "aggregation", target: { valType: "string", editType: "calc" }, func: { valType: "enumerated", values: [ "count", "sum", "avg", "median", "mode", "rms", "stddev", "min", "max", "first", "last", "change", "range", ], dflt: "first", editType: "calc", }, funcmode: { valType: "enumerated", values: ["sample", "population"], dflt: "sample", editType: "calc", }, enabled: { valType: "boolean", dflt: !0, editType: "calc", }, editType: "calc", }, editType: "calc", }), c = l.aggregations; function u(t, e, r, a) { if (a.enabled) { for ( var o = a.target, l = i.nestedProperty(e, o), c = l.get(), u = (function (t, e) { var r = t.func, n = e.d2c, a = e.c2d; switch (r) { case "count": return f; case "first": return h; case "last": return p; case "sum": return function (t, e) { for (var r = 0, i = 0; i < e.length; i++) { var o = n(t[e[i]]); o !== s && (r += o); } return a(r); }; case "avg": return function (t, e) { for ( var r = 0, i = 0, o = 0; o < e.length; o++ ) { var l = n(t[e[o]]); l !== s && ((r += l), i++); } return i ? a(r / i) : s; }; case "min": return function (t, e) { for ( var r = 1 / 0, i = 0; i < e.length; i++ ) { var o = n(t[e[i]]); o !== s && (r = Math.min(r, o)); } return r === 1 / 0 ? s : a(r); }; case "max": return function (t, e) { for ( var r = -1 / 0, i = 0; i < e.length; i++ ) { var o = n(t[e[i]]); o !== s && (r = Math.max(r, o)); } return r === -1 / 0 ? s : a(r); }; case "range": return function (t, e) { for ( var r = 1 / 0, i = -1 / 0, o = 0; o < e.length; o++ ) { var l = n(t[e[o]]); l !== s && ((r = Math.min(r, l)), (i = Math.max(i, l))); } return i === -1 / 0 || r === 1 / 0 ? s : a(i - r); }; case "change": return function (t, e) { var r = n(t[e[0]]), i = n(t[e[e.length - 1]]); return r === s || i === s ? s : a(i - r); }; case "median": return function (t, e) { for (var r = [], o = 0; o < e.length; o++) { var l = n(t[e[o]]); l !== s && r.push(l); } if (!r.length) return s; r.sort(i.sorterAsc); var c = (r.length - 1) / 2; return a( (r[Math.floor(c)] + r[Math.ceil(c)]) / 2, ); }; case "mode": return function (t, e) { for ( var r = {}, i = 0, o = s, l = 0; l < e.length; l++ ) { var c = n(t[e[l]]); if (c !== s) { var u = (r[c] = (r[c] || 0) + 1); u > i && ((i = u), (o = c)); } } return i ? a(o) : s; }; case "rms": return function (t, e) { for ( var r = 0, i = 0, o = 0; o < e.length; o++ ) { var l = n(t[e[o]]); l !== s && ((r += l * l), i++); } return i ? a(Math.sqrt(r / i)) : s; }; case "stddev": return function (e, r) { var i, a = 0, o = 0, l = 1, c = s; for (i = 0; i < r.length && c === s; i++) c = n(e[r[i]]); if (c === s) return s; for (; i < r.length; i++) { var u = n(e[r[i]]); if (u !== s) { var f = u - c; (a += f), (o += f * f), l++; } } var h = "sample" === t.funcmode ? l - 1 : l; return h ? Math.sqrt((o - (a * a) / l) / h) : 0; }; } })(a, n.getDataConversions(t, e, o, c)), d = new Array(r.length), m = 0; m < r.length; m++ ) d[m] = u(c, r[m]); l.set(d), "count" === a.func && i.pushUnique(e._arrayAttrs, o); } } function f(t, e) { return e.length; } function h(t, e) { return t[e[0]]; } function p(t, e) { return t[e[e.length - 1]]; } (r.supplyDefaults = function (t, e) { var r, n = {}; function o(e, r) { return i.coerce(t, n, l, e, r); } if (!o("enabled")) return n; var s = a.findArrayAttributes(e), u = {}; for (r = 0; r < s.length; r++) u[s[r]] = 1; var f = o("groups"); if (!Array.isArray(f)) { if (!u[f]) return (n.enabled = !1), n; u[f] = 0; } var h, p = t.aggregations || [], d = (n.aggregations = new Array(p.length)); function m(t, e) { return i.coerce(p[r], h, c, t, e); } for (r = 0; r < p.length; r++) { h = { _index: r }; var g = m("target"), v = m("func"); m("enabled") && g && (u[g] || ("count" === v && void 0 === u[g])) ? ("stddev" === v && m("funcmode"), (u[g] = 0), (d[r] = h)) : (d[r] = { enabled: !1, _index: r }); } for (r = 0; r < s.length; r++) u[s[r]] && d.push({ target: s[r], func: c.func.dflt, enabled: !0, _index: -1, }); return n; }), (r.calcTransform = function (t, e, r) { if (r.enabled) { var n = r.groups, a = i.getTargetArray(e, { target: n }); if (a) { var s, l, c, f, h = {}, p = {}, d = [], m = o(e.transforms, r), g = a.length; for ( e._length && (g = Math.min(g, e._length)), s = 0; s < g; s++ ) void 0 === (c = h[(l = a[s])]) ? ((h[l] = d.length), (f = [s]), d.push(f), (p[h[l]] = m(s))) : (d[c].push(s), (p[h[l]] = (p[h[l]] || []).concat(m(s)))); r._indexToPoints = p; var v = r.aggregations; for (s = 0; s < v.length; s++) u(t, e, d, v[s]); "string" == typeof n && u(t, e, d, { target: n, func: "first", enabled: !0, }), (e._length = d.length); } } }); }, { "../constants/numerical": 491, "../lib": 515, "../plot_api/plot_schema": 554, "../plots/cartesian/axes": 566, "./helpers": 1130, }, ], 1128: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("../registry"), a = t("../plots/cartesian/axes"), o = t("./helpers").pointsAccessorFunction, s = t("../constants/filter_ops"), l = s.COMPARISON_OPS, c = s.INTERVAL_OPS, u = s.SET_OPS; (r.moduleType = "transform"), (r.name = "filter"), (r.attributes = { enabled: { valType: "boolean", dflt: !0, editType: "calc", }, target: { valType: "string", strict: !0, noBlank: !0, arrayOk: !0, dflt: "x", editType: "calc", }, operation: { valType: "enumerated", values: [].concat(l).concat(c).concat(u), dflt: "=", editType: "calc", }, value: { valType: "any", dflt: 0, editType: "calc" }, preservegaps: { valType: "boolean", dflt: !1, editType: "calc", }, editType: "calc", }), (r.supplyDefaults = function (t) { var e = {}; function a(i, a) { return n.coerce(t, e, r.attributes, i, a); } if (a("enabled")) { var o = a("target"); if (n.isArrayOrTypedArray(o) && 0 === o.length) return (e.enabled = !1), e; a("preservegaps"), a("operation"), a("value"); var s = i.getComponentMethod( "calendars", "handleDefaults", ); s(t, e, "valuecalendar", null), s(t, e, "targetcalendar", null); } return e; }), (r.calcTransform = function (t, e, r) { if (r.enabled) { var i = n.getTargetArray(e, r); if (i) { var s = r.target, f = i.length; e._length && (f = Math.min(f, e._length)); var h = r.targetcalendar, p = e._arrayAttrs, d = r.preservegaps; if ("string" == typeof s) { var m = n.nestedProperty(e, s + "calendar").get(); m && (h = m); } var g, v, y = (function (t, e, r) { var n = t.operation, i = t.value, a = Array.isArray(i); function o(t) { return -1 !== t.indexOf(n); } var s, f = function (r) { return e(r, 0, t.valuecalendar); }, h = function (t) { return e(t, 0, r); }; o(l) ? (s = f(a ? i[0] : i)) : o(c) ? (s = a ? [f(i[0]), f(i[1])] : [f(i), f(i)]) : o(u) && (s = a ? i.map(f) : [f(i)]); switch (n) { case "=": return function (t) { return h(t) === s; }; case "!=": return function (t) { return h(t) !== s; }; case "<": return function (t) { return h(t) < s; }; case "<=": return function (t) { return h(t) <= s; }; case ">": return function (t) { return h(t) > s; }; case ">=": return function (t) { return h(t) >= s; }; case "[]": return function (t) { var e = h(t); return e >= s[0] && e <= s[1]; }; case "()": return function (t) { var e = h(t); return e > s[0] && e < s[1]; }; case "[)": return function (t) { var e = h(t); return e >= s[0] && e < s[1]; }; case "(]": return function (t) { var e = h(t); return e > s[0] && e <= s[1]; }; case "][": return function (t) { var e = h(t); return e <= s[0] || e >= s[1]; }; case ")(": return function (t) { var e = h(t); return e < s[0] || e > s[1]; }; case "](": return function (t) { var e = h(t); return e <= s[0] || e > s[1]; }; case ")[": return function (t) { var e = h(t); return e < s[0] || e >= s[1]; }; case "{}": return function (t) { return -1 !== s.indexOf(h(t)); }; case "}{": return function (t) { return -1 === s.indexOf(h(t)); }; } })(r, a.getDataToCoordFunc(t, e, s, i), h), x = {}, b = {}, _ = 0; d ? ((g = function (t) { (x[t.astr] = n.extendDeep([], t.get())), t.set(new Array(f)); }), (v = function (t, e) { var r = x[t.astr][e]; t.get()[e] = r; })) : ((g = function (t) { (x[t.astr] = n.extendDeep([], t.get())), t.set([]); }), (v = function (t, e) { var r = x[t.astr][e]; t.get().push(r); })), k(g); for (var w = o(e.transforms, r), T = 0; T < f; T++) { y(i[T]) ? (k(v, T), (b[_++] = w(T))) : d && _++; } (r._indexToPoints = b), (e._length = _); } } function k(t, r) { for (var i = 0; i < p.length; i++) { t(n.nestedProperty(e, p[i]), r); } } }); }, { "../constants/filter_ops": 487, "../lib": 515, "../plots/cartesian/axes": 566, "../registry": 647, "./helpers": 1130, }, ], 1129: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("../plot_api/plot_schema"), a = t("../plots/plots"), o = t("./helpers").pointsAccessorFunction; function s(t, e) { var r, s, l, c, u, f, h, p, d, m, g = e.transform, v = e.transformIndex, y = t.transforms[v].groups, x = o(t.transforms, g); if (!n.isArrayOrTypedArray(y) || 0 === y.length) return [t]; var b = n.filterUnique(y), _ = new Array(b.length), w = y.length, T = i.findArrayAttributes(t), k = g.styles || [], A = {}; for (r = 0; r < k.length; r++) A[k[r].target] = k[r].value; g.styles && (m = n.keyedContainer( g, "styles", "target", "value.name", )); var M = {}, S = {}; for (r = 0; r < b.length; r++) { (M[(f = b[r])] = r), (S[f] = 0), ((h = _[r] = n.extendDeepNoArrays({}, t))._group = f), (h.transforms[v]._indexToPoints = {}); var E = null; for ( m && (E = m.get(f)), h.name = E || "" === E ? E : n.templateString(g.nameformat, { trace: t.name, group: f, }), p = h.transforms, h.transforms = [], s = 0; s < p.length; s++ ) h.transforms[s] = n.extendDeepNoArrays({}, p[s]); for (s = 0; s < T.length; s++) n.nestedProperty(h, T[s]).set([]); } for (l = 0; l < T.length; l++) { for (c = T[l], s = 0, d = []; s < b.length; s++) d[s] = n.nestedProperty(_[s], c).get(); for (u = n.nestedProperty(t, c).get(), s = 0; s < w; s++) d[M[y[s]]].push(u[s]); } for (s = 0; s < w; s++) { ((h = _[M[y[s]]]).transforms[v]._indexToPoints[S[y[s]]] = x(s)), S[y[s]]++; } for (r = 0; r < b.length; r++) (f = b[r]), (h = _[r]), a.clearExpandedTraceDefaultColors(h), (h = n.extendDeepNoArrays(h, A[f] || {})); return _; } (r.moduleType = "transform"), (r.name = "groupby"), (r.attributes = { enabled: { valType: "boolean", dflt: !0, editType: "calc", }, groups: { valType: "data_array", dflt: [], editType: "calc", }, nameformat: { valType: "string", editType: "calc" }, styles: { _isLinkedToArray: "style", target: { valType: "string", editType: "calc" }, value: { valType: "any", dflt: {}, editType: "calc", _compareAsJSON: !0, }, editType: "calc", }, editType: "calc", }), (r.supplyDefaults = function (t, e, i) { var a, o = {}; function s(e, i) { return n.coerce(t, o, r.attributes, e, i); } if (!s("enabled")) return o; s("groups"), s( "nameformat", i._dataLength > 1 ? "%{group} (%{trace})" : "%{group}", ); var l = t.styles, c = (o.styles = []); if (l) for (a = 0; a < l.length; a++) { var u = (c[a] = {}); n.coerce(l[a], c[a], r.attributes.styles, "target"); var f = n.coerce( l[a], c[a], r.attributes.styles, "value", ); n.isPlainObject(f) ? (u.value = n.extendDeep({}, f)) : f && delete u.value; } return o; }), (r.transform = function (t, e) { var r, n, i, a = []; for (n = 0; n < t.length; n++) for (r = s(t[n], e), i = 0; i < r.length; i++) a.push(r[i]); return a; }); }, { "../lib": 515, "../plot_api/plot_schema": 554, "../plots/plots": 628, "./helpers": 1130, }, ], 1130: [ function (t, e, r) { "use strict"; r.pointsAccessorFunction = function (t, e) { for (var r, n, i = 0; i < t.length && (r = t[i]) !== e; i++) r._indexToPoints && !1 !== r.enabled && (n = r._indexToPoints); return n ? function (t) { return n[t]; } : function (t) { return [t]; }; }; }, {}, ], 1131: [ function (t, e, r) { "use strict"; var n = t("../lib"), i = t("../plots/cartesian/axes"), a = t("./helpers").pointsAccessorFunction, o = t("../constants/numerical").BADNUM; (r.moduleType = "transform"), (r.name = "sort"), (r.attributes = { enabled: { valType: "boolean", dflt: !0, editType: "calc", }, target: { valType: "string", strict: !0, noBlank: !0, arrayOk: !0, dflt: "x", editType: "calc", }, order: { valType: "enumerated", values: ["ascending", "descending"], dflt: "ascending", editType: "calc", }, editType: "calc", }), (r.supplyDefaults = function (t) { var e = {}; function i(i, a) { return n.coerce(t, e, r.attributes, i, a); } return i("enabled") && (i("target"), i("order")), e; }), (r.calcTransform = function (t, e, r) { if (r.enabled) { var s = n.getTargetArray(e, r); if (s) { var l = r.target, c = s.length; e._length && (c = Math.min(c, e._length)); var u, f, h = e._arrayAttrs, p = (function (t, e, r, n) { var i, a = new Array(n), s = new Array(n); for (i = 0; i < n; i++) a[i] = { v: e[i], i: i }; for ( a.sort( (function (t, e) { switch (t.order) { case "ascending": return function (t, r) { var n = e(t.v), i = e(r.v); return n === o ? 1 : i === o ? -1 : n - i; }; case "descending": return function (t, r) { var n = e(t.v), i = e(r.v); return n === o ? 1 : i === o ? -1 : i - n; }; } })(t, r), ), i = 0; i < n; i++ ) s[i] = a[i].i; return s; })(r, s, i.getDataToCoordFunc(t, e, l, s), c), d = a(e.transforms, r), m = {}; for (u = 0; u < h.length; u++) { var g = n.nestedProperty(e, h[u]), v = g.get(), y = new Array(c); for (f = 0; f < c; f++) y[f] = v[p[f]]; g.set(y); } for (f = 0; f < c; f++) m[f] = d(p[f]); (r._indexToPoints = m), (e._length = c); } } }); }, { "../constants/numerical": 491, "../lib": 515, "../plots/cartesian/axes": 566, "./helpers": 1130, }, ], 1132: [ function (t, e, r) { "use strict"; r.version = "2.16.1"; }, {}, ], 1133: [ function (t, e, r) { (function (n) { (function () { !(function (t) { "object" == typeof r && void 0 !== e ? (e.exports = t()) : (("undefined" != typeof window ? window : void 0 !== n ? n : "undefined" != typeof self ? self : this ).stackgl = t()); })(function () { return (function e(r, n, i) { function a(s, l) { if (!n[s]) { if (!r[s]) { var c = "function" == typeof t && t; if (!l && c) return c(s, !0); if (o) return o(s, !0); var u = new Error( "Cannot find module '" + s + "'", ); throw ((u.code = "MODULE_NOT_FOUND"), u); } var f = (n[s] = { exports: {} }); r[s][0].call( f.exports, function (t) { return a(r[s][1][t] || t); }, f, f.exports, e, r, n, i, ); } return n[s].exports; } for ( var o = "function" == typeof t && t, s = 0; s < i.length; s++ ) a(i[s]); return a; })( { 1: [ function (t, e, r) { "use strict"; (r.byteLength = function (t) { var e = c(t), r = e[0], n = e[1]; return (3 * (r + n)) / 4 - n; }), (r.toByteArray = function (t) { var e, r, n = c(t), o = n[0], s = n[1], l = new a( (function (t, e, r) { return (3 * (e + r)) / 4 - r; })(0, o, s), ), u = 0, f = s > 0 ? o - 4 : o; for (r = 0; r < f; r += 4) (e = (i[t.charCodeAt(r)] << 18) | (i[t.charCodeAt(r + 1)] << 12) | (i[t.charCodeAt(r + 2)] << 6) | i[t.charCodeAt(r + 3)]), (l[u++] = (e >> 16) & 255), (l[u++] = (e >> 8) & 255), (l[u++] = 255 & e); 2 === s && ((e = (i[t.charCodeAt(r)] << 2) | (i[t.charCodeAt(r + 1)] >> 4)), (l[u++] = 255 & e)); 1 === s && ((e = (i[t.charCodeAt(r)] << 10) | (i[t.charCodeAt(r + 1)] << 4) | (i[t.charCodeAt(r + 2)] >> 2)), (l[u++] = (e >> 8) & 255), (l[u++] = 255 & e)); return l; }), (r.fromByteArray = function (t) { for ( var e, r = t.length, i = r % 3, a = [], o = 0, s = r - i; o < s; o += 16383 ) a.push( u(t, o, o + 16383 > s ? s : o + 16383), ); 1 === i ? ((e = t[r - 1]), a.push( n[e >> 2] + n[(e << 4) & 63] + "==", )) : 2 === i && ((e = (t[r - 2] << 8) + t[r - 1]), a.push( n[e >> 10] + n[(e >> 4) & 63] + n[(e << 2) & 63] + "=", )); return a.join(""); }); for ( var n = [], i = [], a = "undefined" != typeof Uint8Array ? Uint8Array : Array, o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0, l = o.length; s < l; ++s ) (n[s] = o[s]), (i[o.charCodeAt(s)] = s); function c(t) { var e = t.length; if (e % 4 > 0) throw new Error( "Invalid string. Length must be a multiple of 4", ); var r = t.indexOf("="); return ( -1 === r && (r = e), [r, r === e ? 0 : 4 - (r % 4)] ); } function u(t, e, r) { for (var i, a, o = [], s = e; s < r; s += 3) (i = ((t[s] << 16) & 16711680) + ((t[s + 1] << 8) & 65280) + (255 & t[s + 2])), o.push( n[((a = i) >> 18) & 63] + n[(a >> 12) & 63] + n[(a >> 6) & 63] + n[63 & a], ); return o.join(""); } (i["-".charCodeAt(0)] = 62), (i["_".charCodeAt(0)] = 63); }, {}, ], 2: [function (t, e, r) {}, {}], 3: [ function (t, e, r) { (function (e) { (function () { /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ "use strict"; var e = t("base64-js"), n = t("ieee754"); (r.Buffer = a), (r.SlowBuffer = function (t) { +t != t && (t = 0); return a.alloc(+t); }), (r.INSPECT_MAX_BYTES = 50); function i(t) { if (t > 2147483647) throw new RangeError( 'The value "' + t + '" is invalid for option "size"', ); var e = new Uint8Array(t); return (e.__proto__ = a.prototype), e; } function a(t, e, r) { if ("number" == typeof t) { if ("string" == typeof e) throw new TypeError( 'The "string" argument must be of type string. Received type number', ); return l(t); } return o(t, e, r); } function o(t, e, r) { if ("string" == typeof t) return (function (t, e) { ("string" == typeof e && "" !== e) || (e = "utf8"); if (!a.isEncoding(e)) throw new TypeError( "Unknown encoding: " + e, ); var r = 0 | f(t, e), n = i(r), o = n.write(t, e); o !== r && (n = n.slice(0, o)); return n; })(t, e); if (ArrayBuffer.isView(t)) return c(t); if (null == t) throw TypeError( "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t, ); if ( B(t, ArrayBuffer) || (t && B(t.buffer, ArrayBuffer)) ) return (function (t, e, r) { if (e < 0 || t.byteLength < e) throw new RangeError( '"offset" is outside of buffer bounds', ); if (t.byteLength < e + (r || 0)) throw new RangeError( '"length" is outside of buffer bounds', ); var n; n = void 0 === e && void 0 === r ? new Uint8Array(t) : void 0 === r ? new Uint8Array(t, e) : new Uint8Array(t, e, r); return (n.__proto__ = a.prototype), n; })(t, e, r); if ("number" == typeof t) throw new TypeError( 'The "value" argument must not be of type number. Received type number', ); var n = t.valueOf && t.valueOf(); if (null != n && n !== t) return a.from(n, e, r); var o = (function (t) { if (a.isBuffer(t)) { var e = 0 | u(t.length), r = i(e); return ( 0 === r.length || t.copy(r, 0, 0, e), r ); } if (void 0 !== t.length) return "number" != typeof t.length || N(t.length) ? i(0) : c(t); if ( "Buffer" === t.type && Array.isArray(t.data) ) return c(t.data); })(t); if (o) return o; if ( "undefined" != typeof Symbol && null != Symbol.toPrimitive && "function" == typeof t[Symbol.toPrimitive] ) return a.from( t[Symbol.toPrimitive]("string"), e, r, ); throw new TypeError( "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t, ); } function s(t) { if ("number" != typeof t) throw new TypeError( '"size" argument must be of type number', ); if (t < 0) throw new RangeError( 'The value "' + t + '" is invalid for option "size"', ); } function l(t) { return s(t), i(t < 0 ? 0 : 0 | u(t)); } function c(t) { for ( var e = t.length < 0 ? 0 : 0 | u(t.length), r = i(e), n = 0; n < e; n += 1 ) r[n] = 255 & t[n]; return r; } function u(t) { if (t >= 2147483647) throw new RangeError( "Attempt to allocate Buffer larger than maximum size: 0x" + (2147483647).toString(16) + " bytes", ); return 0 | t; } function f(t, e) { if (a.isBuffer(t)) return t.length; if ( ArrayBuffer.isView(t) || B(t, ArrayBuffer) ) return t.byteLength; if ("string" != typeof t) throw new TypeError( 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof t, ); var r = t.length, n = arguments.length > 2 && !0 === arguments[2]; if (!n && 0 === r) return 0; for (var i = !1; ; ) switch (e) { case "ascii": case "latin1": case "binary": return r; case "utf8": case "utf-8": return D(t).length; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return 2 * r; case "hex": return r >>> 1; case "base64": return R(t).length; default: if (i) return n ? -1 : D(t).length; (e = ("" + e).toLowerCase()), (i = !0); } } function h(t, e, r) { var n = !1; if ( ((void 0 === e || e < 0) && (e = 0), e > this.length) ) return ""; if ( ((void 0 === r || r > this.length) && (r = this.length), r <= 0) ) return ""; if ((r >>>= 0) <= (e >>>= 0)) return ""; for (t || (t = "utf8"); ; ) switch (t) { case "hex": return M(this, e, r); case "utf8": case "utf-8": return T(this, e, r); case "ascii": return k(this, e, r); case "latin1": case "binary": return A(this, e, r); case "base64": return w(this, e, r); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return S(this, e, r); default: if (n) throw new TypeError( "Unknown encoding: " + t, ); (t = (t + "").toLowerCase()), (n = !0); } } function p(t, e, r) { var n = t[e]; (t[e] = t[r]), (t[r] = n); } function d(t, e, r, n, i) { if (0 === t.length) return -1; if ( ("string" == typeof r ? ((n = r), (r = 0)) : r > 2147483647 ? (r = 2147483647) : r < -2147483648 && (r = -2147483648), N((r = +r)) && (r = i ? 0 : t.length - 1), r < 0 && (r = t.length + r), r >= t.length) ) { if (i) return -1; r = t.length - 1; } else if (r < 0) { if (!i) return -1; r = 0; } if ( ("string" == typeof e && (e = a.from(e, n)), a.isBuffer(e)) ) return 0 === e.length ? -1 : m(t, e, r, n, i); if ("number" == typeof e) return ( (e &= 255), "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call( t, e, r, ) : Uint8Array.prototype.lastIndexOf.call( t, e, r, ) : m(t, [e], r, n, i) ); throw new TypeError( "val must be string, number or Buffer", ); } function m(t, e, r, n, i) { var a, o = 1, s = t.length, l = e.length; if ( void 0 !== n && ("ucs2" === (n = String(n).toLowerCase()) || "ucs-2" === n || "utf16le" === n || "utf-16le" === n) ) { if (t.length < 2 || e.length < 2) return -1; (o = 2), (s /= 2), (l /= 2), (r /= 2); } function c(t, e) { return 1 === o ? t[e] : t.readUInt16BE(e * o); } if (i) { var u = -1; for (a = r; a < s; a++) if ( c(t, a) === c(e, -1 === u ? 0 : a - u) ) { if ( (-1 === u && (u = a), a - u + 1 === l) ) return u * o; } else -1 !== u && (a -= a - u), (u = -1); } else for ( r + l > s && (r = s - l), a = r; a >= 0; a-- ) { for (var f = !0, h = 0; h < l; h++) if (c(t, a + h) !== c(e, h)) { f = !1; break; } if (f) return a; } return -1; } function g(t, e, r, n) { r = Number(r) || 0; var i = t.length - r; n ? (n = Number(n)) > i && (n = i) : (n = i); var a = e.length; n > a / 2 && (n = a / 2); for (var o = 0; o < n; ++o) { var s = parseInt( e.substr(2 * o, 2), 16, ); if (N(s)) return o; t[r + o] = s; } return o; } function v(t, e, r, n) { return F(D(e, t.length - r), t, r, n); } function y(t, e, r, n) { return F( (function (t) { for ( var e = [], r = 0; r < t.length; ++r ) e.push(255 & t.charCodeAt(r)); return e; })(e), t, r, n, ); } function x(t, e, r, n) { return y(t, e, r, n); } function b(t, e, r, n) { return F(R(e), t, r, n); } function _(t, e, r, n) { return F( (function (t, e) { for ( var r, n, i, a = [], o = 0; o < t.length && !((e -= 2) < 0); ++o ) (r = t.charCodeAt(o)), (n = r >> 8), (i = r % 256), a.push(i), a.push(n); return a; })(e, t.length - r), t, r, n, ); } function w(t, r, n) { return 0 === r && n === t.length ? e.fromByteArray(t) : e.fromByteArray(t.slice(r, n)); } function T(t, e, r) { r = Math.min(t.length, r); for (var n = [], i = e; i < r; ) { var a, o, s, l, c = t[i], u = null, f = c > 239 ? 4 : c > 223 ? 3 : c > 191 ? 2 : 1; if (i + f <= r) switch (f) { case 1: c < 128 && (u = c); break; case 2: 128 == (192 & (a = t[i + 1])) && (l = ((31 & c) << 6) | (63 & a)) > 127 && (u = l); break; case 3: (a = t[i + 1]), (o = t[i + 2]), 128 == (192 & a) && 128 == (192 & o) && (l = ((15 & c) << 12) | ((63 & a) << 6) | (63 & o)) > 2047 && (l < 55296 || l > 57343) && (u = l); break; case 4: (a = t[i + 1]), (o = t[i + 2]), (s = t[i + 3]), 128 == (192 & a) && 128 == (192 & o) && 128 == (192 & s) && (l = ((15 & c) << 18) | ((63 & a) << 12) | ((63 & o) << 6) | (63 & s)) > 65535 && l < 1114112 && (u = l); } null === u ? ((u = 65533), (f = 1)) : u > 65535 && ((u -= 65536), n.push(((u >>> 10) & 1023) | 55296), (u = 56320 | (1023 & u))), n.push(u), (i += f); } return (function (t) { var e = t.length; if (e <= 4096) return String.fromCharCode.apply( String, t, ); var r = "", n = 0; for (; n < e; ) r += String.fromCharCode.apply( String, t.slice(n, (n += 4096)), ); return r; })(n); } (r.kMaxLength = 2147483647), (a.TYPED_ARRAY_SUPPORT = (function () { try { var t = new Uint8Array(1); return ( (t.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42; }, }), 42 === t.foo() ); } catch (t) { return !1; } })()), a.TYPED_ARRAY_SUPPORT || "undefined" == typeof console || "function" != typeof console.error || console.error( "This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.", ), Object.defineProperty( a.prototype, "parent", { enumerable: !0, get: function () { if (a.isBuffer(this)) return this.buffer; }, }, ), Object.defineProperty( a.prototype, "offset", { enumerable: !0, get: function () { if (a.isBuffer(this)) return this.byteOffset; }, }, ), "undefined" != typeof Symbol && null != Symbol.species && a[Symbol.species] === a && Object.defineProperty( a, Symbol.species, { value: null, configurable: !0, enumerable: !1, writable: !1, }, ), (a.poolSize = 8192), (a.from = function (t, e, r) { return o(t, e, r); }), (a.prototype.__proto__ = Uint8Array.prototype), (a.__proto__ = Uint8Array), (a.alloc = function (t, e, r) { return (function (t, e, r) { return ( s(t), t <= 0 ? i(t) : void 0 !== e ? "string" == typeof r ? i(t).fill(e, r) : i(t).fill(e) : i(t) ); })(t, e, r); }), (a.allocUnsafe = function (t) { return l(t); }), (a.allocUnsafeSlow = function (t) { return l(t); }), (a.isBuffer = function (t) { return ( null != t && !0 === t._isBuffer && t !== a.prototype ); }), (a.compare = function (t, e) { if ( (B(t, Uint8Array) && (t = a.from( t, t.offset, t.byteLength, )), B(e, Uint8Array) && (e = a.from( e, e.offset, e.byteLength, )), !a.isBuffer(t) || !a.isBuffer(e)) ) throw new TypeError( 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array', ); if (t === e) return 0; for ( var r = t.length, n = e.length, i = 0, o = Math.min(r, n); i < o; ++i ) if (t[i] !== e[i]) { (r = t[i]), (n = e[i]); break; } return r < n ? -1 : n < r ? 1 : 0; }), (a.isEncoding = function (t) { switch (String(t).toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "latin1": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return !0; default: return !1; } }), (a.concat = function (t, e) { if (!Array.isArray(t)) throw new TypeError( '"list" argument must be an Array of Buffers', ); if (0 === t.length) return a.alloc(0); var r; if (void 0 === e) for (e = 0, r = 0; r < t.length; ++r) e += t[r].length; var n = a.allocUnsafe(e), i = 0; for (r = 0; r < t.length; ++r) { var o = t[r]; if ( (B(o, Uint8Array) && (o = a.from(o)), !a.isBuffer(o)) ) throw new TypeError( '"list" argument must be an Array of Buffers', ); o.copy(n, i), (i += o.length); } return n; }), (a.byteLength = f), (a.prototype._isBuffer = !0), (a.prototype.swap16 = function () { var t = this.length; if (t % 2 != 0) throw new RangeError( "Buffer size must be a multiple of 16-bits", ); for (var e = 0; e < t; e += 2) p(this, e, e + 1); return this; }), (a.prototype.swap32 = function () { var t = this.length; if (t % 4 != 0) throw new RangeError( "Buffer size must be a multiple of 32-bits", ); for (var e = 0; e < t; e += 4) p(this, e, e + 3), p(this, e + 1, e + 2); return this; }), (a.prototype.swap64 = function () { var t = this.length; if (t % 8 != 0) throw new RangeError( "Buffer size must be a multiple of 64-bits", ); for (var e = 0; e < t; e += 8) p(this, e, e + 7), p(this, e + 1, e + 6), p(this, e + 2, e + 5), p(this, e + 3, e + 4); return this; }), (a.prototype.toString = function () { var t = this.length; return 0 === t ? "" : 0 === arguments.length ? T(this, 0, t) : h.apply(this, arguments); }), (a.prototype.toLocaleString = a.prototype.toString), (a.prototype.equals = function (t) { if (!a.isBuffer(t)) throw new TypeError( "Argument must be a Buffer", ); return ( this === t || 0 === a.compare(this, t) ); }), (a.prototype.inspect = function () { var t = "", e = r.INSPECT_MAX_BYTES; return ( (t = this.toString("hex", 0, e) .replace(/(.{2})/g, "$1 ") .trim()), this.length > e && (t += " ... "), "" ); }), (a.prototype.compare = function ( t, e, r, n, i, ) { if ( (B(t, Uint8Array) && (t = a.from( t, t.offset, t.byteLength, )), !a.isBuffer(t)) ) throw new TypeError( 'The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof t, ); if ( (void 0 === e && (e = 0), void 0 === r && (r = t ? t.length : 0), void 0 === n && (n = 0), void 0 === i && (i = this.length), e < 0 || r > t.length || n < 0 || i > this.length) ) throw new RangeError( "out of range index", ); if (n >= i && e >= r) return 0; if (n >= i) return -1; if (e >= r) return 1; if (this === t) return 0; for ( var o = (i >>>= 0) - (n >>>= 0), s = (r >>>= 0) - (e >>>= 0), l = Math.min(o, s), c = this.slice(n, i), u = t.slice(e, r), f = 0; f < l; ++f ) if (c[f] !== u[f]) { (o = c[f]), (s = u[f]); break; } return o < s ? -1 : s < o ? 1 : 0; }), (a.prototype.includes = function ( t, e, r, ) { return -1 !== this.indexOf(t, e, r); }), (a.prototype.indexOf = function ( t, e, r, ) { return d(this, t, e, r, !0); }), (a.prototype.lastIndexOf = function ( t, e, r, ) { return d(this, t, e, r, !1); }), (a.prototype.write = function ( t, e, r, n, ) { if (void 0 === e) (n = "utf8"), (r = this.length), (e = 0); else if ( void 0 === r && "string" == typeof e ) (n = e), (r = this.length), (e = 0); else { if (!isFinite(e)) throw new Error( "Buffer.write(string, encoding, offset[, length]) is no longer supported", ); (e >>>= 0), isFinite(r) ? ((r >>>= 0), void 0 === n && (n = "utf8")) : ((n = r), (r = void 0)); } var i = this.length - e; if ( ((void 0 === r || r > i) && (r = i), (t.length > 0 && (r < 0 || e < 0)) || e > this.length) ) throw new RangeError( "Attempt to write outside buffer bounds", ); n || (n = "utf8"); for (var a = !1; ; ) switch (n) { case "hex": return g(this, t, e, r); case "utf8": case "utf-8": return v(this, t, e, r); case "ascii": return y(this, t, e, r); case "latin1": case "binary": return x(this, t, e, r); case "base64": return b(this, t, e, r); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return _(this, t, e, r); default: if (a) throw new TypeError( "Unknown encoding: " + n, ); (n = ("" + n).toLowerCase()), (a = !0); } }), (a.prototype.toJSON = function () { return { type: "Buffer", data: Array.prototype.slice.call( this._arr || this, 0, ), }; }); function k(t, e, r) { var n = ""; r = Math.min(t.length, r); for (var i = e; i < r; ++i) n += String.fromCharCode(127 & t[i]); return n; } function A(t, e, r) { var n = ""; r = Math.min(t.length, r); for (var i = e; i < r; ++i) n += String.fromCharCode(t[i]); return n; } function M(t, e, r) { var n = t.length; (!e || e < 0) && (e = 0), (!r || r < 0 || r > n) && (r = n); for (var i = "", a = e; a < r; ++a) i += z(t[a]); return i; } function S(t, e, r) { for ( var n = t.slice(e, r), i = "", a = 0; a < n.length; a += 2 ) i += String.fromCharCode( n[a] + 256 * n[a + 1], ); return i; } function E(t, e, r) { if (t % 1 != 0 || t < 0) throw new RangeError( "offset is not uint", ); if (t + e > r) throw new RangeError( "Trying to access beyond buffer length", ); } function L(t, e, r, n, i, o) { if (!a.isBuffer(t)) throw new TypeError( '"buffer" argument must be a Buffer instance', ); if (e > i || e < o) throw new RangeError( '"value" argument is out of bounds', ); if (r + n > t.length) throw new RangeError( "Index out of range", ); } function C(t, e, r, n, i, a) { if (r + n > t.length) throw new RangeError( "Index out of range", ); if (r < 0) throw new RangeError( "Index out of range", ); } function P(t, e, r, i, a) { return ( (e = +e), (r >>>= 0), a || C(t, 0, r, 4), n.write(t, e, r, i, 23, 4), r + 4 ); } function I(t, e, r, i, a) { return ( (e = +e), (r >>>= 0), a || C(t, 0, r, 8), n.write(t, e, r, i, 52, 8), r + 8 ); } (a.prototype.slice = function (t, e) { var r = this.length; (t = ~~t) < 0 ? (t += r) < 0 && (t = 0) : t > r && (t = r), (e = void 0 === e ? r : ~~e) < 0 ? (e += r) < 0 && (e = 0) : e > r && (e = r), e < t && (e = t); var n = this.subarray(t, e); return (n.__proto__ = a.prototype), n; }), (a.prototype.readUIntLE = function ( t, e, r, ) { (t >>>= 0), (e >>>= 0), r || E(t, e, this.length); for ( var n = this[t], i = 1, a = 0; ++a < e && (i *= 256); ) n += this[t + a] * i; return n; }), (a.prototype.readUIntBE = function ( t, e, r, ) { (t >>>= 0), (e >>>= 0), r || E(t, e, this.length); for ( var n = this[t + --e], i = 1; e > 0 && (i *= 256); ) n += this[t + --e] * i; return n; }), (a.prototype.readUInt8 = function (t, e) { return ( (t >>>= 0), e || E(t, 1, this.length), this[t] ); }), (a.prototype.readUInt16LE = function ( t, e, ) { return ( (t >>>= 0), e || E(t, 2, this.length), this[t] | (this[t + 1] << 8) ); }), (a.prototype.readUInt16BE = function ( t, e, ) { return ( (t >>>= 0), e || E(t, 2, this.length), (this[t] << 8) | this[t + 1] ); }), (a.prototype.readUInt32LE = function ( t, e, ) { return ( (t >>>= 0), e || E(t, 4, this.length), (this[t] | (this[t + 1] << 8) | (this[t + 2] << 16)) + 16777216 * this[t + 3] ); }), (a.prototype.readUInt32BE = function ( t, e, ) { return ( (t >>>= 0), e || E(t, 4, this.length), 16777216 * this[t] + ((this[t + 1] << 16) | (this[t + 2] << 8) | this[t + 3]) ); }), (a.prototype.readIntLE = function ( t, e, r, ) { (t >>>= 0), (e >>>= 0), r || E(t, e, this.length); for ( var n = this[t], i = 1, a = 0; ++a < e && (i *= 256); ) n += this[t + a] * i; return ( n >= (i *= 128) && (n -= Math.pow(2, 8 * e)), n ); }), (a.prototype.readIntBE = function ( t, e, r, ) { (t >>>= 0), (e >>>= 0), r || E(t, e, this.length); for ( var n = e, i = 1, a = this[t + --n]; n > 0 && (i *= 256); ) a += this[t + --n] * i; return ( a >= (i *= 128) && (a -= Math.pow(2, 8 * e)), a ); }), (a.prototype.readInt8 = function (t, e) { return ( (t >>>= 0), e || E(t, 1, this.length), 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t] ); }), (a.prototype.readInt16LE = function ( t, e, ) { (t >>>= 0), e || E(t, 2, this.length); var r = this[t] | (this[t + 1] << 8); return 32768 & r ? 4294901760 | r : r; }), (a.prototype.readInt16BE = function ( t, e, ) { (t >>>= 0), e || E(t, 2, this.length); var r = this[t + 1] | (this[t] << 8); return 32768 & r ? 4294901760 | r : r; }), (a.prototype.readInt32LE = function ( t, e, ) { return ( (t >>>= 0), e || E(t, 4, this.length), this[t] | (this[t + 1] << 8) | (this[t + 2] << 16) | (this[t + 3] << 24) ); }), (a.prototype.readInt32BE = function ( t, e, ) { return ( (t >>>= 0), e || E(t, 4, this.length), (this[t] << 24) | (this[t + 1] << 16) | (this[t + 2] << 8) | this[t + 3] ); }), (a.prototype.readFloatLE = function ( t, e, ) { return ( (t >>>= 0), e || E(t, 4, this.length), n.read(this, t, !0, 23, 4) ); }), (a.prototype.readFloatBE = function ( t, e, ) { return ( (t >>>= 0), e || E(t, 4, this.length), n.read(this, t, !1, 23, 4) ); }), (a.prototype.readDoubleLE = function ( t, e, ) { return ( (t >>>= 0), e || E(t, 8, this.length), n.read(this, t, !0, 52, 8) ); }), (a.prototype.readDoubleBE = function ( t, e, ) { return ( (t >>>= 0), e || E(t, 8, this.length), n.read(this, t, !1, 52, 8) ); }), (a.prototype.writeUIntLE = function ( t, e, r, n, ) { ((t = +t), (e >>>= 0), (r >>>= 0), n) || L( this, t, e, r, Math.pow(2, 8 * r) - 1, 0, ); var i = 1, a = 0; for ( this[e] = 255 & t; ++a < r && (i *= 256); ) this[e + a] = (t / i) & 255; return e + r; }), (a.prototype.writeUIntBE = function ( t, e, r, n, ) { ((t = +t), (e >>>= 0), (r >>>= 0), n) || L( this, t, e, r, Math.pow(2, 8 * r) - 1, 0, ); var i = r - 1, a = 1; for ( this[e + i] = 255 & t; --i >= 0 && (a *= 256); ) this[e + i] = (t / a) & 255; return e + r; }), (a.prototype.writeUInt8 = function ( t, e, r, ) { return ( (t = +t), (e >>>= 0), r || L(this, t, e, 1, 255, 0), (this[e] = 255 & t), e + 1 ); }), (a.prototype.writeUInt16LE = function ( t, e, r, ) { return ( (t = +t), (e >>>= 0), r || L(this, t, e, 2, 65535, 0), (this[e] = 255 & t), (this[e + 1] = t >>> 8), e + 2 ); }), (a.prototype.writeUInt16BE = function ( t, e, r, ) { return ( (t = +t), (e >>>= 0), r || L(this, t, e, 2, 65535, 0), (this[e] = t >>> 8), (this[e + 1] = 255 & t), e + 2 ); }), (a.prototype.writeUInt32LE = function ( t, e, r, ) { return ( (t = +t), (e >>>= 0), r || L(this, t, e, 4, 4294967295, 0), (this[e + 3] = t >>> 24), (this[e + 2] = t >>> 16), (this[e + 1] = t >>> 8), (this[e] = 255 & t), e + 4 ); }), (a.prototype.writeUInt32BE = function ( t, e, r, ) { return ( (t = +t), (e >>>= 0), r || L(this, t, e, 4, 4294967295, 0), (this[e] = t >>> 24), (this[e + 1] = t >>> 16), (this[e + 2] = t >>> 8), (this[e + 3] = 255 & t), e + 4 ); }), (a.prototype.writeIntLE = function ( t, e, r, n, ) { if (((t = +t), (e >>>= 0), !n)) { var i = Math.pow(2, 8 * r - 1); L(this, t, e, r, i - 1, -i); } var a = 0, o = 1, s = 0; for ( this[e] = 255 & t; ++a < r && (o *= 256); ) t < 0 && 0 === s && 0 !== this[e + a - 1] && (s = 1), (this[e + a] = (((t / o) >> 0) - s) & 255); return e + r; }), (a.prototype.writeIntBE = function ( t, e, r, n, ) { if (((t = +t), (e >>>= 0), !n)) { var i = Math.pow(2, 8 * r - 1); L(this, t, e, r, i - 1, -i); } var a = r - 1, o = 1, s = 0; for ( this[e + a] = 255 & t; --a >= 0 && (o *= 256); ) t < 0 && 0 === s && 0 !== this[e + a + 1] && (s = 1), (this[e + a] = (((t / o) >> 0) - s) & 255); return e + r; }), (a.prototype.writeInt8 = function ( t, e, r, ) { return ( (t = +t), (e >>>= 0), r || L(this, t, e, 1, 127, -128), t < 0 && (t = 255 + t + 1), (this[e] = 255 & t), e + 1 ); }), (a.prototype.writeInt16LE = function ( t, e, r, ) { return ( (t = +t), (e >>>= 0), r || L(this, t, e, 2, 32767, -32768), (this[e] = 255 & t), (this[e + 1] = t >>> 8), e + 2 ); }), (a.prototype.writeInt16BE = function ( t, e, r, ) { return ( (t = +t), (e >>>= 0), r || L(this, t, e, 2, 32767, -32768), (this[e] = t >>> 8), (this[e + 1] = 255 & t), e + 2 ); }), (a.prototype.writeInt32LE = function ( t, e, r, ) { return ( (t = +t), (e >>>= 0), r || L( this, t, e, 4, 2147483647, -2147483648, ), (this[e] = 255 & t), (this[e + 1] = t >>> 8), (this[e + 2] = t >>> 16), (this[e + 3] = t >>> 24), e + 4 ); }), (a.prototype.writeInt32BE = function ( t, e, r, ) { return ( (t = +t), (e >>>= 0), r || L( this, t, e, 4, 2147483647, -2147483648, ), t < 0 && (t = 4294967295 + t + 1), (this[e] = t >>> 24), (this[e + 1] = t >>> 16), (this[e + 2] = t >>> 8), (this[e + 3] = 255 & t), e + 4 ); }), (a.prototype.writeFloatLE = function ( t, e, r, ) { return P(this, t, e, !0, r); }), (a.prototype.writeFloatBE = function ( t, e, r, ) { return P(this, t, e, !1, r); }), (a.prototype.writeDoubleLE = function ( t, e, r, ) { return I(this, t, e, !0, r); }), (a.prototype.writeDoubleBE = function ( t, e, r, ) { return I(this, t, e, !1, r); }), (a.prototype.copy = function ( t, e, r, n, ) { if (!a.isBuffer(t)) throw new TypeError( "argument should be a Buffer", ); if ( (r || (r = 0), n || 0 === n || (n = this.length), e >= t.length && (e = t.length), e || (e = 0), n > 0 && n < r && (n = r), n === r) ) return 0; if (0 === t.length || 0 === this.length) return 0; if (e < 0) throw new RangeError( "targetStart out of bounds", ); if (r < 0 || r >= this.length) throw new RangeError( "Index out of range", ); if (n < 0) throw new RangeError( "sourceEnd out of bounds", ); n > this.length && (n = this.length), t.length - e < n - r && (n = t.length - e + r); var i = n - r; if ( this === t && "function" == typeof Uint8Array.prototype .copyWithin ) this.copyWithin(e, r, n); else if (this === t && r < e && e < n) for (var o = i - 1; o >= 0; --o) t[o + e] = this[o + r]; else Uint8Array.prototype.set.call( t, this.subarray(r, n), e, ); return i; }), (a.prototype.fill = function ( t, e, r, n, ) { if ("string" == typeof t) { if ( ("string" == typeof e ? ((n = e), (e = 0), (r = this.length)) : "string" == typeof r && ((n = r), (r = this.length)), void 0 !== n && "string" != typeof n) ) throw new TypeError( "encoding must be a string", ); if ( "string" == typeof n && !a.isEncoding(n) ) throw new TypeError( "Unknown encoding: " + n, ); if (1 === t.length) { var i = t.charCodeAt(0); (("utf8" === n && i < 128) || "latin1" === n) && (t = i); } } else "number" == typeof t && (t &= 255); if ( e < 0 || this.length < e || this.length < r ) throw new RangeError( "Out of range index", ); if (r <= e) return this; var o; if ( ((e >>>= 0), (r = void 0 === r ? this.length : r >>> 0), t || (t = 0), "number" == typeof t) ) for (o = e; o < r; ++o) this[o] = t; else { var s = a.isBuffer(t) ? t : a.from(t, n), l = s.length; if (0 === l) throw new TypeError( 'The value "' + t + '" is invalid for argument "value"', ); for (o = 0; o < r - e; ++o) this[o + e] = s[o % l]; } return this; }); var O = /[^+/0-9A-Za-z-_]/g; function z(t) { return t < 16 ? "0" + t.toString(16) : t.toString(16); } function D(t, e) { var r; e = e || 1 / 0; for ( var n = t.length, i = null, a = [], o = 0; o < n; ++o ) { if ( (r = t.charCodeAt(o)) > 55295 && r < 57344 ) { if (!i) { if (r > 56319) { (e -= 3) > -1 && a.push(239, 191, 189); continue; } if (o + 1 === n) { (e -= 3) > -1 && a.push(239, 191, 189); continue; } i = r; continue; } if (r < 56320) { (e -= 3) > -1 && a.push(239, 191, 189), (i = r); continue; } r = 65536 + (((i - 55296) << 10) | (r - 56320)); } else i && (e -= 3) > -1 && a.push(239, 191, 189); if (((i = null), r < 128)) { if ((e -= 1) < 0) break; a.push(r); } else if (r < 2048) { if ((e -= 2) < 0) break; a.push( (r >> 6) | 192, (63 & r) | 128, ); } else if (r < 65536) { if ((e -= 3) < 0) break; a.push( (r >> 12) | 224, ((r >> 6) & 63) | 128, (63 & r) | 128, ); } else { if (!(r < 1114112)) throw new Error( "Invalid code point", ); if ((e -= 4) < 0) break; a.push( (r >> 18) | 240, ((r >> 12) & 63) | 128, ((r >> 6) & 63) | 128, (63 & r) | 128, ); } } return a; } function R(t) { return e.toByteArray( (function (t) { if ( (t = (t = t.split("=")[0]) .trim() .replace(O, "")).length < 2 ) return ""; for (; t.length % 4 != 0; ) t += "="; return t; })(t), ); } function F(t, e, r, n) { for ( var i = 0; i < n && !(i + r >= e.length || i >= t.length); ++i ) e[i + r] = t[i]; return i; } function B(t, e) { return ( t instanceof e || (null != t && null != t.constructor && null != t.constructor.name && t.constructor.name === e.name) ); } function N(t) { return t != t; } }).call(this); }).call(this, t("buffer").Buffer); }, { "base64-js": 1, buffer: 3, ieee754: 4 }, ], 4: [ function (t, e, r) { (r.read = function (t, e, r, n, i) { var a, o, s = 8 * i - n - 1, l = (1 << s) - 1, c = l >> 1, u = -7, f = r ? i - 1 : 0, h = r ? -1 : 1, p = t[e + f]; for ( f += h, a = p & ((1 << -u) - 1), p >>= -u, u += s; u > 0; a = 256 * a + t[e + f], f += h, u -= 8 ); for ( o = a & ((1 << -u) - 1), a >>= -u, u += n; u > 0; o = 256 * o + t[e + f], f += h, u -= 8 ); if (0 === a) a = 1 - c; else { if (a === l) return o ? NaN : (1 / 0) * (p ? -1 : 1); (o += Math.pow(2, n)), (a -= c); } return (p ? -1 : 1) * o * Math.pow(2, a - n); }), (r.write = function (t, e, r, n, i, a) { var o, s, l, c = 8 * a - i - 1, u = (1 << c) - 1, f = u >> 1, h = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, p = n ? 0 : a - 1, d = n ? 1 : -1, m = e < 0 || (0 === e && 1 / e < 0) ? 1 : 0; for ( e = Math.abs(e), isNaN(e) || e === 1 / 0 ? ((s = isNaN(e) ? 1 : 0), (o = u)) : ((o = Math.floor( Math.log(e) / Math.LN2, )), e * (l = Math.pow(2, -o)) < 1 && (o--, (l *= 2)), (e += o + f >= 1 ? h / l : h * Math.pow(2, 1 - f)) * l >= 2 && (o++, (l /= 2)), o + f >= u ? ((s = 0), (o = u)) : o + f >= 1 ? ((s = (e * l - 1) * Math.pow(2, i)), (o += f)) : ((s = e * Math.pow(2, f - 1) * Math.pow(2, i)), (o = 0))); i >= 8; t[r + p] = 255 & s, p += d, s /= 256, i -= 8 ); for ( o = (o << i) | s, c += i; c > 0; t[r + p] = 255 & o, p += d, o /= 256, c -= 8 ); t[r + p - d] |= 128 * m; }); }, {}, ], 5: [ function (t, e, r) { var n, i, a = (e.exports = {}); function o() { throw new Error( "setTimeout has not been defined", ); } function s() { throw new Error( "clearTimeout has not been defined", ); } function l(t) { if (n === setTimeout) return setTimeout(t, 0); if ((n === o || !n) && setTimeout) return (n = setTimeout), setTimeout(t, 0); try { return n(t, 0); } catch (e) { try { return n.call(null, t, 0); } catch (e) { return n.call(this, t, 0); } } } !(function () { try { n = "function" == typeof setTimeout ? setTimeout : o; } catch (t) { n = o; } try { i = "function" == typeof clearTimeout ? clearTimeout : s; } catch (t) { i = s; } })(); var c, u = [], f = !1, h = -1; function p() { f && c && ((f = !1), c.length ? (u = c.concat(u)) : (h = -1), u.length && d()); } function d() { if (!f) { var t = l(p); f = !0; for (var e = u.length; e; ) { for (c = u, u = []; ++h < e; ) c && c[h].run(); (h = -1), (e = u.length); } (c = null), (f = !1), (function (t) { if (i === clearTimeout) return clearTimeout(t); if ((i === s || !i) && clearTimeout) return ( (i = clearTimeout), clearTimeout(t) ); try { i(t); } catch (e) { try { return i.call(null, t); } catch (e) { return i.call(this, t); } } })(t); } } function m(t, e) { (this.fun = t), (this.array = e); } function g() {} (a.nextTick = function (t) { var e = new Array(arguments.length - 1); if (arguments.length > 1) for (var r = 1; r < arguments.length; r++) e[r - 1] = arguments[r]; u.push(new m(t, e)), 1 !== u.length || f || l(d); }), (m.prototype.run = function () { this.fun.apply(null, this.array); }), (a.title = "browser"), (a.browser = !0), (a.env = {}), (a.argv = []), (a.version = ""), (a.versions = {}), (a.on = g), (a.addListener = g), (a.once = g), (a.off = g), (a.removeListener = g), (a.removeAllListeners = g), (a.emit = g), (a.prependListener = g), (a.prependOnceListener = g), (a.listeners = function (t) { return []; }), (a.binding = function (t) { throw new Error( "process.binding is not supported", ); }), (a.cwd = function () { return "/"; }), (a.chdir = function (t) { throw new Error( "process.chdir is not supported", ); }), (a.umask = function () { return 0; }); }, {}, ], 6: [ function (t, e, r) { e.exports = { alpha_shape: t("alpha-shape"), convex_hull: t("convex-hull"), delaunay_triangulate: t( "delaunay-triangulate", ), gl_cone3d: t("gl-cone3d"), gl_error3d: t("gl-error3d"), gl_heatmap2d: t("gl-heatmap2d"), gl_line3d: t("gl-line3d"), gl_mesh3d: t("gl-mesh3d"), gl_plot2d: t("gl-plot2d"), gl_plot3d: t("gl-plot3d"), gl_pointcloud2d: t("gl-pointcloud2d"), gl_scatter3d: t("gl-scatter3d"), gl_select_box: t("gl-select-box"), gl_spikes2d: t("gl-spikes2d"), gl_streamtube3d: t("gl-streamtube3d"), gl_surface3d: t("gl-surface3d"), ndarray: t("ndarray"), ndarray_linear_interpolate: t( "ndarray-linear-interpolate", ), }; }, { "alpha-shape": 12, "convex-hull": 58, "delaunay-triangulate": 63, "gl-cone3d": 79, "gl-error3d": 84, "gl-heatmap2d": 88, "gl-line3d": 91, "gl-mesh3d": 112, "gl-plot2d": 118, "gl-plot3d": 121, "gl-pointcloud2d": 123, "gl-scatter3d": 128, "gl-select-box": 130, "gl-spikes2d": 139, "gl-streamtube3d": 143, "gl-surface3d": 145, ndarray: 259, "ndarray-linear-interpolate": 253, }, ], 7: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = (t = t || {}).eye || [0, 0, 1], r = t.center || [0, 0, 0], s = t.up || [0, 1, 0], l = t.distanceLimits || [0, 1 / 0], c = t.mode || "turntable", u = n(), f = i(), h = a(); return ( u.setDistanceLimits(l[0], l[1]), u.lookAt(0, e, r, s), f.setDistanceLimits(l[0], l[1]), f.lookAt(0, e, r, s), h.setDistanceLimits(l[0], l[1]), h.lookAt(0, e, r, s), new o( { turntable: u, orbit: f, matrix: h }, c, ) ); }; var n = t("turntable-camera-controller"), i = t("orbit-camera-controller"), a = t("matrix-camera-controller"); function o(t, e) { (this._controllerNames = Object.keys(t)), (this._controllerList = this._controllerNames.map(function (e) { return t[e]; })), (this._mode = e), (this._active = t[e]), this._active || ((this._mode = "turntable"), (this._active = t.turntable)), (this.modes = this._controllerNames), (this.computedMatrix = this._active.computedMatrix), (this.computedEye = this._active.computedEye), (this.computedUp = this._active.computedUp), (this.computedCenter = this._active.computedCenter), (this.computedRadius = this._active.computedRadius); } var s = o.prototype; (s.flush = function (t) { for ( var e = this._controllerList, r = 0; r < e.length; ++r ) e[r].flush(t); }), (s.idle = function (t) { for ( var e = this._controllerList, r = 0; r < e.length; ++r ) e[r].idle(t); }), (s.lookAt = function (t, e, r, n) { for ( var i = this._controllerList, a = 0; a < i.length; ++a ) i[a].lookAt(t, e, r, n); }), (s.rotate = function (t, e, r, n) { for ( var i = this._controllerList, a = 0; a < i.length; ++a ) i[a].rotate(t, e, r, n); }), (s.pan = function (t, e, r, n) { for ( var i = this._controllerList, a = 0; a < i.length; ++a ) i[a].pan(t, e, r, n); }), (s.translate = function (t, e, r, n) { for ( var i = this._controllerList, a = 0; a < i.length; ++a ) i[a].translate(t, e, r, n); }), (s.setMatrix = function (t, e) { for ( var r = this._controllerList, n = 0; n < r.length; ++n ) r[n].setMatrix(t, e); }), (s.setDistanceLimits = function (t, e) { for ( var r = this._controllerList, n = 0; n < r.length; ++n ) r[n].setDistanceLimits(t, e); }), (s.setDistance = function (t, e) { for ( var r = this._controllerList, n = 0; n < r.length; ++n ) r[n].setDistance(t, e); }), (s.recalcMatrix = function (t) { this._active.recalcMatrix(t); }), (s.getDistance = function (t) { return this._active.getDistance(t); }), (s.getDistanceLimits = function (t) { return this._active.getDistanceLimits(t); }), (s.lastT = function () { return this._active.lastT(); }), (s.setMode = function (t) { if (t !== this._mode) { var e = this._controllerNames.indexOf(t); if (!(e < 0)) { var r = this._active, n = this._controllerList[e], i = Math.max(r.lastT(), n.lastT()); r.recalcMatrix(i), n.setMatrix(i, r.computedMatrix), (this._active = n), (this._mode = t), (this.computedMatrix = this._active.computedMatrix), (this.computedEye = this._active.computedEye), (this.computedUp = this._active.computedUp), (this.computedCenter = this._active.computedCenter), (this.computedRadius = this._active.computedRadius); } } }), (s.getMode = function () { return this._mode; }); }, { "matrix-camera-controller": 245, "orbit-camera-controller": 263, "turntable-camera-controller": 305, }, ], 8: [ function (t, e, r) { "use strict"; var n = "undefined" == typeof WeakMap ? t("weak-map") : WeakMap, i = t("gl-buffer"), a = t("gl-vao"), o = new n(); e.exports = function (t) { var e = o.get(t), r = e && (e._triangleBuffer.handle || e._triangleBuffer.buffer); if (!r || !t.isBuffer(r)) { var n = i( t, new Float32Array([-1, -1, -1, 4, 4, -1]), ); ((e = a(t, [ { buffer: n, type: t.FLOAT, size: 2 }, ]))._triangleBuffer = n), o.set(t, e); } e.bind(), t.drawArrays(t.TRIANGLES, 0, 3), e.unbind(); }; }, { "gl-buffer": 78, "gl-vao": 150, "weak-map": 313, }, ], 9: [ function (t, e, r) { var n = t("pad-left"); e.exports = function (t, e, r) { (e = "number" == typeof e ? e : 1), (r = r || ": "); var i = t.split(/\r?\n/), a = String(i.length + e - 1).length; return i .map(function (t, i) { var o = i + e, s = String(o).length; return n(o, a - s) + r + t; }) .join("\n"); }; }, { "pad-left": 264 }, ], 10: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.length; if (0 === e) return []; if (1 === e) return [0]; for ( var r = t[0].length, n = [t[0]], a = [0], o = 1; o < e; ++o ) if ((n.push(t[o]), i(n, r))) { if ((a.push(o), a.length === r + 1)) return a; } else n.pop(); return a; }; var n = t("robust-orientation"); function i(t, e) { for ( var r = new Array(e + 1), i = 0; i < t.length; ++i ) r[i] = t[i]; for (i = 0; i <= t.length; ++i) { for (var a = t.length; a <= e; ++a) { for ( var o = new Array(e), s = 0; s < e; ++s ) o[s] = Math.pow(a + 1 - i, s); r[a] = o; } if (n.apply(void 0, r)) return !0; } return !1; } }, { "robust-orientation": 284 }, ], 11: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { return n(e).filter(function (r) { for ( var n = new Array(r.length), a = 0; a < r.length; ++a ) n[a] = e[r[a]]; return i(n) * t < 1; }); }; var n = t("delaunay-triangulate"), i = t("circumradius"); }, { circumradius: 49, "delaunay-triangulate": 63 }, ], 12: [ function (t, e, r) { e.exports = function (t, e) { return i(n(t, e)); }; var n = t("alpha-complex"), i = t("simplicial-complex-boundary"); }, { "alpha-complex": 11, "simplicial-complex-boundary": 290, }, ], 13: [ function (t, e, r) { e.exports = function (t) { return atob(t); }; }, {}, ], 14: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { for ( var r = e.length, a = new Array(r + 1), o = 0; o < r; ++o ) { for ( var s = new Array(r + 1), l = 0; l <= r; ++l ) s[l] = t[l][o]; a[o] = s; } a[r] = new Array(r + 1); for (o = 0; o <= r; ++o) a[r][o] = 1; var c = new Array(r + 1); for (o = 0; o < r; ++o) c[o] = e[o]; c[r] = 1; var u = n(a, c), f = i(u[r + 1]); 0 === f && (f = 1); var h = new Array(r + 1); for (o = 0; o <= r; ++o) h[o] = i(u[o]) / f; return h; }; var n = t("robust-linear-solve"); function i(t) { for (var e = 0, r = 0; r < t.length; ++r) e += t[r]; return e; } }, { "robust-linear-solve": 283 }, ], 15: [ function (t, e, r) { "use strict"; var n = t("./lib/rationalize"); e.exports = function (t, e) { return n( t[0].mul(e[1]).add(e[0].mul(t[1])), t[1].mul(e[1]), ); }; }, { "./lib/rationalize": 25 }, ], 16: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { return t[0].mul(e[1]).cmp(e[0].mul(t[1])); }; }, {}, ], 17: [ function (t, e, r) { "use strict"; var n = t("./lib/rationalize"); e.exports = function (t, e) { return n(t[0].mul(e[1]), t[1].mul(e[0])); }; }, { "./lib/rationalize": 25 }, ], 18: [ function (t, e, r) { "use strict"; var n = t("./is-rat"), i = t("./lib/is-bn"), a = t("./lib/num-to-bn"), o = t("./lib/str-to-bn"), s = t("./lib/rationalize"), l = t("./div"); e.exports = function t(e, r) { if (n(e)) return r ? l(e, t(r)) : [e[0].clone(), e[1].clone()]; var c, u, f = 0; if (i(e)) c = e.clone(); else if ("string" == typeof e) c = o(e); else { if (0 === e) return [a(0), a(1)]; if (e === Math.floor(e)) c = a(e); else { for (; e !== Math.floor(e); ) (e *= Math.pow(2, 256)), (f -= 256); c = a(e); } } if (n(r)) c.mul(r[1]), (u = r[0].clone()); else if (i(r)) u = r.clone(); else if ("string" == typeof r) u = o(r); else if (r) if (r === Math.floor(r)) u = a(r); else { for (; r !== Math.floor(r); ) (r *= Math.pow(2, 256)), (f += 256); u = a(r); } else u = a(1); f > 0 ? (c = c.ushln(f)) : f < 0 && (u = u.ushln(-f)); return s(c, u); }; }, { "./div": 17, "./is-rat": 19, "./lib/is-bn": 23, "./lib/num-to-bn": 24, "./lib/rationalize": 25, "./lib/str-to-bn": 26, }, ], 19: [ function (t, e, r) { "use strict"; var n = t("./lib/is-bn"); e.exports = function (t) { return ( Array.isArray(t) && 2 === t.length && n(t[0]) && n(t[1]) ); }; }, { "./lib/is-bn": 23 }, ], 20: [ function (t, e, r) { "use strict"; var n = t("bn.js"); e.exports = function (t) { return t.cmp(new n(0)); }; }, { "bn.js": 33 }, ], 21: [ function (t, e, r) { "use strict"; var n = t("./bn-sign"); e.exports = function (t) { var e = t.length, r = t.words, i = 0; if (1 === e) i = r[0]; else if (2 === e) i = r[0] + 67108864 * r[1]; else for (var a = 0; a < e; a++) { var o = r[a]; i += o * Math.pow(67108864, a); } return n(t) * i; }; }, { "./bn-sign": 20 }, ], 22: [ function (t, e, r) { "use strict"; var n = t("double-bits"), i = t("bit-twiddle").countTrailingZeros; e.exports = function (t) { var e = i(n.lo(t)); if (e < 32) return e; var r = i(n.hi(t)); if (r > 20) return 52; return r + 32; }; }, { "bit-twiddle": 32, "double-bits": 64 }, ], 23: [ function (t, e, r) { "use strict"; t("bn.js"); e.exports = function (t) { return ( t && "object" == typeof t && Boolean(t.words) ); }; }, { "bn.js": 33 }, ], 24: [ function (t, e, r) { "use strict"; var n = t("bn.js"), i = t("double-bits"); e.exports = function (t) { var e = i.exponent(t); return e < 52 ? new n(t) : new n(t * Math.pow(2, 52 - e)).ushln( e - 52, ); }; }, { "bn.js": 33, "double-bits": 64 }, ], 25: [ function (t, e, r) { "use strict"; var n = t("./num-to-bn"), i = t("./bn-sign"); e.exports = function (t, e) { var r = i(t), a = i(e); if (0 === r) return [n(0), n(1)]; if (0 === a) return [n(0), n(0)]; a < 0 && ((t = t.neg()), (e = e.neg())); var o = t.gcd(e); if (o.cmpn(1)) return [t.div(o), e.div(o)]; return [t, e]; }; }, { "./bn-sign": 20, "./num-to-bn": 24 }, ], 26: [ function (t, e, r) { "use strict"; var n = t("bn.js"); e.exports = function (t) { return new n(t); }; }, { "bn.js": 33 }, ], 27: [ function (t, e, r) { "use strict"; var n = t("./lib/rationalize"); e.exports = function (t, e) { return n(t[0].mul(e[0]), t[1].mul(e[1])); }; }, { "./lib/rationalize": 25 }, ], 28: [ function (t, e, r) { "use strict"; var n = t("./lib/bn-sign"); e.exports = function (t) { return n(t[0]) * n(t[1]); }; }, { "./lib/bn-sign": 20 }, ], 29: [ function (t, e, r) { "use strict"; var n = t("./lib/rationalize"); e.exports = function (t, e) { return n( t[0].mul(e[1]).sub(t[1].mul(e[0])), t[1].mul(e[1]), ); }; }, { "./lib/rationalize": 25 }, ], 30: [ function (t, e, r) { "use strict"; var n = t("./lib/bn-to-num"), i = t("./lib/ctz"); e.exports = function (t) { var e = t[0], r = t[1]; if (0 === e.cmpn(0)) return 0; var a = e.abs().divmod(r.abs()), o = a.div, s = n(o), l = a.mod, c = e.negative !== r.negative ? -1 : 1; if (0 === l.cmpn(0)) return c * s; if (s) { var u = i(s) + 4, f = n(l.ushln(u).divRound(r)); return c * (s + f * Math.pow(2, -u)); } var h = r.bitLength() - l.bitLength() + 53; f = n(l.ushln(h).divRound(r)); return h < 1023 ? c * f * Math.pow(2, -h) : ((f *= Math.pow(2, -1023)), c * f * Math.pow(2, 1023 - h)); }; }, { "./lib/bn-to-num": 21, "./lib/ctz": 22 }, ], 31: [ function (t, e, r) { "use strict"; function n(t, e, r, n, i) { for (var a = i + 1; n <= i; ) { var o = (n + i) >>> 1, s = t[o]; (void 0 !== r ? r(s, e) : s - e) >= 0 ? ((a = o), (i = o - 1)) : (n = o + 1); } return a; } function i(t, e, r, n, i) { for (var a = i + 1; n <= i; ) { var o = (n + i) >>> 1, s = t[o]; (void 0 !== r ? r(s, e) : s - e) > 0 ? ((a = o), (i = o - 1)) : (n = o + 1); } return a; } function a(t, e, r, n, i) { for (var a = n - 1; n <= i; ) { var o = (n + i) >>> 1, s = t[o]; (void 0 !== r ? r(s, e) : s - e) < 0 ? ((a = o), (n = o + 1)) : (i = o - 1); } return a; } function o(t, e, r, n, i) { for (var a = n - 1; n <= i; ) { var o = (n + i) >>> 1, s = t[o]; (void 0 !== r ? r(s, e) : s - e) <= 0 ? ((a = o), (n = o + 1)) : (i = o - 1); } return a; } function s(t, e, r, n, i) { for (; n <= i; ) { var a = (n + i) >>> 1, o = t[a], s = void 0 !== r ? r(o, e) : o - e; if (0 === s) return a; s <= 0 ? (n = a + 1) : (i = a - 1); } return -1; } function l(t, e, r, n, i, a) { return "function" == typeof r ? a( t, e, r, void 0 === n ? 0 : 0 | n, void 0 === i ? t.length - 1 : 0 | i, ) : a( t, e, void 0, void 0 === r ? 0 : 0 | r, void 0 === n ? t.length - 1 : 0 | n, ); } e.exports = { ge: function (t, e, r, i, a) { return l(t, e, r, i, a, n); }, gt: function (t, e, r, n, a) { return l(t, e, r, n, a, i); }, lt: function (t, e, r, n, i) { return l(t, e, r, n, i, a); }, le: function (t, e, r, n, i) { return l(t, e, r, n, i, o); }, eq: function (t, e, r, n, i) { return l(t, e, r, n, i, s); }, }; }, {}, ], 32: [ function (t, e, r) { "use strict"; function n(t) { var e = 32; return ( (t &= -t) && e--, 65535 & t && (e -= 16), 16711935 & t && (e -= 8), 252645135 & t && (e -= 4), 858993459 & t && (e -= 2), 1431655765 & t && (e -= 1), e ); } (r.INT_BITS = 32), (r.INT_MAX = 2147483647), (r.INT_MIN = -1 << 31), (r.sign = function (t) { return (t > 0) - (t < 0); }), (r.abs = function (t) { var e = t >> 31; return (t ^ e) - e; }), (r.min = function (t, e) { return e ^ ((t ^ e) & -(t < e)); }), (r.max = function (t, e) { return t ^ ((t ^ e) & -(t < e)); }), (r.isPow2 = function (t) { return !(t & (t - 1) || !t); }), (r.log2 = function (t) { var e, r; return ( (e = (t > 65535) << 4), (e |= r = ((t >>>= e) > 255) << 3), (e |= r = ((t >>>= r) > 15) << 2), (e |= r = ((t >>>= r) > 3) << 1) | ((t >>>= r) >> 1) ); }), (r.log10 = function (t) { return t >= 1e9 ? 9 : t >= 1e8 ? 8 : t >= 1e7 ? 7 : t >= 1e6 ? 6 : t >= 1e5 ? 5 : t >= 1e4 ? 4 : t >= 1e3 ? 3 : t >= 100 ? 2 : t >= 10 ? 1 : 0; }), (r.popCount = function (t) { return ( (16843009 * (((t = (858993459 & (t -= (t >>> 1) & 1431655765)) + ((t >>> 2) & 858993459)) + (t >>> 4)) & 252645135)) >>> 24 ); }), (r.countTrailingZeros = n), (r.nextPow2 = function (t) { return ( (t += 0 === t), --t, (t |= t >>> 1), (t |= t >>> 2), (t |= t >>> 4), (t |= t >>> 8), (t |= t >>> 16) + 1 ); }), (r.prevPow2 = function (t) { return ( (t |= t >>> 1), (t |= t >>> 2), (t |= t >>> 4), (t |= t >>> 8), (t |= t >>> 16) - (t >>> 1) ); }), (r.parity = function (t) { return ( (t ^= t >>> 16), (t ^= t >>> 8), (t ^= t >>> 4), (27030 >>> (t &= 15)) & 1 ); }); var i = new Array(256); !(function (t) { for (var e = 0; e < 256; ++e) { var r = e, n = e, i = 7; for (r >>>= 1; r; r >>>= 1) (n <<= 1), (n |= 1 & r), --i; t[e] = (n << i) & 255; } })(i), (r.reverse = function (t) { return ( (i[255 & t] << 24) | (i[(t >>> 8) & 255] << 16) | (i[(t >>> 16) & 255] << 8) | i[(t >>> 24) & 255] ); }), (r.interleave2 = function (t, e) { return ( (t = 1431655765 & ((t = 858993459 & ((t = 252645135 & ((t = 16711935 & ((t &= 65535) | (t << 8))) | (t << 4))) | (t << 2))) | (t << 1))) | ((e = 1431655765 & ((e = 858993459 & ((e = 252645135 & ((e = 16711935 & ((e &= 65535) | (e << 8))) | (e << 4))) | (e << 2))) | (e << 1))) << 1) ); }), (r.deinterleave2 = function (t, e) { return ( ((t = 65535 & ((t = 16711935 & ((t = 252645135 & ((t = 858993459 & ((t = (t >>> e) & 1431655765) | (t >>> 1))) | (t >>> 2))) | (t >>> 4))) | (t >>> 16))) << 16) >> 16 ); }), (r.interleave3 = function (t, e, r) { return ( (t = 1227133513 & ((t = 3272356035 & ((t = 251719695 & ((t = 4278190335 & ((t &= 1023) | (t << 16))) | (t << 8))) | (t << 4))) | (t << 2))), (t |= (e = 1227133513 & ((e = 3272356035 & ((e = 251719695 & ((e = 4278190335 & ((e &= 1023) | (e << 16))) | (e << 8))) | (e << 4))) | (e << 2))) << 1) | ((r = 1227133513 & ((r = 3272356035 & ((r = 251719695 & ((r = 4278190335 & ((r &= 1023) | (r << 16))) | (r << 8))) | (r << 4))) | (r << 2))) << 2) ); }), (r.deinterleave3 = function (t, e) { return ( ((t = 1023 & ((t = 4278190335 & ((t = 251719695 & ((t = 3272356035 & ((t = (t >>> e) & 1227133513) | (t >>> 2))) | (t >>> 4))) | (t >>> 8))) | (t >>> 16))) << 22) >> 22 ); }), (r.nextCombination = function (t) { var e = t | (t - 1); return ( (e + 1) | (((~e & -~e) - 1) >>> (n(t) + 1)) ); }); }, {}, ], 33: [ function (t, e, r) { !(function (e, r) { "use strict"; function n(t, e) { if (!t) throw new Error(e || "Assertion failed"); } function i(t, e) { t.super_ = e; var r = function () {}; (r.prototype = e.prototype), (t.prototype = new r()), (t.prototype.constructor = t); } function a(t, e, r) { if (a.isBN(t)) return t; (this.negative = 0), (this.words = null), (this.length = 0), (this.red = null), null !== t && (("le" !== e && "be" !== e) || ((r = e), (e = 10)), this._init(t || 0, e || 10, r || "be")); } var o; "object" == typeof e ? (e.exports = a) : (r.BN = a), (a.BN = a), (a.wordSize = 26); try { o = "undefined" != typeof window && void 0 !== window.Buffer ? window.Buffer : t("buffer").Buffer; } catch (t) {} function s(t, e) { var r = t.charCodeAt(e); return r >= 65 && r <= 70 ? r - 55 : r >= 97 && r <= 102 ? r - 87 : (r - 48) & 15; } function l(t, e, r) { var n = s(t, r); return ( r - 1 >= e && (n |= s(t, r - 1) << 4), n ); } function c(t, e, r, n) { for ( var i = 0, a = Math.min(t.length, r), o = e; o < a; o++ ) { var s = t.charCodeAt(o) - 48; (i *= n), (i += s >= 49 ? s - 49 + 10 : s >= 17 ? s - 17 + 10 : s); } return i; } (a.isBN = function (t) { return ( t instanceof a || (null !== t && "object" == typeof t && t.constructor.wordSize === a.wordSize && Array.isArray(t.words)) ); }), (a.max = function (t, e) { return t.cmp(e) > 0 ? t : e; }), (a.min = function (t, e) { return t.cmp(e) < 0 ? t : e; }), (a.prototype._init = function (t, e, r) { if ("number" == typeof t) return this._initNumber(t, e, r); if ("object" == typeof t) return this._initArray(t, e, r); "hex" === e && (e = 16), n(e === (0 | e) && e >= 2 && e <= 36); var i = 0; "-" === (t = t .toString() .replace(/\s+/g, ""))[0] && (i++, (this.negative = 1)), i < t.length && (16 === e ? this._parseHex(t, i, r) : (this._parseBase(t, e, i), "le" === r && this._initArray( this.toArray(), e, r, ))); }), (a.prototype._initNumber = function ( t, e, r, ) { t < 0 && ((this.negative = 1), (t = -t)), t < 67108864 ? ((this.words = [67108863 & t]), (this.length = 1)) : t < 4503599627370496 ? ((this.words = [ 67108863 & t, (t / 67108864) & 67108863, ]), (this.length = 2)) : (n(t < 9007199254740992), (this.words = [ 67108863 & t, (t / 67108864) & 67108863, 1, ]), (this.length = 3)), "le" === r && this._initArray(this.toArray(), e, r); }), (a.prototype._initArray = function ( t, e, r, ) { if ( (n("number" == typeof t.length), t.length <= 0) ) return ( (this.words = [0]), (this.length = 1), this ); (this.length = Math.ceil(t.length / 3)), (this.words = new Array(this.length)); for (var i = 0; i < this.length; i++) this.words[i] = 0; var a, o, s = 0; if ("be" === r) for ( i = t.length - 1, a = 0; i >= 0; i -= 3 ) (o = t[i] | (t[i - 1] << 8) | (t[i - 2] << 16)), (this.words[a] |= (o << s) & 67108863), (this.words[a + 1] = (o >>> (26 - s)) & 67108863), (s += 24) >= 26 && ((s -= 26), a++); else if ("le" === r) for (i = 0, a = 0; i < t.length; i += 3) (o = t[i] | (t[i + 1] << 8) | (t[i + 2] << 16)), (this.words[a] |= (o << s) & 67108863), (this.words[a + 1] = (o >>> (26 - s)) & 67108863), (s += 24) >= 26 && ((s -= 26), a++); return this.strip(); }), (a.prototype._parseHex = function ( t, e, r, ) { (this.length = Math.ceil( (t.length - e) / 6, )), (this.words = new Array(this.length)); for (var n = 0; n < this.length; n++) this.words[n] = 0; var i, a = 0, o = 0; if ("be" === r) for (n = t.length - 1; n >= e; n -= 2) (i = l(t, e, n) << a), (this.words[o] |= 67108863 & i), a >= 18 ? ((a -= 18), (o += 1), (this.words[o] |= i >>> 26)) : (a += 8); else for ( n = (t.length - e) % 2 == 0 ? e + 1 : e; n < t.length; n += 2 ) (i = l(t, e, n) << a), (this.words[o] |= 67108863 & i), a >= 18 ? ((a -= 18), (o += 1), (this.words[o] |= i >>> 26)) : (a += 8); this.strip(); }), (a.prototype._parseBase = function ( t, e, r, ) { (this.words = [0]), (this.length = 1); for ( var n = 0, i = 1; i <= 67108863; i *= e ) n++; n--, (i = (i / e) | 0); for ( var a = t.length - r, o = a % n, s = Math.min(a, a - o) + r, l = 0, u = r; u < s; u += n ) (l = c(t, u, u + n, e)), this.imuln(i), this.words[0] + l < 67108864 ? (this.words[0] += l) : this._iaddn(l); if (0 !== o) { var f = 1; for ( l = c(t, u, t.length, e), u = 0; u < o; u++ ) f *= e; this.imuln(f), this.words[0] + l < 67108864 ? (this.words[0] += l) : this._iaddn(l); } this.strip(); }), (a.prototype.copy = function (t) { t.words = new Array(this.length); for (var e = 0; e < this.length; e++) t.words[e] = this.words[e]; (t.length = this.length), (t.negative = this.negative), (t.red = this.red); }), (a.prototype.clone = function () { var t = new a(null); return this.copy(t), t; }), (a.prototype._expand = function (t) { for (; this.length < t; ) this.words[this.length++] = 0; return this; }), (a.prototype.strip = function () { for ( ; this.length > 1 && 0 === this.words[this.length - 1]; ) this.length--; return this._normSign(); }), (a.prototype._normSign = function () { return ( 1 === this.length && 0 === this.words[0] && (this.negative = 0), this ); }), (a.prototype.inspect = function () { return ( (this.red ? "" ); }); var u = [ "", "0", "00", "000", "0000", "00000", "000000", "0000000", "00000000", "000000000", "0000000000", "00000000000", "000000000000", "0000000000000", "00000000000000", "000000000000000", "0000000000000000", "00000000000000000", "000000000000000000", "0000000000000000000", "00000000000000000000", "000000000000000000000", "0000000000000000000000", "00000000000000000000000", "000000000000000000000000", "0000000000000000000000000", ], f = [ 0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, ], h = [ 0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 1e7, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64e6, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 243e5, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176, ]; function p(t, e, r) { r.negative = e.negative ^ t.negative; var n = (t.length + e.length) | 0; (r.length = n), (n = (n - 1) | 0); var i = 0 | t.words[0], a = 0 | e.words[0], o = i * a, s = 67108863 & o, l = (o / 67108864) | 0; r.words[0] = s; for (var c = 1; c < n; c++) { for ( var u = l >>> 26, f = 67108863 & l, h = Math.min(c, e.length - 1), p = Math.max(0, c - t.length + 1); p <= h; p++ ) { var d = (c - p) | 0; (u += ((o = (i = 0 | t.words[d]) * (a = 0 | e.words[p]) + f) / 67108864) | 0), (f = 67108863 & o); } (r.words[c] = 0 | f), (l = 0 | u); } return ( 0 !== l ? (r.words[c] = 0 | l) : r.length--, r.strip() ); } (a.prototype.toString = function (t, e) { var r; if ( ((e = 0 | e || 1), 16 === (t = t || 10) || "hex" === t) ) { r = ""; for ( var i = 0, a = 0, o = 0; o < this.length; o++ ) { var s = this.words[o], l = ( 16777215 & ((s << i) | a) ).toString(16); (r = 0 !== (a = (s >>> (24 - i)) & 16777215) || o !== this.length - 1 ? u[6 - l.length] + l + r : l + r), (i += 2) >= 26 && ((i -= 26), o--); } for ( 0 !== a && (r = a.toString(16) + r); r.length % e != 0; ) r = "0" + r; return ( 0 !== this.negative && (r = "-" + r), r ); } if (t === (0 | t) && t >= 2 && t <= 36) { var c = f[t], p = h[t]; r = ""; var d = this.clone(); for (d.negative = 0; !d.isZero(); ) { var m = d.modn(p).toString(t); r = (d = d.idivn(p)).isZero() ? m + r : u[c - m.length] + m + r; } for ( this.isZero() && (r = "0" + r); r.length % e != 0; ) r = "0" + r; return ( 0 !== this.negative && (r = "-" + r), r ); } n(!1, "Base should be between 2 and 36"); }), (a.prototype.toNumber = function () { var t = this.words[0]; return ( 2 === this.length ? (t += 67108864 * this.words[1]) : 3 === this.length && 1 === this.words[2] ? (t += 4503599627370496 + 67108864 * this.words[1]) : this.length > 2 && n( !1, "Number can only safely store up to 53 bits", ), 0 !== this.negative ? -t : t ); }), (a.prototype.toJSON = function () { return this.toString(16); }), (a.prototype.toBuffer = function (t, e) { return ( n(void 0 !== o), this.toArrayLike(o, t, e) ); }), (a.prototype.toArray = function (t, e) { return this.toArrayLike(Array, t, e); }), (a.prototype.toArrayLike = function ( t, e, r, ) { var i = this.byteLength(), a = r || Math.max(1, i); n( i <= a, "byte array longer than desired length", ), n(a > 0, "Requested array length <= 0"), this.strip(); var o, s, l = "le" === e, c = new t(a), u = this.clone(); if (l) { for (s = 0; !u.isZero(); s++) (o = u.andln(255)), u.iushrn(8), (c[s] = o); for (; s < a; s++) c[s] = 0; } else { for (s = 0; s < a - i; s++) c[s] = 0; for (s = 0; !u.isZero(); s++) (o = u.andln(255)), u.iushrn(8), (c[a - s - 1] = o); } return c; }), Math.clz32 ? (a.prototype._countBits = function (t) { return 32 - Math.clz32(t); }) : (a.prototype._countBits = function (t) { var e = t, r = 0; return ( e >= 4096 && ((r += 13), (e >>>= 13)), e >= 64 && ((r += 7), (e >>>= 7)), e >= 8 && ((r += 4), (e >>>= 4)), e >= 2 && ((r += 2), (e >>>= 2)), r + e ); }), (a.prototype._zeroBits = function (t) { if (0 === t) return 26; var e = t, r = 0; return ( 0 == (8191 & e) && ((r += 13), (e >>>= 13)), 0 == (127 & e) && ((r += 7), (e >>>= 7)), 0 == (15 & e) && ((r += 4), (e >>>= 4)), 0 == (3 & e) && ((r += 2), (e >>>= 2)), 0 == (1 & e) && r++, r ); }), (a.prototype.bitLength = function () { var t = this.words[this.length - 1], e = this._countBits(t); return 26 * (this.length - 1) + e; }), (a.prototype.zeroBits = function () { if (this.isZero()) return 0; for ( var t = 0, e = 0; e < this.length; e++ ) { var r = this._zeroBits(this.words[e]); if (((t += r), 26 !== r)) break; } return t; }), (a.prototype.byteLength = function () { return Math.ceil(this.bitLength() / 8); }), (a.prototype.toTwos = function (t) { return 0 !== this.negative ? this.abs().inotn(t).iaddn(1) : this.clone(); }), (a.prototype.fromTwos = function (t) { return this.testn(t - 1) ? this.notn(t).iaddn(1).ineg() : this.clone(); }), (a.prototype.isNeg = function () { return 0 !== this.negative; }), (a.prototype.neg = function () { return this.clone().ineg(); }), (a.prototype.ineg = function () { return ( this.isZero() || (this.negative ^= 1), this ); }), (a.prototype.iuor = function (t) { for (; this.length < t.length; ) this.words[this.length++] = 0; for (var e = 0; e < t.length; e++) this.words[e] = this.words[e] | t.words[e]; return this.strip(); }), (a.prototype.ior = function (t) { return ( n(0 == (this.negative | t.negative)), this.iuor(t) ); }), (a.prototype.or = function (t) { return this.length > t.length ? this.clone().ior(t) : t.clone().ior(this); }), (a.prototype.uor = function (t) { return this.length > t.length ? this.clone().iuor(t) : t.clone().iuor(this); }), (a.prototype.iuand = function (t) { var e; e = this.length > t.length ? t : this; for (var r = 0; r < e.length; r++) this.words[r] = this.words[r] & t.words[r]; return ( (this.length = e.length), this.strip() ); }), (a.prototype.iand = function (t) { return ( n(0 == (this.negative | t.negative)), this.iuand(t) ); }), (a.prototype.and = function (t) { return this.length > t.length ? this.clone().iand(t) : t.clone().iand(this); }), (a.prototype.uand = function (t) { return this.length > t.length ? this.clone().iuand(t) : t.clone().iuand(this); }), (a.prototype.iuxor = function (t) { var e, r; this.length > t.length ? ((e = this), (r = t)) : ((e = t), (r = this)); for (var n = 0; n < r.length; n++) this.words[n] = e.words[n] ^ r.words[n]; if (this !== e) for (; n < e.length; n++) this.words[n] = e.words[n]; return ( (this.length = e.length), this.strip() ); }), (a.prototype.ixor = function (t) { return ( n(0 == (this.negative | t.negative)), this.iuxor(t) ); }), (a.prototype.xor = function (t) { return this.length > t.length ? this.clone().ixor(t) : t.clone().ixor(this); }), (a.prototype.uxor = function (t) { return this.length > t.length ? this.clone().iuxor(t) : t.clone().iuxor(this); }), (a.prototype.inotn = function (t) { n("number" == typeof t && t >= 0); var e = 0 | Math.ceil(t / 26), r = t % 26; this._expand(e), r > 0 && e--; for (var i = 0; i < e; i++) this.words[i] = 67108863 & ~this.words[i]; return ( r > 0 && (this.words[i] = ~this.words[i] & (67108863 >> (26 - r))), this.strip() ); }), (a.prototype.notn = function (t) { return this.clone().inotn(t); }), (a.prototype.setn = function (t, e) { n("number" == typeof t && t >= 0); var r = (t / 26) | 0, i = t % 26; return ( this._expand(r + 1), (this.words[r] = e ? this.words[r] | (1 << i) : this.words[r] & ~(1 << i)), this.strip() ); }), (a.prototype.iadd = function (t) { var e, r, n; if ( 0 !== this.negative && 0 === t.negative ) return ( (this.negative = 0), (e = this.isub(t)), (this.negative ^= 1), this._normSign() ); if ( 0 === this.negative && 0 !== t.negative ) return ( (t.negative = 0), (e = this.isub(t)), (t.negative = 1), e._normSign() ); this.length > t.length ? ((r = this), (n = t)) : ((r = t), (n = this)); for (var i = 0, a = 0; a < n.length; a++) (e = (0 | r.words[a]) + (0 | n.words[a]) + i), (this.words[a] = 67108863 & e), (i = e >>> 26); for (; 0 !== i && a < r.length; a++) (e = (0 | r.words[a]) + i), (this.words[a] = 67108863 & e), (i = e >>> 26); if (((this.length = r.length), 0 !== i)) (this.words[this.length] = i), this.length++; else if (r !== this) for (; a < r.length; a++) this.words[a] = r.words[a]; return this; }), (a.prototype.add = function (t) { var e; return 0 !== t.negative && 0 === this.negative ? ((t.negative = 0), (e = this.sub(t)), (t.negative ^= 1), e) : 0 === t.negative && 0 !== this.negative ? ((this.negative = 0), (e = t.sub(this)), (this.negative = 1), e) : this.length > t.length ? this.clone().iadd(t) : t.clone().iadd(this); }), (a.prototype.isub = function (t) { if (0 !== t.negative) { t.negative = 0; var e = this.iadd(t); return (t.negative = 1), e._normSign(); } if (0 !== this.negative) return ( (this.negative = 0), this.iadd(t), (this.negative = 1), this._normSign() ); var r, n, i = this.cmp(t); if (0 === i) return ( (this.negative = 0), (this.length = 1), (this.words[0] = 0), this ); i > 0 ? ((r = this), (n = t)) : ((r = t), (n = this)); for (var a = 0, o = 0; o < n.length; o++) (a = (e = (0 | r.words[o]) - (0 | n.words[o]) + a) >> 26), (this.words[o] = 67108863 & e); for (; 0 !== a && o < r.length; o++) (a = (e = (0 | r.words[o]) + a) >> 26), (this.words[o] = 67108863 & e); if (0 === a && o < r.length && r !== this) for (; o < r.length; o++) this.words[o] = r.words[o]; return ( (this.length = Math.max( this.length, o, )), r !== this && (this.negative = 1), this.strip() ); }), (a.prototype.sub = function (t) { return this.clone().isub(t); }); var d = function (t, e, r) { var n, i, a, o = t.words, s = e.words, l = r.words, c = 0, u = 0 | o[0], f = 8191 & u, h = u >>> 13, p = 0 | o[1], d = 8191 & p, m = p >>> 13, g = 0 | o[2], v = 8191 & g, y = g >>> 13, x = 0 | o[3], b = 8191 & x, _ = x >>> 13, w = 0 | o[4], T = 8191 & w, k = w >>> 13, A = 0 | o[5], M = 8191 & A, S = A >>> 13, E = 0 | o[6], L = 8191 & E, C = E >>> 13, P = 0 | o[7], I = 8191 & P, O = P >>> 13, z = 0 | o[8], D = 8191 & z, R = z >>> 13, F = 0 | o[9], B = 8191 & F, N = F >>> 13, j = 0 | s[0], U = 8191 & j, V = j >>> 13, H = 0 | s[1], q = 8191 & H, G = H >>> 13, Y = 0 | s[2], W = 8191 & Y, Z = Y >>> 13, X = 0 | s[3], J = 8191 & X, K = X >>> 13, Q = 0 | s[4], $ = 8191 & Q, tt = Q >>> 13, et = 0 | s[5], rt = 8191 & et, nt = et >>> 13, it = 0 | s[6], at = 8191 & it, ot = it >>> 13, st = 0 | s[7], lt = 8191 & st, ct = st >>> 13, ut = 0 | s[8], ft = 8191 & ut, ht = ut >>> 13, pt = 0 | s[9], dt = 8191 & pt, mt = pt >>> 13; (r.negative = t.negative ^ e.negative), (r.length = 19); var gt = (((c + (n = Math.imul(f, U))) | 0) + ((8191 & (i = ((i = Math.imul(f, V)) + Math.imul(h, U)) | 0)) << 13)) | 0; (c = ((((a = Math.imul(h, V)) + (i >>> 13)) | 0) + (gt >>> 26)) | 0), (gt &= 67108863), (n = Math.imul(d, U)), (i = ((i = Math.imul(d, V)) + Math.imul(m, U)) | 0), (a = Math.imul(m, V)); var vt = (((c + (n = (n + Math.imul(f, q)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(f, G)) | 0) + Math.imul(h, q)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(h, G)) | 0) + (i >>> 13)) | 0) + (vt >>> 26)) | 0), (vt &= 67108863), (n = Math.imul(v, U)), (i = ((i = Math.imul(v, V)) + Math.imul(y, U)) | 0), (a = Math.imul(y, V)), (n = (n + Math.imul(d, q)) | 0), (i = ((i = (i + Math.imul(d, G)) | 0) + Math.imul(m, q)) | 0), (a = (a + Math.imul(m, G)) | 0); var yt = (((c + (n = (n + Math.imul(f, W)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(f, Z)) | 0) + Math.imul(h, W)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(h, Z)) | 0) + (i >>> 13)) | 0) + (yt >>> 26)) | 0), (yt &= 67108863), (n = Math.imul(b, U)), (i = ((i = Math.imul(b, V)) + Math.imul(_, U)) | 0), (a = Math.imul(_, V)), (n = (n + Math.imul(v, q)) | 0), (i = ((i = (i + Math.imul(v, G)) | 0) + Math.imul(y, q)) | 0), (a = (a + Math.imul(y, G)) | 0), (n = (n + Math.imul(d, W)) | 0), (i = ((i = (i + Math.imul(d, Z)) | 0) + Math.imul(m, W)) | 0), (a = (a + Math.imul(m, Z)) | 0); var xt = (((c + (n = (n + Math.imul(f, J)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(f, K)) | 0) + Math.imul(h, J)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(h, K)) | 0) + (i >>> 13)) | 0) + (xt >>> 26)) | 0), (xt &= 67108863), (n = Math.imul(T, U)), (i = ((i = Math.imul(T, V)) + Math.imul(k, U)) | 0), (a = Math.imul(k, V)), (n = (n + Math.imul(b, q)) | 0), (i = ((i = (i + Math.imul(b, G)) | 0) + Math.imul(_, q)) | 0), (a = (a + Math.imul(_, G)) | 0), (n = (n + Math.imul(v, W)) | 0), (i = ((i = (i + Math.imul(v, Z)) | 0) + Math.imul(y, W)) | 0), (a = (a + Math.imul(y, Z)) | 0), (n = (n + Math.imul(d, J)) | 0), (i = ((i = (i + Math.imul(d, K)) | 0) + Math.imul(m, J)) | 0), (a = (a + Math.imul(m, K)) | 0); var bt = (((c + (n = (n + Math.imul(f, $)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(f, tt)) | 0) + Math.imul(h, $)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(h, tt)) | 0) + (i >>> 13)) | 0) + (bt >>> 26)) | 0), (bt &= 67108863), (n = Math.imul(M, U)), (i = ((i = Math.imul(M, V)) + Math.imul(S, U)) | 0), (a = Math.imul(S, V)), (n = (n + Math.imul(T, q)) | 0), (i = ((i = (i + Math.imul(T, G)) | 0) + Math.imul(k, q)) | 0), (a = (a + Math.imul(k, G)) | 0), (n = (n + Math.imul(b, W)) | 0), (i = ((i = (i + Math.imul(b, Z)) | 0) + Math.imul(_, W)) | 0), (a = (a + Math.imul(_, Z)) | 0), (n = (n + Math.imul(v, J)) | 0), (i = ((i = (i + Math.imul(v, K)) | 0) + Math.imul(y, J)) | 0), (a = (a + Math.imul(y, K)) | 0), (n = (n + Math.imul(d, $)) | 0), (i = ((i = (i + Math.imul(d, tt)) | 0) + Math.imul(m, $)) | 0), (a = (a + Math.imul(m, tt)) | 0); var _t = (((c + (n = (n + Math.imul(f, rt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(f, nt)) | 0) + Math.imul(h, rt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(h, nt)) | 0) + (i >>> 13)) | 0) + (_t >>> 26)) | 0), (_t &= 67108863), (n = Math.imul(L, U)), (i = ((i = Math.imul(L, V)) + Math.imul(C, U)) | 0), (a = Math.imul(C, V)), (n = (n + Math.imul(M, q)) | 0), (i = ((i = (i + Math.imul(M, G)) | 0) + Math.imul(S, q)) | 0), (a = (a + Math.imul(S, G)) | 0), (n = (n + Math.imul(T, W)) | 0), (i = ((i = (i + Math.imul(T, Z)) | 0) + Math.imul(k, W)) | 0), (a = (a + Math.imul(k, Z)) | 0), (n = (n + Math.imul(b, J)) | 0), (i = ((i = (i + Math.imul(b, K)) | 0) + Math.imul(_, J)) | 0), (a = (a + Math.imul(_, K)) | 0), (n = (n + Math.imul(v, $)) | 0), (i = ((i = (i + Math.imul(v, tt)) | 0) + Math.imul(y, $)) | 0), (a = (a + Math.imul(y, tt)) | 0), (n = (n + Math.imul(d, rt)) | 0), (i = ((i = (i + Math.imul(d, nt)) | 0) + Math.imul(m, rt)) | 0), (a = (a + Math.imul(m, nt)) | 0); var wt = (((c + (n = (n + Math.imul(f, at)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(f, ot)) | 0) + Math.imul(h, at)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(h, ot)) | 0) + (i >>> 13)) | 0) + (wt >>> 26)) | 0), (wt &= 67108863), (n = Math.imul(I, U)), (i = ((i = Math.imul(I, V)) + Math.imul(O, U)) | 0), (a = Math.imul(O, V)), (n = (n + Math.imul(L, q)) | 0), (i = ((i = (i + Math.imul(L, G)) | 0) + Math.imul(C, q)) | 0), (a = (a + Math.imul(C, G)) | 0), (n = (n + Math.imul(M, W)) | 0), (i = ((i = (i + Math.imul(M, Z)) | 0) + Math.imul(S, W)) | 0), (a = (a + Math.imul(S, Z)) | 0), (n = (n + Math.imul(T, J)) | 0), (i = ((i = (i + Math.imul(T, K)) | 0) + Math.imul(k, J)) | 0), (a = (a + Math.imul(k, K)) | 0), (n = (n + Math.imul(b, $)) | 0), (i = ((i = (i + Math.imul(b, tt)) | 0) + Math.imul(_, $)) | 0), (a = (a + Math.imul(_, tt)) | 0), (n = (n + Math.imul(v, rt)) | 0), (i = ((i = (i + Math.imul(v, nt)) | 0) + Math.imul(y, rt)) | 0), (a = (a + Math.imul(y, nt)) | 0), (n = (n + Math.imul(d, at)) | 0), (i = ((i = (i + Math.imul(d, ot)) | 0) + Math.imul(m, at)) | 0), (a = (a + Math.imul(m, ot)) | 0); var Tt = (((c + (n = (n + Math.imul(f, lt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(f, ct)) | 0) + Math.imul(h, lt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(h, ct)) | 0) + (i >>> 13)) | 0) + (Tt >>> 26)) | 0), (Tt &= 67108863), (n = Math.imul(D, U)), (i = ((i = Math.imul(D, V)) + Math.imul(R, U)) | 0), (a = Math.imul(R, V)), (n = (n + Math.imul(I, q)) | 0), (i = ((i = (i + Math.imul(I, G)) | 0) + Math.imul(O, q)) | 0), (a = (a + Math.imul(O, G)) | 0), (n = (n + Math.imul(L, W)) | 0), (i = ((i = (i + Math.imul(L, Z)) | 0) + Math.imul(C, W)) | 0), (a = (a + Math.imul(C, Z)) | 0), (n = (n + Math.imul(M, J)) | 0), (i = ((i = (i + Math.imul(M, K)) | 0) + Math.imul(S, J)) | 0), (a = (a + Math.imul(S, K)) | 0), (n = (n + Math.imul(T, $)) | 0), (i = ((i = (i + Math.imul(T, tt)) | 0) + Math.imul(k, $)) | 0), (a = (a + Math.imul(k, tt)) | 0), (n = (n + Math.imul(b, rt)) | 0), (i = ((i = (i + Math.imul(b, nt)) | 0) + Math.imul(_, rt)) | 0), (a = (a + Math.imul(_, nt)) | 0), (n = (n + Math.imul(v, at)) | 0), (i = ((i = (i + Math.imul(v, ot)) | 0) + Math.imul(y, at)) | 0), (a = (a + Math.imul(y, ot)) | 0), (n = (n + Math.imul(d, lt)) | 0), (i = ((i = (i + Math.imul(d, ct)) | 0) + Math.imul(m, lt)) | 0), (a = (a + Math.imul(m, ct)) | 0); var kt = (((c + (n = (n + Math.imul(f, ft)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(f, ht)) | 0) + Math.imul(h, ft)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(h, ht)) | 0) + (i >>> 13)) | 0) + (kt >>> 26)) | 0), (kt &= 67108863), (n = Math.imul(B, U)), (i = ((i = Math.imul(B, V)) + Math.imul(N, U)) | 0), (a = Math.imul(N, V)), (n = (n + Math.imul(D, q)) | 0), (i = ((i = (i + Math.imul(D, G)) | 0) + Math.imul(R, q)) | 0), (a = (a + Math.imul(R, G)) | 0), (n = (n + Math.imul(I, W)) | 0), (i = ((i = (i + Math.imul(I, Z)) | 0) + Math.imul(O, W)) | 0), (a = (a + Math.imul(O, Z)) | 0), (n = (n + Math.imul(L, J)) | 0), (i = ((i = (i + Math.imul(L, K)) | 0) + Math.imul(C, J)) | 0), (a = (a + Math.imul(C, K)) | 0), (n = (n + Math.imul(M, $)) | 0), (i = ((i = (i + Math.imul(M, tt)) | 0) + Math.imul(S, $)) | 0), (a = (a + Math.imul(S, tt)) | 0), (n = (n + Math.imul(T, rt)) | 0), (i = ((i = (i + Math.imul(T, nt)) | 0) + Math.imul(k, rt)) | 0), (a = (a + Math.imul(k, nt)) | 0), (n = (n + Math.imul(b, at)) | 0), (i = ((i = (i + Math.imul(b, ot)) | 0) + Math.imul(_, at)) | 0), (a = (a + Math.imul(_, ot)) | 0), (n = (n + Math.imul(v, lt)) | 0), (i = ((i = (i + Math.imul(v, ct)) | 0) + Math.imul(y, lt)) | 0), (a = (a + Math.imul(y, ct)) | 0), (n = (n + Math.imul(d, ft)) | 0), (i = ((i = (i + Math.imul(d, ht)) | 0) + Math.imul(m, ft)) | 0), (a = (a + Math.imul(m, ht)) | 0); var At = (((c + (n = (n + Math.imul(f, dt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(f, mt)) | 0) + Math.imul(h, dt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(h, mt)) | 0) + (i >>> 13)) | 0) + (At >>> 26)) | 0), (At &= 67108863), (n = Math.imul(B, q)), (i = ((i = Math.imul(B, G)) + Math.imul(N, q)) | 0), (a = Math.imul(N, G)), (n = (n + Math.imul(D, W)) | 0), (i = ((i = (i + Math.imul(D, Z)) | 0) + Math.imul(R, W)) | 0), (a = (a + Math.imul(R, Z)) | 0), (n = (n + Math.imul(I, J)) | 0), (i = ((i = (i + Math.imul(I, K)) | 0) + Math.imul(O, J)) | 0), (a = (a + Math.imul(O, K)) | 0), (n = (n + Math.imul(L, $)) | 0), (i = ((i = (i + Math.imul(L, tt)) | 0) + Math.imul(C, $)) | 0), (a = (a + Math.imul(C, tt)) | 0), (n = (n + Math.imul(M, rt)) | 0), (i = ((i = (i + Math.imul(M, nt)) | 0) + Math.imul(S, rt)) | 0), (a = (a + Math.imul(S, nt)) | 0), (n = (n + Math.imul(T, at)) | 0), (i = ((i = (i + Math.imul(T, ot)) | 0) + Math.imul(k, at)) | 0), (a = (a + Math.imul(k, ot)) | 0), (n = (n + Math.imul(b, lt)) | 0), (i = ((i = (i + Math.imul(b, ct)) | 0) + Math.imul(_, lt)) | 0), (a = (a + Math.imul(_, ct)) | 0), (n = (n + Math.imul(v, ft)) | 0), (i = ((i = (i + Math.imul(v, ht)) | 0) + Math.imul(y, ft)) | 0), (a = (a + Math.imul(y, ht)) | 0); var Mt = (((c + (n = (n + Math.imul(d, dt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(d, mt)) | 0) + Math.imul(m, dt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(m, mt)) | 0) + (i >>> 13)) | 0) + (Mt >>> 26)) | 0), (Mt &= 67108863), (n = Math.imul(B, W)), (i = ((i = Math.imul(B, Z)) + Math.imul(N, W)) | 0), (a = Math.imul(N, Z)), (n = (n + Math.imul(D, J)) | 0), (i = ((i = (i + Math.imul(D, K)) | 0) + Math.imul(R, J)) | 0), (a = (a + Math.imul(R, K)) | 0), (n = (n + Math.imul(I, $)) | 0), (i = ((i = (i + Math.imul(I, tt)) | 0) + Math.imul(O, $)) | 0), (a = (a + Math.imul(O, tt)) | 0), (n = (n + Math.imul(L, rt)) | 0), (i = ((i = (i + Math.imul(L, nt)) | 0) + Math.imul(C, rt)) | 0), (a = (a + Math.imul(C, nt)) | 0), (n = (n + Math.imul(M, at)) | 0), (i = ((i = (i + Math.imul(M, ot)) | 0) + Math.imul(S, at)) | 0), (a = (a + Math.imul(S, ot)) | 0), (n = (n + Math.imul(T, lt)) | 0), (i = ((i = (i + Math.imul(T, ct)) | 0) + Math.imul(k, lt)) | 0), (a = (a + Math.imul(k, ct)) | 0), (n = (n + Math.imul(b, ft)) | 0), (i = ((i = (i + Math.imul(b, ht)) | 0) + Math.imul(_, ft)) | 0), (a = (a + Math.imul(_, ht)) | 0); var St = (((c + (n = (n + Math.imul(v, dt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(v, mt)) | 0) + Math.imul(y, dt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(y, mt)) | 0) + (i >>> 13)) | 0) + (St >>> 26)) | 0), (St &= 67108863), (n = Math.imul(B, J)), (i = ((i = Math.imul(B, K)) + Math.imul(N, J)) | 0), (a = Math.imul(N, K)), (n = (n + Math.imul(D, $)) | 0), (i = ((i = (i + Math.imul(D, tt)) | 0) + Math.imul(R, $)) | 0), (a = (a + Math.imul(R, tt)) | 0), (n = (n + Math.imul(I, rt)) | 0), (i = ((i = (i + Math.imul(I, nt)) | 0) + Math.imul(O, rt)) | 0), (a = (a + Math.imul(O, nt)) | 0), (n = (n + Math.imul(L, at)) | 0), (i = ((i = (i + Math.imul(L, ot)) | 0) + Math.imul(C, at)) | 0), (a = (a + Math.imul(C, ot)) | 0), (n = (n + Math.imul(M, lt)) | 0), (i = ((i = (i + Math.imul(M, ct)) | 0) + Math.imul(S, lt)) | 0), (a = (a + Math.imul(S, ct)) | 0), (n = (n + Math.imul(T, ft)) | 0), (i = ((i = (i + Math.imul(T, ht)) | 0) + Math.imul(k, ft)) | 0), (a = (a + Math.imul(k, ht)) | 0); var Et = (((c + (n = (n + Math.imul(b, dt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(b, mt)) | 0) + Math.imul(_, dt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(_, mt)) | 0) + (i >>> 13)) | 0) + (Et >>> 26)) | 0), (Et &= 67108863), (n = Math.imul(B, $)), (i = ((i = Math.imul(B, tt)) + Math.imul(N, $)) | 0), (a = Math.imul(N, tt)), (n = (n + Math.imul(D, rt)) | 0), (i = ((i = (i + Math.imul(D, nt)) | 0) + Math.imul(R, rt)) | 0), (a = (a + Math.imul(R, nt)) | 0), (n = (n + Math.imul(I, at)) | 0), (i = ((i = (i + Math.imul(I, ot)) | 0) + Math.imul(O, at)) | 0), (a = (a + Math.imul(O, ot)) | 0), (n = (n + Math.imul(L, lt)) | 0), (i = ((i = (i + Math.imul(L, ct)) | 0) + Math.imul(C, lt)) | 0), (a = (a + Math.imul(C, ct)) | 0), (n = (n + Math.imul(M, ft)) | 0), (i = ((i = (i + Math.imul(M, ht)) | 0) + Math.imul(S, ft)) | 0), (a = (a + Math.imul(S, ht)) | 0); var Lt = (((c + (n = (n + Math.imul(T, dt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(T, mt)) | 0) + Math.imul(k, dt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(k, mt)) | 0) + (i >>> 13)) | 0) + (Lt >>> 26)) | 0), (Lt &= 67108863), (n = Math.imul(B, rt)), (i = ((i = Math.imul(B, nt)) + Math.imul(N, rt)) | 0), (a = Math.imul(N, nt)), (n = (n + Math.imul(D, at)) | 0), (i = ((i = (i + Math.imul(D, ot)) | 0) + Math.imul(R, at)) | 0), (a = (a + Math.imul(R, ot)) | 0), (n = (n + Math.imul(I, lt)) | 0), (i = ((i = (i + Math.imul(I, ct)) | 0) + Math.imul(O, lt)) | 0), (a = (a + Math.imul(O, ct)) | 0), (n = (n + Math.imul(L, ft)) | 0), (i = ((i = (i + Math.imul(L, ht)) | 0) + Math.imul(C, ft)) | 0), (a = (a + Math.imul(C, ht)) | 0); var Ct = (((c + (n = (n + Math.imul(M, dt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(M, mt)) | 0) + Math.imul(S, dt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(S, mt)) | 0) + (i >>> 13)) | 0) + (Ct >>> 26)) | 0), (Ct &= 67108863), (n = Math.imul(B, at)), (i = ((i = Math.imul(B, ot)) + Math.imul(N, at)) | 0), (a = Math.imul(N, ot)), (n = (n + Math.imul(D, lt)) | 0), (i = ((i = (i + Math.imul(D, ct)) | 0) + Math.imul(R, lt)) | 0), (a = (a + Math.imul(R, ct)) | 0), (n = (n + Math.imul(I, ft)) | 0), (i = ((i = (i + Math.imul(I, ht)) | 0) + Math.imul(O, ft)) | 0), (a = (a + Math.imul(O, ht)) | 0); var Pt = (((c + (n = (n + Math.imul(L, dt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(L, mt)) | 0) + Math.imul(C, dt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(C, mt)) | 0) + (i >>> 13)) | 0) + (Pt >>> 26)) | 0), (Pt &= 67108863), (n = Math.imul(B, lt)), (i = ((i = Math.imul(B, ct)) + Math.imul(N, lt)) | 0), (a = Math.imul(N, ct)), (n = (n + Math.imul(D, ft)) | 0), (i = ((i = (i + Math.imul(D, ht)) | 0) + Math.imul(R, ft)) | 0), (a = (a + Math.imul(R, ht)) | 0); var It = (((c + (n = (n + Math.imul(I, dt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(I, mt)) | 0) + Math.imul(O, dt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(O, mt)) | 0) + (i >>> 13)) | 0) + (It >>> 26)) | 0), (It &= 67108863), (n = Math.imul(B, ft)), (i = ((i = Math.imul(B, ht)) + Math.imul(N, ft)) | 0), (a = Math.imul(N, ht)); var Ot = (((c + (n = (n + Math.imul(D, dt)) | 0)) | 0) + ((8191 & (i = ((i = (i + Math.imul(D, mt)) | 0) + Math.imul(R, dt)) | 0)) << 13)) | 0; (c = ((((a = (a + Math.imul(R, mt)) | 0) + (i >>> 13)) | 0) + (Ot >>> 26)) | 0), (Ot &= 67108863); var zt = (((c + (n = Math.imul(B, dt))) | 0) + ((8191 & (i = ((i = Math.imul(B, mt)) + Math.imul(N, dt)) | 0)) << 13)) | 0; return ( (c = ((((a = Math.imul(N, mt)) + (i >>> 13)) | 0) + (zt >>> 26)) | 0), (zt &= 67108863), (l[0] = gt), (l[1] = vt), (l[2] = yt), (l[3] = xt), (l[4] = bt), (l[5] = _t), (l[6] = wt), (l[7] = Tt), (l[8] = kt), (l[9] = At), (l[10] = Mt), (l[11] = St), (l[12] = Et), (l[13] = Lt), (l[14] = Ct), (l[15] = Pt), (l[16] = It), (l[17] = Ot), (l[18] = zt), 0 !== c && ((l[19] = c), r.length++), r ); }; function m(t, e, r) { return new g().mulp(t, e, r); } function g(t, e) { (this.x = t), (this.y = e); } Math.imul || (d = p), (a.prototype.mulTo = function (t, e) { var r = this.length + t.length; return 10 === this.length && 10 === t.length ? d(this, t, e) : r < 63 ? p(this, t, e) : r < 1024 ? (function (t, e, r) { (r.negative = e.negative ^ t.negative), (r.length = t.length + e.length); for ( var n = 0, i = 0, a = 0; a < r.length - 1; a++ ) { var o = i; i = 0; for ( var s = 67108863 & n, l = Math.min( a, e.length - 1, ), c = Math.max( 0, a - t.length + 1, ); c <= l; c++ ) { var u = a - c, f = (0 | t.words[u]) * (0 | e.words[c]), h = 67108863 & f; (s = 67108863 & (h = (h + s) | 0)), (i += (o = ((o = (o + ((f / 67108864) | 0)) | 0) + (h >>> 26)) | 0) >>> 26), (o &= 67108863); } (r.words[a] = s), (n = o), (o = i); } return ( 0 !== n ? (r.words[a] = n) : r.length--, r.strip() ); })(this, t, e) : m(this, t, e); }), (g.prototype.makeRBT = function (t) { for ( var e = new Array(t), r = a.prototype._countBits(t) - 1, n = 0; n < t; n++ ) e[n] = this.revBin(n, r, t); return e; }), (g.prototype.revBin = function (t, e, r) { if (0 === t || t === r - 1) return t; for (var n = 0, i = 0; i < e; i++) (n |= (1 & t) << (e - i - 1)), (t >>= 1); return n; }), (g.prototype.permute = function ( t, e, r, n, i, a, ) { for (var o = 0; o < a; o++) (n[o] = e[t[o]]), (i[o] = r[t[o]]); }), (g.prototype.transform = function ( t, e, r, n, i, a, ) { this.permute(a, t, e, r, n, i); for (var o = 1; o < i; o <<= 1) for ( var s = o << 1, l = Math.cos((2 * Math.PI) / s), c = Math.sin((2 * Math.PI) / s), u = 0; u < i; u += s ) for ( var f = l, h = c, p = 0; p < o; p++ ) { var d = r[u + p], m = n[u + p], g = r[u + p + o], v = n[u + p + o], y = f * g - h * v; (v = f * v + h * g), (g = y), (r[u + p] = d + g), (n[u + p] = m + v), (r[u + p + o] = d - g), (n[u + p + o] = m - v), p !== s && ((y = l * f - c * h), (h = l * h + c * f), (f = y)); } }), (g.prototype.guessLen13b = function (t, e) { var r = 1 | Math.max(e, t), n = 1 & r, i = 0; for (r = (r / 2) | 0; r; r >>>= 1) i++; return 1 << (i + 1 + n); }), (g.prototype.conjugate = function ( t, e, r, ) { if (!(r <= 1)) for (var n = 0; n < r / 2; n++) { var i = t[n]; (t[n] = t[r - n - 1]), (t[r - n - 1] = i), (i = e[n]), (e[n] = -e[r - n - 1]), (e[r - n - 1] = -i); } }), (g.prototype.normalize13b = function ( t, e, ) { for (var r = 0, n = 0; n < e / 2; n++) { var i = 8192 * Math.round(t[2 * n + 1] / e) + Math.round(t[2 * n] / e) + r; (t[n] = 67108863 & i), (r = i < 67108864 ? 0 : (i / 67108864) | 0); } return t; }), (g.prototype.convert13b = function ( t, e, r, i, ) { for (var a = 0, o = 0; o < e; o++) (a += 0 | t[o]), (r[2 * o] = 8191 & a), (a >>>= 13), (r[2 * o + 1] = 8191 & a), (a >>>= 13); for (o = 2 * e; o < i; ++o) r[o] = 0; n(0 === a), n(0 == (-8192 & a)); }), (g.prototype.stub = function (t) { for ( var e = new Array(t), r = 0; r < t; r++ ) e[r] = 0; return e; }), (g.prototype.mulp = function (t, e, r) { var n = 2 * this.guessLen13b(t.length, e.length), i = this.makeRBT(n), a = this.stub(n), o = new Array(n), s = new Array(n), l = new Array(n), c = new Array(n), u = new Array(n), f = new Array(n), h = r.words; (h.length = n), this.convert13b( t.words, t.length, o, n, ), this.convert13b( e.words, e.length, c, n, ), this.transform(o, a, s, l, n, i), this.transform(c, a, u, f, n, i); for (var p = 0; p < n; p++) { var d = s[p] * u[p] - l[p] * f[p]; (l[p] = s[p] * f[p] + l[p] * u[p]), (s[p] = d); } return ( this.conjugate(s, l, n), this.transform(s, l, h, a, n, i), this.conjugate(h, a, n), this.normalize13b(h, n), (r.negative = t.negative ^ e.negative), (r.length = t.length + e.length), r.strip() ); }), (a.prototype.mul = function (t) { var e = new a(null); return ( (e.words = new Array( this.length + t.length, )), this.mulTo(t, e) ); }), (a.prototype.mulf = function (t) { var e = new a(null); return ( (e.words = new Array( this.length + t.length, )), m(this, t, e) ); }), (a.prototype.imul = function (t) { return this.clone().mulTo(t, this); }), (a.prototype.imuln = function (t) { n("number" == typeof t), n(t < 67108864); for ( var e = 0, r = 0; r < this.length; r++ ) { var i = (0 | this.words[r]) * t, a = (67108863 & i) + (67108863 & e); (e >>= 26), (e += (i / 67108864) | 0), (e += a >>> 26), (this.words[r] = 67108863 & a); } return ( 0 !== e && ((this.words[r] = e), this.length++), this ); }), (a.prototype.muln = function (t) { return this.clone().imuln(t); }), (a.prototype.sqr = function () { return this.mul(this); }), (a.prototype.isqr = function () { return this.imul(this.clone()); }), (a.prototype.pow = function (t) { var e = (function (t) { for ( var e = new Array(t.bitLength()), r = 0; r < e.length; r++ ) { var n = (r / 26) | 0, i = r % 26; e[r] = (t.words[n] & (1 << i)) >>> i; } return e; })(t); if (0 === e.length) return new a(1); for ( var r = this, n = 0; n < e.length && 0 === e[n]; n++, r = r.sqr() ); if (++n < e.length) for ( var i = r.sqr(); n < e.length; n++, i = i.sqr() ) 0 !== e[n] && (r = r.mul(i)); return r; }), (a.prototype.iushln = function (t) { n("number" == typeof t && t >= 0); var e, r = t % 26, i = (t - r) / 26, a = (67108863 >>> (26 - r)) << (26 - r); if (0 !== r) { var o = 0; for (e = 0; e < this.length; e++) { var s = this.words[e] & a, l = ((0 | this.words[e]) - s) << r; (this.words[e] = l | o), (o = s >>> (26 - r)); } o && ((this.words[e] = o), this.length++); } if (0 !== i) { for (e = this.length - 1; e >= 0; e--) this.words[e + i] = this.words[e]; for (e = 0; e < i; e++) this.words[e] = 0; this.length += i; } return this.strip(); }), (a.prototype.ishln = function (t) { return ( n(0 === this.negative), this.iushln(t) ); }), (a.prototype.iushrn = function (t, e, r) { var i; n("number" == typeof t && t >= 0), (i = e ? (e - (e % 26)) / 26 : 0); var a = t % 26, o = Math.min((t - a) / 26, this.length), s = 67108863 ^ ((67108863 >>> a) << a), l = r; if (((i -= o), (i = Math.max(0, i)), l)) { for (var c = 0; c < o; c++) l.words[c] = this.words[c]; l.length = o; } if (0 === o); else if (this.length > o) for ( this.length -= o, c = 0; c < this.length; c++ ) this.words[c] = this.words[c + o]; else (this.words[0] = 0), (this.length = 1); var u = 0; for ( c = this.length - 1; c >= 0 && (0 !== u || c >= i); c-- ) { var f = 0 | this.words[c]; (this.words[c] = (u << (26 - a)) | (f >>> a)), (u = f & s); } return ( l && 0 !== u && (l.words[l.length++] = u), 0 === this.length && ((this.words[0] = 0), (this.length = 1)), this.strip() ); }), (a.prototype.ishrn = function (t, e, r) { return ( n(0 === this.negative), this.iushrn(t, e, r) ); }), (a.prototype.shln = function (t) { return this.clone().ishln(t); }), (a.prototype.ushln = function (t) { return this.clone().iushln(t); }), (a.prototype.shrn = function (t) { return this.clone().ishrn(t); }), (a.prototype.ushrn = function (t) { return this.clone().iushrn(t); }), (a.prototype.testn = function (t) { n("number" == typeof t && t >= 0); var e = t % 26, r = (t - e) / 26, i = 1 << e; return ( !(this.length <= r) && !!(this.words[r] & i) ); }), (a.prototype.imaskn = function (t) { n("number" == typeof t && t >= 0); var e = t % 26, r = (t - e) / 26; if ( (n( 0 === this.negative, "imaskn works only with positive numbers", ), this.length <= r) ) return this; if ( (0 !== e && r++, (this.length = Math.min( r, this.length, )), 0 !== e) ) { var i = 67108863 ^ ((67108863 >>> e) << e); this.words[this.length - 1] &= i; } return this.strip(); }), (a.prototype.maskn = function (t) { return this.clone().imaskn(t); }), (a.prototype.iaddn = function (t) { return ( n("number" == typeof t), n(t < 67108864), t < 0 ? this.isubn(-t) : 0 !== this.negative ? 1 === this.length && (0 | this.words[0]) < t ? ((this.words[0] = t - (0 | this.words[0])), (this.negative = 0), this) : ((this.negative = 0), this.isubn(t), (this.negative = 1), this) : this._iaddn(t) ); }), (a.prototype._iaddn = function (t) { this.words[0] += t; for ( var e = 0; e < this.length && this.words[e] >= 67108864; e++ ) (this.words[e] -= 67108864), e === this.length - 1 ? (this.words[e + 1] = 1) : this.words[e + 1]++; return ( (this.length = Math.max( this.length, e + 1, )), this ); }), (a.prototype.isubn = function (t) { if ( (n("number" == typeof t), n(t < 67108864), t < 0) ) return this.iaddn(-t); if (0 !== this.negative) return ( (this.negative = 0), this.iaddn(t), (this.negative = 1), this ); if ( ((this.words[0] -= t), 1 === this.length && this.words[0] < 0) ) (this.words[0] = -this.words[0]), (this.negative = 1); else for ( var e = 0; e < this.length && this.words[e] < 0; e++ ) (this.words[e] += 67108864), (this.words[e + 1] -= 1); return this.strip(); }), (a.prototype.addn = function (t) { return this.clone().iaddn(t); }), (a.prototype.subn = function (t) { return this.clone().isubn(t); }), (a.prototype.iabs = function () { return (this.negative = 0), this; }), (a.prototype.abs = function () { return this.clone().iabs(); }), (a.prototype._ishlnsubmul = function ( t, e, r, ) { var i, a, o = t.length + r; this._expand(o); var s = 0; for (i = 0; i < t.length; i++) { a = (0 | this.words[i + r]) + s; var l = (0 | t.words[i]) * e; (s = ((a -= 67108863 & l) >> 26) - ((l / 67108864) | 0)), (this.words[i + r] = 67108863 & a); } for (; i < this.length - r; i++) (s = (a = (0 | this.words[i + r]) + s) >> 26), (this.words[i + r] = 67108863 & a); if (0 === s) return this.strip(); for ( n(-1 === s), s = 0, i = 0; i < this.length; i++ ) (s = (a = -(0 | this.words[i]) + s) >> 26), (this.words[i] = 67108863 & a); return (this.negative = 1), this.strip(); }), (a.prototype._wordDiv = function (t, e) { var r = (this.length, t.length), n = this.clone(), i = t, o = 0 | i.words[i.length - 1]; 0 !== (r = 26 - this._countBits(o)) && ((i = i.ushln(r)), n.iushln(r), (o = 0 | i.words[i.length - 1])); var s, l = n.length - i.length; if ("mod" !== e) { ((s = new a(null)).length = l + 1), (s.words = new Array(s.length)); for (var c = 0; c < s.length; c++) s.words[c] = 0; } var u = n.clone()._ishlnsubmul(i, 1, l); 0 === u.negative && ((n = u), s && (s.words[l] = 1)); for (var f = l - 1; f >= 0; f--) { var h = 67108864 * (0 | n.words[i.length + f]) + (0 | n.words[i.length + f - 1]); for ( h = Math.min((h / o) | 0, 67108863), n._ishlnsubmul(i, h, f); 0 !== n.negative; ) h--, (n.negative = 0), n._ishlnsubmul(i, 1, f), n.isZero() || (n.negative ^= 1); s && (s.words[f] = h); } return ( s && s.strip(), n.strip(), "div" !== e && 0 !== r && n.iushrn(r), { div: s || null, mod: n } ); }), (a.prototype.divmod = function (t, e, r) { return ( n(!t.isZero()), this.isZero() ? { div: new a(0), mod: new a(0) } : 0 !== this.negative && 0 === t.negative ? ((s = this.neg().divmod(t, e)), "mod" !== e && (i = s.div.neg()), "div" !== e && ((o = s.mod.neg()), r && 0 !== o.negative && o.iadd(t)), { div: i, mod: o }) : 0 === this.negative && 0 !== t.negative ? ((s = this.divmod(t.neg(), e)), "mod" !== e && (i = s.div.neg()), { div: i, mod: s.mod }) : 0 != (this.negative & t.negative) ? ((s = this.neg().divmod( t.neg(), e, )), "div" !== e && ((o = s.mod.neg()), r && 0 !== o.negative && o.isub(t)), { div: s.div, mod: o }) : t.length > this.length || this.cmp(t) < 0 ? { div: new a(0), mod: this } : 1 === t.length ? "div" === e ? { div: this.divn( t.words[0], ), mod: null, } : "mod" === e ? { div: null, mod: new a( this.modn( t.words[0], ), ), } : { div: this.divn( t.words[0], ), mod: new a( this.modn( t.words[0], ), ), } : this._wordDiv(t, e) ); var i, o, s; }), (a.prototype.div = function (t) { return this.divmod(t, "div", !1).div; }), (a.prototype.mod = function (t) { return this.divmod(t, "mod", !1).mod; }), (a.prototype.umod = function (t) { return this.divmod(t, "mod", !0).mod; }), (a.prototype.divRound = function (t) { var e = this.divmod(t); if (e.mod.isZero()) return e.div; var r = 0 !== e.div.negative ? e.mod.isub(t) : e.mod, n = t.ushrn(1), i = t.andln(1), a = r.cmp(n); return a < 0 || (1 === i && 0 === a) ? e.div : 0 !== e.div.negative ? e.div.isubn(1) : e.div.iaddn(1); }), (a.prototype.modn = function (t) { n(t <= 67108863); for ( var e = (1 << 26) % t, r = 0, i = this.length - 1; i >= 0; i-- ) r = (e * r + (0 | this.words[i])) % t; return r; }), (a.prototype.idivn = function (t) { n(t <= 67108863); for ( var e = 0, r = this.length - 1; r >= 0; r-- ) { var i = (0 | this.words[r]) + 67108864 * e; (this.words[r] = (i / t) | 0), (e = i % t); } return this.strip(); }), (a.prototype.divn = function (t) { return this.clone().idivn(t); }), (a.prototype.egcd = function (t) { n(0 === t.negative), n(!t.isZero()); var e = this, r = t.clone(); e = 0 !== e.negative ? e.umod(t) : e.clone(); for ( var i = new a(1), o = new a(0), s = new a(0), l = new a(1), c = 0; e.isEven() && r.isEven(); ) e.iushrn(1), r.iushrn(1), ++c; for ( var u = r.clone(), f = e.clone(); !e.isZero(); ) { for ( var h = 0, p = 1; 0 == (e.words[0] & p) && h < 26; ++h, p <<= 1 ); if (h > 0) for (e.iushrn(h); h-- > 0; ) (i.isOdd() || o.isOdd()) && (i.iadd(u), o.isub(f)), i.iushrn(1), o.iushrn(1); for ( var d = 0, m = 1; 0 == (r.words[0] & m) && d < 26; ++d, m <<= 1 ); if (d > 0) for (r.iushrn(d); d-- > 0; ) (s.isOdd() || l.isOdd()) && (s.iadd(u), l.isub(f)), s.iushrn(1), l.iushrn(1); e.cmp(r) >= 0 ? (e.isub(r), i.isub(s), o.isub(l)) : (r.isub(e), s.isub(i), l.isub(o)); } return { a: s, b: l, gcd: r.iushln(c) }; }), (a.prototype._invmp = function (t) { n(0 === t.negative), n(!t.isZero()); var e = this, r = t.clone(); e = 0 !== e.negative ? e.umod(t) : e.clone(); for ( var i, o = new a(1), s = new a(0), l = r.clone(); e.cmpn(1) > 0 && r.cmpn(1) > 0; ) { for ( var c = 0, u = 1; 0 == (e.words[0] & u) && c < 26; ++c, u <<= 1 ); if (c > 0) for (e.iushrn(c); c-- > 0; ) o.isOdd() && o.iadd(l), o.iushrn(1); for ( var f = 0, h = 1; 0 == (r.words[0] & h) && f < 26; ++f, h <<= 1 ); if (f > 0) for (r.iushrn(f); f-- > 0; ) s.isOdd() && s.iadd(l), s.iushrn(1); e.cmp(r) >= 0 ? (e.isub(r), o.isub(s)) : (r.isub(e), s.isub(o)); } return ( (i = 0 === e.cmpn(1) ? o : s).cmpn(0) < 0 && i.iadd(t), i ); }), (a.prototype.gcd = function (t) { if (this.isZero()) return t.abs(); if (t.isZero()) return this.abs(); var e = this.clone(), r = t.clone(); (e.negative = 0), (r.negative = 0); for ( var n = 0; e.isEven() && r.isEven(); n++ ) e.iushrn(1), r.iushrn(1); for (;;) { for (; e.isEven(); ) e.iushrn(1); for (; r.isEven(); ) r.iushrn(1); var i = e.cmp(r); if (i < 0) { var a = e; (e = r), (r = a); } else if (0 === i || 0 === r.cmpn(1)) break; e.isub(r); } return r.iushln(n); }), (a.prototype.invm = function (t) { return this.egcd(t).a.umod(t); }), (a.prototype.isEven = function () { return 0 == (1 & this.words[0]); }), (a.prototype.isOdd = function () { return 1 == (1 & this.words[0]); }), (a.prototype.andln = function (t) { return this.words[0] & t; }), (a.prototype.bincn = function (t) { n("number" == typeof t); var e = t % 26, r = (t - e) / 26, i = 1 << e; if (this.length <= r) return ( this._expand(r + 1), (this.words[r] |= i), this ); for ( var a = i, o = r; 0 !== a && o < this.length; o++ ) { var s = 0 | this.words[o]; (a = (s += a) >>> 26), (s &= 67108863), (this.words[o] = s); } return ( 0 !== a && ((this.words[o] = a), this.length++), this ); }), (a.prototype.isZero = function () { return ( 1 === this.length && 0 === this.words[0] ); }), (a.prototype.cmpn = function (t) { var e, r = t < 0; if (0 !== this.negative && !r) return -1; if (0 === this.negative && r) return 1; if ((this.strip(), this.length > 1)) e = 1; else { r && (t = -t), n(t <= 67108863, "Number is too big"); var i = 0 | this.words[0]; e = i === t ? 0 : i < t ? -1 : 1; } return 0 !== this.negative ? 0 | -e : e; }), (a.prototype.cmp = function (t) { if ( 0 !== this.negative && 0 === t.negative ) return -1; if ( 0 === this.negative && 0 !== t.negative ) return 1; var e = this.ucmp(t); return 0 !== this.negative ? 0 | -e : e; }), (a.prototype.ucmp = function (t) { if (this.length > t.length) return 1; if (this.length < t.length) return -1; for ( var e = 0, r = this.length - 1; r >= 0; r-- ) { var n = 0 | this.words[r], i = 0 | t.words[r]; if (n !== i) { n < i ? (e = -1) : n > i && (e = 1); break; } } return e; }), (a.prototype.gtn = function (t) { return 1 === this.cmpn(t); }), (a.prototype.gt = function (t) { return 1 === this.cmp(t); }), (a.prototype.gten = function (t) { return this.cmpn(t) >= 0; }), (a.prototype.gte = function (t) { return this.cmp(t) >= 0; }), (a.prototype.ltn = function (t) { return -1 === this.cmpn(t); }), (a.prototype.lt = function (t) { return -1 === this.cmp(t); }), (a.prototype.lten = function (t) { return this.cmpn(t) <= 0; }), (a.prototype.lte = function (t) { return this.cmp(t) <= 0; }), (a.prototype.eqn = function (t) { return 0 === this.cmpn(t); }), (a.prototype.eq = function (t) { return 0 === this.cmp(t); }), (a.red = function (t) { return new T(t); }), (a.prototype.toRed = function (t) { return ( n( !this.red, "Already a number in reduction context", ), n( 0 === this.negative, "red works only with positives", ), t.convertTo(this)._forceRed(t) ); }), (a.prototype.fromRed = function () { return ( n( this.red, "fromRed works only with numbers in reduction context", ), this.red.convertFrom(this) ); }), (a.prototype._forceRed = function (t) { return (this.red = t), this; }), (a.prototype.forceRed = function (t) { return ( n( !this.red, "Already a number in reduction context", ), this._forceRed(t) ); }), (a.prototype.redAdd = function (t) { return ( n( this.red, "redAdd works only with red numbers", ), this.red.add(this, t) ); }), (a.prototype.redIAdd = function (t) { return ( n( this.red, "redIAdd works only with red numbers", ), this.red.iadd(this, t) ); }), (a.prototype.redSub = function (t) { return ( n( this.red, "redSub works only with red numbers", ), this.red.sub(this, t) ); }), (a.prototype.redISub = function (t) { return ( n( this.red, "redISub works only with red numbers", ), this.red.isub(this, t) ); }), (a.prototype.redShl = function (t) { return ( n( this.red, "redShl works only with red numbers", ), this.red.shl(this, t) ); }), (a.prototype.redMul = function (t) { return ( n( this.red, "redMul works only with red numbers", ), this.red._verify2(this, t), this.red.mul(this, t) ); }), (a.prototype.redIMul = function (t) { return ( n( this.red, "redMul works only with red numbers", ), this.red._verify2(this, t), this.red.imul(this, t) ); }), (a.prototype.redSqr = function () { return ( n( this.red, "redSqr works only with red numbers", ), this.red._verify1(this), this.red.sqr(this) ); }), (a.prototype.redISqr = function () { return ( n( this.red, "redISqr works only with red numbers", ), this.red._verify1(this), this.red.isqr(this) ); }), (a.prototype.redSqrt = function () { return ( n( this.red, "redSqrt works only with red numbers", ), this.red._verify1(this), this.red.sqrt(this) ); }), (a.prototype.redInvm = function () { return ( n( this.red, "redInvm works only with red numbers", ), this.red._verify1(this), this.red.invm(this) ); }), (a.prototype.redNeg = function () { return ( n( this.red, "redNeg works only with red numbers", ), this.red._verify1(this), this.red.neg(this) ); }), (a.prototype.redPow = function (t) { return ( n( this.red && !t.red, "redPow(normalNum)", ), this.red._verify1(this), this.red.pow(this, t) ); }); var v = { k256: null, p224: null, p192: null, p25519: null, }; function y(t, e) { (this.name = t), (this.p = new a(e, 16)), (this.n = this.p.bitLength()), (this.k = new a(1) .iushln(this.n) .isub(this.p)), (this.tmp = this._tmp()); } function x() { y.call( this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f", ); } function b() { y.call( this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001", ); } function _() { y.call( this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff", ); } function w() { y.call( this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed", ); } function T(t) { if ("string" == typeof t) { var e = a._prime(t); (this.m = e.p), (this.prime = e); } else n( t.gtn(1), "modulus must be greater than 1", ), (this.m = t), (this.prime = null); } function k(t) { T.call(this, t), (this.shift = this.m.bitLength()), this.shift % 26 != 0 && (this.shift += 26 - (this.shift % 26)), (this.r = new a(1).iushln(this.shift)), (this.r2 = this.imod(this.r.sqr())), (this.rinv = this.r._invmp(this.m)), (this.minv = this.rinv .mul(this.r) .isubn(1) .div(this.m)), (this.minv = this.minv.umod(this.r)), (this.minv = this.r.sub(this.minv)); } (y.prototype._tmp = function () { var t = new a(null); return ( (t.words = new Array( Math.ceil(this.n / 13), )), t ); }), (y.prototype.ireduce = function (t) { var e, r = t; do { this.split(r, this.tmp), (e = (r = (r = this.imulK(r)).iadd( this.tmp, )).bitLength()); } while (e > this.n); var n = e < this.n ? -1 : r.ucmp(this.p); return ( 0 === n ? ((r.words[0] = 0), (r.length = 1)) : n > 0 ? r.isub(this.p) : void 0 !== r.strip ? r.strip() : r._strip(), r ); }), (y.prototype.split = function (t, e) { t.iushrn(this.n, 0, e); }), (y.prototype.imulK = function (t) { return t.imul(this.k); }), i(x, y), (x.prototype.split = function (t, e) { for ( var r = Math.min(t.length, 9), n = 0; n < r; n++ ) e.words[n] = t.words[n]; if (((e.length = r), t.length <= 9)) return ( (t.words[0] = 0), void (t.length = 1) ); var i = t.words[9]; for ( e.words[e.length++] = 4194303 & i, n = 10; n < t.length; n++ ) { var a = 0 | t.words[n]; (t.words[n - 10] = ((4194303 & a) << 4) | (i >>> 22)), (i = a); } (i >>>= 22), (t.words[n - 10] = i), 0 === i && t.length > 10 ? (t.length -= 10) : (t.length -= 9); }), (x.prototype.imulK = function (t) { (t.words[t.length] = 0), (t.words[t.length + 1] = 0), (t.length += 2); for ( var e = 0, r = 0; r < t.length; r++ ) { var n = 0 | t.words[r]; (e += 977 * n), (t.words[r] = 67108863 & e), (e = 64 * n + ((e / 67108864) | 0)); } return ( 0 === t.words[t.length - 1] && (t.length--, 0 === t.words[t.length - 1] && t.length--), t ); }), i(b, y), i(_, y), i(w, y), (w.prototype.imulK = function (t) { for ( var e = 0, r = 0; r < t.length; r++ ) { var n = 19 * (0 | t.words[r]) + e, i = 67108863 & n; (n >>>= 26), (t.words[r] = i), (e = n); } return ( 0 !== e && (t.words[t.length++] = e), t ); }), (a._prime = function (t) { if (v[t]) return v[t]; var e; if ("k256" === t) e = new x(); else if ("p224" === t) e = new b(); else if ("p192" === t) e = new _(); else { if ("p25519" !== t) throw new Error("Unknown prime " + t); e = new w(); } return (v[t] = e), e; }), (T.prototype._verify1 = function (t) { n( 0 === t.negative, "red works only with positives", ), n( t.red, "red works only with red numbers", ); }), (T.prototype._verify2 = function (t, e) { n( 0 == (t.negative | e.negative), "red works only with positives", ), n( t.red && t.red === e.red, "red works only with red numbers", ); }), (T.prototype.imod = function (t) { return this.prime ? this.prime.ireduce(t)._forceRed(this) : t.umod(this.m)._forceRed(this); }), (T.prototype.neg = function (t) { return t.isZero() ? t.clone() : this.m.sub(t)._forceRed(this); }), (T.prototype.add = function (t, e) { this._verify2(t, e); var r = t.add(e); return ( r.cmp(this.m) >= 0 && r.isub(this.m), r._forceRed(this) ); }), (T.prototype.iadd = function (t, e) { this._verify2(t, e); var r = t.iadd(e); return ( r.cmp(this.m) >= 0 && r.isub(this.m), r ); }), (T.prototype.sub = function (t, e) { this._verify2(t, e); var r = t.sub(e); return ( r.cmpn(0) < 0 && r.iadd(this.m), r._forceRed(this) ); }), (T.prototype.isub = function (t, e) { this._verify2(t, e); var r = t.isub(e); return r.cmpn(0) < 0 && r.iadd(this.m), r; }), (T.prototype.shl = function (t, e) { return ( this._verify1(t), this.imod(t.ushln(e)) ); }), (T.prototype.imul = function (t, e) { return ( this._verify2(t, e), this.imod(t.imul(e)) ); }), (T.prototype.mul = function (t, e) { return ( this._verify2(t, e), this.imod(t.mul(e)) ); }), (T.prototype.isqr = function (t) { return this.imul(t, t.clone()); }), (T.prototype.sqr = function (t) { return this.mul(t, t); }), (T.prototype.sqrt = function (t) { if (t.isZero()) return t.clone(); var e = this.m.andln(3); if ((n(e % 2 == 1), 3 === e)) { var r = this.m.add(new a(1)).iushrn(2); return this.pow(t, r); } for ( var i = this.m.subn(1), o = 0; !i.isZero() && 0 === i.andln(1); ) o++, i.iushrn(1); n(!i.isZero()); var s = new a(1).toRed(this), l = s.redNeg(), c = this.m.subn(1).iushrn(1), u = this.m.bitLength(); for ( u = new a(2 * u * u).toRed(this); 0 !== this.pow(u, c).cmp(l); ) u.redIAdd(l); for ( var f = this.pow(u, i), h = this.pow(t, i.addn(1).iushrn(1)), p = this.pow(t, i), d = o; 0 !== p.cmp(s); ) { for ( var m = p, g = 0; 0 !== m.cmp(s); g++ ) m = m.redSqr(); n(g < d); var v = this.pow( f, new a(1).iushln(d - g - 1), ); (h = h.redMul(v)), (f = v.redSqr()), (p = p.redMul(f)), (d = g); } return h; }), (T.prototype.invm = function (t) { var e = t._invmp(this.m); return 0 !== e.negative ? ((e.negative = 0), this.imod(e).redNeg()) : this.imod(e); }), (T.prototype.pow = function (t, e) { if (e.isZero()) return new a(1).toRed(this); if (0 === e.cmpn(1)) return t.clone(); var r = new Array(16); (r[0] = new a(1).toRed(this)), (r[1] = t); for (var n = 2; n < r.length; n++) r[n] = this.mul(r[n - 1], t); var i = r[0], o = 0, s = 0, l = e.bitLength() % 26; for ( 0 === l && (l = 26), n = e.length - 1; n >= 0; n-- ) { for ( var c = e.words[n], u = l - 1; u >= 0; u-- ) { var f = (c >> u) & 1; i !== r[0] && (i = this.sqr(i)), 0 !== f || 0 !== o ? ((o <<= 1), (o |= f), (4 === ++s || (0 === n && 0 === u)) && ((i = this.mul(i, r[o])), (s = 0), (o = 0))) : (s = 0); } l = 26; } return i; }), (T.prototype.convertTo = function (t) { var e = t.umod(this.m); return e === t ? e.clone() : e; }), (T.prototype.convertFrom = function (t) { var e = t.clone(); return (e.red = null), e; }), (a.mont = function (t) { return new k(t); }), i(k, T), (k.prototype.convertTo = function (t) { return this.imod(t.ushln(this.shift)); }), (k.prototype.convertFrom = function (t) { var e = this.imod(t.mul(this.rinv)); return (e.red = null), e; }), (k.prototype.imul = function (t, e) { if (t.isZero() || e.isZero()) return ( (t.words[0] = 0), (t.length = 1), t ); var r = t.imul(e), n = r .maskn(this.shift) .mul(this.minv) .imaskn(this.shift) .mul(this.m), i = r.isub(n).iushrn(this.shift), a = i; return ( i.cmp(this.m) >= 0 ? (a = i.isub(this.m)) : i.cmpn(0) < 0 && (a = i.iadd(this.m)), a._forceRed(this) ); }), (k.prototype.mul = function (t, e) { if (t.isZero() || e.isZero()) return new a(0)._forceRed(this); var r = t.mul(e), n = r .maskn(this.shift) .mul(this.minv) .imaskn(this.shift) .mul(this.m), i = r.isub(n).iushrn(this.shift), o = i; return ( i.cmp(this.m) >= 0 ? (o = i.isub(this.m)) : i.cmpn(0) < 0 && (o = i.iadd(this.m)), o._forceRed(this) ); }), (k.prototype.invm = function (t) { return this.imod( t._invmp(this.m).mul(this.r2), )._forceRed(this); }); })(void 0 === e || e, this); }, { buffer: 2 }, ], 34: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e, r, n, i = t.length, a = 0; for (e = 0; e < i; ++e) a += t[e].length; var o = new Array(a), s = 0; for (e = 0; e < i; ++e) { var l = t[e], c = l.length; for (r = 0; r < c; ++r) { var u = (o[s++] = new Array(c - 1)), f = 0; for (n = 0; n < c; ++n) n !== r && (u[f++] = l[n]); if (1 & r) { var h = u[1]; (u[1] = u[0]), (u[0] = h); } } } return o; }; }, {}, ], 35: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { switch (arguments.length) { case 1: return f(t); case 2: return "function" == typeof e ? c(t, t, e, !0) : h(t, e); case 3: return c(t, e, r, !1); default: throw new Error( "box-intersect: Invalid arguments", ); } }; var n, i = t("typedarray-pool"), a = t("./lib/sweep"), o = t("./lib/intersect"); function s(t, e) { for (var r = 0; r < t; ++r) if (!(e[r] <= e[r + t])) return !0; return !1; } function l(t, e, r, n) { for ( var i = 0, a = 0, o = 0, l = t.length; o < l; ++o ) { var c = t[o]; if (!s(e, c)) { for (var u = 0; u < 2 * e; ++u) r[i++] = c[u]; n[a++] = o; } } return a; } function c(t, e, r, n) { var s = t.length, c = e.length; if (!(s <= 0 || c <= 0)) { var u = t[0].length >>> 1; if (!(u <= 0)) { var f, h = i.mallocDouble(2 * u * s), p = i.mallocInt32(s); if ((s = l(t, u, h, p)) > 0) { if (1 === u && n) a.init(s), (f = a.sweepComplete( u, r, 0, s, h, p, 0, s, h, p, )); else { var d = i.mallocDouble(2 * u * c), m = i.mallocInt32(c); (c = l(e, u, d, m)) > 0 && (a.init(s + c), (f = 1 === u ? a.sweepBipartite( u, r, 0, s, h, p, 0, c, d, m, ) : o(u, r, n, s, h, p, c, d, m)), i.free(d), i.free(m)); } i.free(h), i.free(p); } return f; } } } function u(t, e) { n.push([t, e]); } function f(t) { return (n = []), c(t, t, u, !0), n; } function h(t, e) { return (n = []), c(t, e, u, !1), n; } }, { "./lib/intersect": 37, "./lib/sweep": 41, "typedarray-pool": 308, }, ], 36: [ function (t, e, r) { "use strict"; function n(t) { return t ? function ( t, e, r, n, i, a, o, s, l, c, u, ) { return i - n > l - s ? (function ( t, e, r, n, i, a, o, s, l, c, u, ) { for ( var f = 2 * t, h = n, p = f * n; h < i; ++h, p += f ) { var d = a[e + p], m = a[e + p + t], g = o[h]; t: for ( var v = s, y = f * s; v < l; ++v, y += f ) { var x = c[e + y], b = c[e + y + t], _ = u[v]; if (!(b < d || m < x)) { for ( var w = e + 1; w < t; ++w ) { var T = a[w + p], k = a[w + t + p], A = c[w + y], M = c[w + t + y]; if (k < A || M < T) continue t; } var S = r(g, _); if (void 0 !== S) return S; } } } })(t, e, r, n, i, a, o, s, l, c, u) : (function ( t, e, r, n, i, a, o, s, l, c, u, ) { for ( var f = 2 * t, h = s, p = f * s; h < l; ++h, p += f ) { var d = c[e + p], m = c[e + p + t], g = u[h]; t: for ( var v = n, y = f * n; v < i; ++v, y += f ) { var x = a[e + y], b = a[e + y + t], _ = o[v]; if (!(m < x || b < d)) { for ( var w = e + 1; w < t; ++w ) { var T = a[w + y], k = a[w + t + y], A = c[w + p], M = c[w + t + p]; if (k < A || M < T) continue t; } var S = r(_, g); if (void 0 !== S) return S; } } } })(t, e, r, n, i, a, o, s, l, c, u); } : function ( t, e, r, n, i, a, o, s, l, c, u, f, ) { return a - i > c - l ? n ? (function ( t, e, r, n, i, a, o, s, l, c, u, ) { for ( var f = 2 * t, h = n, p = f * n; h < i; ++h, p += f ) { var d = a[e + p], m = a[e + p + t], g = o[h]; t: for ( var v = s, y = f * s; v < l; ++v, y += f ) { var x = c[e + y], b = u[v]; if (!(x <= d || m < x)) { for ( var _ = e + 1; _ < t; ++_ ) { var w = a[_ + p], T = a[_ + t + p], k = c[_ + y], A = c[_ + t + y]; if (T < k || A < w) continue t; } var M = r(b, g); if (void 0 !== M) return M; } } } })( t, e, r, i, a, o, s, l, c, u, f, ) : (function ( t, e, r, n, i, a, o, s, l, c, u, ) { for ( var f = 2 * t, h = n, p = f * n; h < i; ++h, p += f ) { var d = a[e + p], m = a[e + p + t], g = o[h]; t: for ( var v = s, y = f * s; v < l; ++v, y += f ) { var x = c[e + y], b = u[v]; if (!(x < d || m < x)) { for ( var _ = e + 1; _ < t; ++_ ) { var w = a[_ + p], T = a[_ + t + p], k = c[_ + y], A = c[_ + t + y]; if (T < k || A < w) continue t; } var M = r(g, b); if (void 0 !== M) return M; } } } })( t, e, r, i, a, o, s, l, c, u, f, ) : n ? (function ( t, e, r, n, i, a, o, s, l, c, u, ) { for ( var f = 2 * t, h = s, p = f * s; h < l; ++h, p += f ) { var d = c[e + p], m = u[h]; t: for ( var g = n, v = f * n; g < i; ++g, v += f ) { var y = a[e + v], x = a[e + v + t], b = o[g]; if (!(d <= y || x < d)) { for ( var _ = e + 1; _ < t; ++_ ) { var w = a[_ + v], T = a[_ + t + v], k = c[_ + p], A = c[_ + t + p]; if (T < k || A < w) continue t; } var M = r(m, b); if (void 0 !== M) return M; } } } })( t, e, r, i, a, o, s, l, c, u, f, ) : (function ( t, e, r, n, i, a, o, s, l, c, u, ) { for ( var f = 2 * t, h = s, p = f * s; h < l; ++h, p += f ) { var d = c[e + p], m = u[h]; t: for ( var g = n, v = f * n; g < i; ++g, v += f ) { var y = a[e + v], x = a[e + v + t], b = o[g]; if (!(d < y || x < d)) { for ( var _ = e + 1; _ < t; ++_ ) { var w = a[_ + v], T = a[_ + t + v], k = c[_ + p], A = c[_ + t + p]; if (T < k || A < w) continue t; } var M = r(b, m); if (void 0 !== M) return M; } } } })( t, e, r, i, a, o, s, l, c, u, f, ); }; } (r.partial = n(!1)), (r.full = n(!0)); }, {}, ], 37: [ function (t, e, r) { "use strict"; e.exports = function ( t, e, r, a, u, w, T, k, A, ) { !(function (t, e) { var r = (8 * i.log2(e + 1) * (t + 1)) | 0, a = i.nextPow2(6 * r); v.length < a && (n.free(v), (v = n.mallocInt32(a))); var o = i.nextPow2(2 * r); y.length < o && (n.free(y), (y = n.mallocDouble(o))); })(t, a + T); var M, S = 0, E = 2 * t; x( S++, 0, 0, a, 0, T, r ? 16 : 0, -1 / 0, 1 / 0, ), r || x(S++, 0, 0, T, 0, a, 1, -1 / 0, 1 / 0); for (; S > 0; ) { var L = 6 * (S -= 1), C = v[L], P = v[L + 1], I = v[L + 2], O = v[L + 3], z = v[L + 4], D = v[L + 5], R = 2 * S, F = y[R], B = y[R + 1], N = 1 & D, j = !!(16 & D), U = u, V = w, H = k, q = A; if ( (N && ((U = k), (V = A), (H = u), (q = w)), !( (2 & D && ((I = p(t, C, P, I, U, V, B)), P >= I)) || (4 & D && (P = d(t, C, P, I, U, V, F)) >= I) )) ) { var G = I - P, Y = z - O; if (j) { if (t * G * (G + Y) < 1 << 22) { if ( void 0 !== (M = l.scanComplete( t, C, e, P, I, U, V, O, z, H, q, )) ) return M; continue; } } else { if (t * Math.min(G, Y) < 128) { if ( void 0 !== (M = o( t, C, e, N, P, I, U, V, O, z, H, q, )) ) return M; continue; } if (t * G * Y < 1 << 22) { if ( void 0 !== (M = l.scanBipartite( t, C, e, N, P, I, U, V, O, z, H, q, )) ) return M; continue; } } var W = f(t, C, P, I, U, V, F, B); if (P < W) if (t * (W - P) < 128) { if ( void 0 !== (M = s( t, C + 1, e, P, W, U, V, O, z, H, q, )) ) return M; } else if (C === t - 2) { if ( void 0 !== (M = N ? l.sweepBipartite( t, e, O, z, H, q, P, W, U, V, ) : l.sweepBipartite( t, e, P, W, U, V, O, z, H, q, )) ) return M; } else x( S++, C + 1, P, W, O, z, N, -1 / 0, 1 / 0, ), x( S++, C + 1, O, z, P, W, 1 ^ N, -1 / 0, 1 / 0, ); if (W < I) { var Z = c(t, C, O, z, H, q), X = H[E * Z + C], J = h(t, C, Z, z, H, q, X); if ( (J < z && x( S++, C, W, I, J, z, (4 | N) + (j ? 16 : 0), X, B, ), O < Z && x( S++, C, W, I, O, Z, (2 | N) + (j ? 16 : 0), F, X, ), Z + 1 === J) ) { if ( void 0 !== (M = j ? _( t, C, e, W, I, U, V, Z, H, q[Z], ) : b( t, C, e, N, W, I, U, V, Z, H, q[Z], )) ) return M; } else if (Z < J) { var K; if (j) { if ( ((K = m(t, C, W, I, U, V, X)), W < K) ) { var Q = h(t, C, W, K, U, V, X); if (C === t - 2) { if ( W < Q && void 0 !== (M = l.sweepComplete( t, e, W, Q, U, V, Z, J, H, q, )) ) return M; if ( Q < K && void 0 !== (M = l.sweepBipartite( t, e, Q, K, U, V, Z, J, H, q, )) ) return M; } else W < Q && x( S++, C + 1, W, Q, Z, J, 16, -1 / 0, 1 / 0, ), Q < K && (x( S++, C + 1, Q, K, Z, J, 0, -1 / 0, 1 / 0, ), x( S++, C + 1, Z, J, Q, K, 1, -1 / 0, 1 / 0, )); } } else (K = N ? g(t, C, W, I, U, V, X) : m(t, C, W, I, U, V, X)), W < K && (C === t - 2 ? (M = N ? l.sweepBipartite( t, e, Z, J, H, q, W, K, U, V, ) : l.sweepBipartite( t, e, W, K, U, V, Z, J, H, q, )) : (x( S++, C + 1, W, K, Z, J, N, -1 / 0, 1 / 0, ), x( S++, C + 1, Z, J, W, K, 1 ^ N, -1 / 0, 1 / 0, ))); } } } } }; var n = t("typedarray-pool"), i = t("bit-twiddle"), a = t("./brute"), o = a.partial, s = a.full, l = t("./sweep"), c = t("./median"), u = t("./partition"), f = u("!(lo>=p0)&&!(p1>=hi)"), h = u("lo===p0"), p = u("lo>> 1, f = 2 * t, h = u, p = o[f * u + e]; for (; l < c; ) { if (c - l < 8) { i(t, e, l, c, o, s), (p = o[f * u + e]); break; } var d = c - l, m = (Math.random() * d + l) | 0, g = o[f * m + e], v = (Math.random() * d + l) | 0, y = o[f * v + e], x = (Math.random() * d + l) | 0, b = o[f * x + e]; g <= y ? b >= y ? ((h = v), (p = y)) : g >= b ? ((h = m), (p = g)) : ((h = x), (p = b)) : y >= b ? ((h = v), (p = y)) : b >= g ? ((h = m), (p = g)) : ((h = x), (p = b)); for ( var _ = f * (c - 1), w = f * h, T = 0; T < f; ++T, ++_, ++w ) { var k = o[_]; (o[_] = o[w]), (o[w] = k); } var A = s[c - 1]; (s[c - 1] = s[h]), (s[h] = A), (h = n(t, e, l, c - 1, o, s, p)); for ( _ = f * (c - 1), w = f * h, T = 0; T < f; ++T, ++_, ++w ) { k = o[_]; (o[_] = o[w]), (o[w] = k); } A = s[c - 1]; if ( ((s[c - 1] = s[h]), (s[h] = A), u < h) ) { for ( c = h - 1; l < c && o[f * (c - 1) + e] === p; ) c -= 1; c += 1; } else { if (!(h < u)) break; for ( l = h + 1; l < c && o[f * l + e] === p; ) l += 1; } } return n(t, e, r, u, o, s, o[f * u + e]); }; var n = t("./partition")("lo r && i[f + e] > c; --u, f -= o ) { for ( var h = f, p = f + o, d = 0; d < o; ++d, ++h, ++p ) { var m = i[h]; (i[h] = i[p]), (i[p] = m); } var g = a[u]; (a[u] = a[u - 1]), (a[u - 1] = g); } } }, { "./partition": 39 }, ], 39: [ function (t, e, r) { "use strict"; e.exports = function (t) { return n[t]; }; var n = { "lo===p0": function (t, e, r, n, i, a, o) { for ( var s = 2 * t, l = s * r, c = l, u = r, f = e, h = r; n > h; ++h, l += s ) { if (i[l + f] === o) if (u === h) (u += 1), (c += s); else { for (var p = 0; s > p; ++p) { var d = i[l + p]; (i[l + p] = i[c]), (i[c++] = d); } var m = a[h]; (a[h] = a[u]), (a[u++] = m); } } return u; }, "lo h; ++h, l += s ) { if (i[l + f] < o) if (u === h) (u += 1), (c += s); else { for (var p = 0; s > p; ++p) { var d = i[l + p]; (i[l + p] = i[c]), (i[c++] = d); } var m = a[h]; (a[h] = a[u]), (a[u++] = m); } } return u; }, "lo<=p0": function (t, e, r, n, i, a, o) { for ( var s = 2 * t, l = s * r, c = l, u = r, f = t + e, h = r; n > h; ++h, l += s ) { if (i[l + f] <= o) if (u === h) (u += 1), (c += s); else { for (var p = 0; s > p; ++p) { var d = i[l + p]; (i[l + p] = i[c]), (i[c++] = d); } var m = a[h]; (a[h] = a[u]), (a[u++] = m); } } return u; }, "hi<=p0": function (t, e, r, n, i, a, o) { for ( var s = 2 * t, l = s * r, c = l, u = r, f = t + e, h = r; n > h; ++h, l += s ) { if (i[l + f] <= o) if (u === h) (u += 1), (c += s); else { for (var p = 0; s > p; ++p) { var d = i[l + p]; (i[l + p] = i[c]), (i[c++] = d); } var m = a[h]; (a[h] = a[u]), (a[u++] = m); } } return u; }, "lo p; ++p, l += s ) { var d = i[l + f], m = i[l + h]; if (d < o && o <= m) if (u === p) (u += 1), (c += s); else { for (var g = 0; s > g; ++g) { var v = i[l + g]; (i[l + g] = i[c]), (i[c++] = v); } var y = a[p]; (a[p] = a[u]), (a[u++] = y); } } return u; }, "lo<=p0&&p0<=hi": function ( t, e, r, n, i, a, o, ) { for ( var s = 2 * t, l = s * r, c = l, u = r, f = e, h = t + e, p = r; n > p; ++p, l += s ) { var d = i[l + f], m = i[l + h]; if (d <= o && o <= m) if (u === p) (u += 1), (c += s); else { for (var g = 0; s > g; ++g) { var v = i[l + g]; (i[l + g] = i[c]), (i[c++] = v); } var y = a[p]; (a[p] = a[u]), (a[u++] = y); } } return u; }, "!(lo>=p0)&&!(p1>=hi)": function ( t, e, r, n, i, a, o, s, ) { for ( var l = 2 * t, c = l * r, u = c, f = r, h = e, p = t + e, d = r; n > d; ++d, c += l ) { var m = i[c + h], g = i[c + p]; if (!(m >= o || s >= g)) if (f === d) (f += 1), (u += l); else { for (var v = 0; l > v; ++v) { var y = i[c + v]; (i[c + v] = i[u]), (i[u++] = y); } var x = a[d]; (a[d] = a[f]), (a[f++] = x); } } return f; }, }; }, {}, ], 40: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { e <= 128 ? n(0, e - 1, t) : (function t(e, r, u) { var f = ((r - e + 1) / 6) | 0, h = e + f, p = r - f, d = (e + r) >> 1, m = d - f, g = d + f, v = h, y = m, x = d, b = g, _ = p, w = e + 1, T = r - 1, k = 0; l(v, y, u) && ((k = v), (v = y), (y = k)); l(b, _, u) && ((k = b), (b = _), (_ = k)); l(v, x, u) && ((k = v), (v = x), (x = k)); l(y, x, u) && ((k = y), (y = x), (x = k)); l(v, b, u) && ((k = v), (v = b), (b = k)); l(x, b, u) && ((k = x), (x = b), (b = k)); l(y, _, u) && ((k = y), (y = _), (_ = k)); l(y, x, u) && ((k = y), (y = x), (x = k)); l(b, _, u) && ((k = b), (b = _), (_ = k)); for ( var A = u[2 * y], M = u[2 * y + 1], S = u[2 * b], E = u[2 * b + 1], L = 2 * v, C = 2 * x, P = 2 * _, I = 2 * h, O = 2 * d, z = 2 * p, D = 0; D < 2; ++D ) { var R = u[L + D], F = u[C + D], B = u[P + D]; (u[I + D] = R), (u[O + D] = F), (u[z + D] = B); } a(m, e, u), a(g, r, u); for (var N = w; N <= T; ++N) if (c(N, A, M, u)) N !== w && i(N, w, u), ++w; else if (!c(N, S, E, u)) for (;;) { if (c(T, S, E, u)) { c(T, A, M, u) ? (o(N, w, T, u), ++w, --T) : (i(N, T, u), --T); break; } if (--T < N) break; } s(e, w - 1, A, M, u), s(r, T + 1, S, E, u), w - 2 - e <= 32 ? n(e, w - 2, u) : t(e, w - 2, u); r - (T + 2) <= 32 ? n(T + 2, r, u) : t(T + 2, r, u); T - w <= 32 ? n(w, T, u) : t(w, T, u); })(0, e - 1, t); }; function n(t, e, r) { for ( var n = 2 * (t + 1), i = t + 1; i <= e; ++i ) { for ( var a = r[n++], o = r[n++], s = i, l = n - 2; s-- > t; ) { var c = r[l - 2], u = r[l - 1]; if (c < a) break; if (c === a && u < o) break; (r[l] = c), (r[l + 1] = u), (l -= 2); } (r[l] = a), (r[l + 1] = o); } } function i(t, e, r) { e *= 2; var n = r[(t *= 2)], i = r[t + 1]; (r[t] = r[e]), (r[t + 1] = r[e + 1]), (r[e] = n), (r[e + 1] = i); } function a(t, e, r) { (e *= 2), (r[(t *= 2)] = r[e]), (r[t + 1] = r[e + 1]); } function o(t, e, r, n) { (e *= 2), (r *= 2); var i = n[(t *= 2)], a = n[t + 1]; (n[t] = n[e]), (n[t + 1] = n[e + 1]), (n[e] = n[r]), (n[e + 1] = n[r + 1]), (n[r] = i), (n[r + 1] = a); } function s(t, e, r, n, i) { (e *= 2), (i[(t *= 2)] = i[e]), (i[e] = r), (i[t + 1] = i[e + 1]), (i[e + 1] = n); } function l(t, e, r) { e *= 2; var n = r[(t *= 2)], i = r[e]; return ( !(n < i) && (n !== i || r[t + 1] > r[e + 1]) ); } function c(t, e, r, n) { var i = n[(t *= 2)]; return i < e || (i === e && n[t + 1] < r); } }, {}, ], 41: [ function (t, e, r) { "use strict"; e.exports = { init: function (t) { var e = i.nextPow2(t); o.length < e && (n.free(o), (o = n.mallocInt32(e))); s.length < e && (n.free(s), (s = n.mallocInt32(e))); l.length < e && (n.free(l), (l = n.mallocInt32(e))); c.length < e && (n.free(c), (c = n.mallocInt32(e))); u.length < e && (n.free(u), (u = n.mallocInt32(e))); f.length < e && (n.free(f), (f = n.mallocInt32(e))); var r = 8 * e; h.length < r && (n.free(h), (h = n.mallocDouble(r))); }, sweepBipartite: function ( t, e, r, n, i, u, f, m, g, v, ) { for ( var y = 0, x = 2 * t, b = t - 1, _ = x - 1, w = r; w < n; ++w ) { var T = u[w], k = x * w; (h[y++] = i[k + b]), (h[y++] = -(T + 1)), (h[y++] = i[k + _]), (h[y++] = T); } for (w = f; w < m; ++w) { T = v[w] + (1 << 28); var A = x * w; (h[y++] = g[A + b]), (h[y++] = -T), (h[y++] = g[A + _]), (h[y++] = T); } var M = y >>> 1; a(h, M); var S = 0, E = 0; for (w = 0; w < M; ++w) { var L = 0 | h[2 * w + 1]; if (L >= 1 << 28) p(l, c, E--, (L = (L - (1 << 28)) | 0)); else if (L >= 0) p(o, s, S--, L); else if (L <= -(1 << 28)) { L = (-L - (1 << 28)) | 0; for (var C = 0; C < S; ++C) { if (void 0 !== (P = e(o[C], L))) return P; } d(l, c, E++, L); } else { L = (-L - 1) | 0; for (C = 0; C < E; ++C) { var P; if (void 0 !== (P = e(L, l[C]))) return P; } d(o, s, S++, L); } } }, sweepComplete: function ( t, e, r, n, i, m, g, v, y, x, ) { for ( var b = 0, _ = 2 * t, w = t - 1, T = _ - 1, k = r; k < n; ++k ) { var A = (m[k] + 1) << 1, M = _ * k; (h[b++] = i[M + w]), (h[b++] = -A), (h[b++] = i[M + T]), (h[b++] = A); } for (k = g; k < v; ++k) { A = (x[k] + 1) << 1; var S = _ * k; (h[b++] = y[S + w]), (h[b++] = 1 | -A), (h[b++] = y[S + T]), (h[b++] = 1 | A); } var E = b >>> 1; a(h, E); var L = 0, C = 0, P = 0; for (k = 0; k < E; ++k) { var I = 0 | h[2 * k + 1], O = 1 & I; if ( (k < E - 1 && I >> 1 == h[2 * k + 3] >> 1 && ((O = 2), (k += 1)), I < 0) ) { for ( var z = -(I >> 1) - 1, D = 0; D < P; ++D ) { if (void 0 !== (R = e(u[D], z))) return R; } if (0 !== O) for (D = 0; D < L; ++D) { if (void 0 !== (R = e(o[D], z))) return R; } if (1 !== O) for (D = 0; D < C; ++D) { var R; if (void 0 !== (R = e(l[D], z))) return R; } 0 === O ? d(o, s, L++, z) : 1 === O ? d(l, c, C++, z) : 2 === O && d(u, f, P++, z); } else { z = (I >> 1) - 1; 0 === O ? p(o, s, L--, z) : 1 === O ? p(l, c, C--, z) : 2 === O && p(u, f, P--, z); } } }, scanBipartite: function ( t, e, r, n, i, l, c, u, f, m, g, v, ) { var y = 0, x = 2 * t, b = e, _ = e + t, w = 1, T = 1; n ? (T = 1 << 28) : (w = 1 << 28); for (var k = i; k < l; ++k) { var A = k + w, M = x * k; (h[y++] = c[M + b]), (h[y++] = -A), (h[y++] = c[M + _]), (h[y++] = A); } for (k = f; k < m; ++k) { A = k + T; var S = x * k; (h[y++] = g[S + b]), (h[y++] = -A); } var E = y >>> 1; a(h, E); var L = 0; for (k = 0; k < E; ++k) { var C = 0 | h[2 * k + 1]; if (C < 0) { var P = !1; if ( ((A = -C) >= 1 << 28 ? ((P = !n), (A -= 1 << 28)) : ((P = !!n), (A -= 1)), P) ) d(o, s, L++, A); else { var I = v[A], O = x * A, z = g[O + e + 1], D = g[O + e + 1 + t]; t: for (var R = 0; R < L; ++R) { var F = o[R], B = x * F; if ( !( D < c[B + e + 1] || c[B + e + 1 + t] < z ) ) { for (var N = e + 2; N < t; ++N) if ( g[O + N + t] < c[B + N] || c[B + N + t] < g[O + N] ) continue t; var j, U = u[F]; if ( void 0 !== (j = n ? r(I, U) : r(U, I)) ) return j; } } } } else p(o, s, L--, C - w); } }, scanComplete: function ( t, e, r, n, i, s, l, c, u, f, p, ) { for ( var d = 0, m = 2 * t, g = e, v = e + t, y = n; y < i; ++y ) { var x = y + (1 << 28), b = m * y; (h[d++] = s[b + g]), (h[d++] = -x), (h[d++] = s[b + v]), (h[d++] = x); } for (y = c; y < u; ++y) { x = y + 1; var _ = m * y; (h[d++] = f[_ + g]), (h[d++] = -x); } var w = d >>> 1; a(h, w); var T = 0; for (y = 0; y < w; ++y) { var k = 0 | h[2 * y + 1]; if (k < 0) { if ((x = -k) >= 1 << 28) o[T++] = x - (1 << 28); else { var A = p[(x -= 1)], M = m * x, S = f[M + e + 1], E = f[M + e + 1 + t]; t: for (var L = 0; L < T; ++L) { var C = o[L], P = l[C]; if (P === A) break; var I = m * C; if ( !( E < s[I + e + 1] || s[I + e + 1 + t] < S ) ) { for (var O = e + 2; O < t; ++O) if ( f[M + O + t] < s[I + O] || s[I + O + t] < f[M + O] ) continue t; var z = r(P, A); if (void 0 !== z) return z; } } } } else { for ( x = k - (1 << 28), L = T - 1; L >= 0; --L ) if (o[L] === x) { for (O = L + 1; O < T; ++O) o[O - 1] = o[O]; break; } --T; } } }, }; var n = t("typedarray-pool"), i = t("bit-twiddle"), a = t("./sort"), o = n.mallocInt32(1024), s = n.mallocInt32(1024), l = n.mallocInt32(1024), c = n.mallocInt32(1024), u = n.mallocInt32(1024), f = n.mallocInt32(1024), h = n.mallocDouble(8192); function p(t, e, r, n) { var i = e[n], a = t[r - 1]; (t[i] = a), (e[a] = i); } function d(t, e, r, n) { (t[r] = n), (e[n] = r); } }, { "./sort": 40, "bit-twiddle": 32, "typedarray-pool": 308, }, ], 42: [ function (t, e, r) { "use strict"; var n = t("./lib/monotone"), i = t("./lib/triangulation"), a = t("./lib/delaunay"), o = t("./lib/filter"); function s(t) { return [ Math.min(t[0], t[1]), Math.max(t[0], t[1]), ]; } function l(t, e) { return t[0] - e[0] || t[1] - e[1]; } function c(t, e, r) { return e in t ? t[e] : r; } e.exports = function (t, e, r) { Array.isArray(e) ? ((r = r || {}), (e = e || [])) : ((r = e || {}), (e = [])); var u = !!c(r, "delaunay", !0), f = !!c(r, "interior", !0), h = !!c(r, "exterior", !0), p = !!c(r, "infinity", !1); if ((!f && !h) || 0 === t.length) return []; var d = n(t, e); if (u || f !== h || p) { for ( var m = i( t.length, (function (t) { return t.map(s).sort(l); })(e), ), g = 0; g < d.length; ++g ) { var v = d[g]; m.addTriangle(v[0], v[1], v[2]); } return ( u && a(t, m), h ? f ? p ? o(m, 0, p) : m.cells() : o(m, 1, p) : o(m, -1) ); } return d; }; }, { "./lib/delaunay": 43, "./lib/filter": 44, "./lib/monotone": 45, "./lib/triangulation": 46, }, ], 43: [ function (t, e, r) { "use strict"; var n = t("robust-in-sphere")[4]; t("binary-search-bounds"); function i(t, e, r, i, a, o) { var s = e.opposite(i, a); if (!(s < 0)) { if (a < i) { var l = i; (i = a), (a = l), (l = o), (o = s), (s = l); } e.isConstraint(i, a) || (n(t[i], t[a], t[o], t[s]) < 0 && r.push(i, a)); } } e.exports = function (t, e) { for ( var r = [], a = t.length, o = e.stars, s = 0; s < a; ++s ) for ( var l = o[s], c = 1; c < l.length; c += 2 ) { if ( !((p = l[c]) < s) && !e.isConstraint(s, p) ) { for ( var u = l[c - 1], f = -1, h = 1; h < l.length; h += 2 ) if (l[h - 1] === p) { f = l[h]; break; } f < 0 || (n(t[s], t[p], t[u], t[f]) < 0 && r.push(s, p)); } } for (; r.length > 0; ) { for ( var p = r.pop(), d = ((s = r.pop()), (u = -1), (f = -1), (l = o[s]), 1); d < l.length; d += 2 ) { var m = l[d - 1], g = l[d]; m === p ? (f = g) : g === p && (u = m); } u < 0 || f < 0 || n(t[s], t[p], t[u], t[f]) >= 0 || (e.flip(s, p), i(t, e, r, u, s, f), i(t, e, r, s, f, u), i(t, e, r, f, p, u), i(t, e, r, p, u, f)); } }; }, { "binary-search-bounds": 31, "robust-in-sphere": 282, }, ], 44: [ function (t, e, r) { "use strict"; var n, i = t("binary-search-bounds"); function a(t, e, r, n, i, a, o) { (this.cells = t), (this.neighbor = e), (this.flags = n), (this.constraint = r), (this.active = i), (this.next = a), (this.boundary = o); } function o(t, e) { return ( t[0] - e[0] || t[1] - e[1] || t[2] - e[2] ); } (e.exports = function (t, e, r) { var n = (function (t, e) { for ( var r = t.cells(), n = r.length, i = 0; i < n; ++i ) { var s = (v = r[i])[0], l = v[1], c = v[2]; l < c ? l < s && ((v[0] = l), (v[1] = c), (v[2] = s)) : c < s && ((v[0] = c), (v[1] = s), (v[2] = l)); } r.sort(o); var u = new Array(n); for (i = 0; i < u.length; ++i) u[i] = 0; var f = [], h = [], p = new Array(3 * n), d = new Array(3 * n), m = null; e && (m = []); var g = new a(r, p, d, u, f, h, m); for (i = 0; i < n; ++i) for (var v = r[i], y = 0; y < 3; ++y) { (s = v[y]), (l = v[(y + 1) % 3]); var x = (p[3 * i + y] = g.locate( l, s, t.opposite(l, s), )), b = (d[3 * i + y] = t.isConstraint( s, l, )); x < 0 && (b ? h.push(i) : (f.push(i), (u[i] = 1)), e && m.push([l, s, -1])); } return g; })(t, r); if (0 === e) return r ? n.cells.concat(n.boundary) : n.cells; var i = 1, s = n.active, l = n.next, c = n.flags, u = n.cells, f = n.constraint, h = n.neighbor; for (; s.length > 0 || l.length > 0; ) { for (; s.length > 0; ) { var p = s.pop(); if (c[p] !== -i) { c[p] = i; u[p]; for (var d = 0; d < 3; ++d) { var m = h[3 * p + d]; m >= 0 && 0 === c[m] && (f[3 * p + d] ? l.push(m) : (s.push(m), (c[m] = i))); } } } var g = l; (l = s), (s = g), (l.length = 0), (i = -i); } var v = (function (t, e, r) { for (var n = 0, i = 0; i < t.length; ++i) e[i] === r && (t[n++] = t[i]); return (t.length = n), t; })(u, c, e); if (r) return v.concat(n.boundary); return v; }), (a.prototype.locate = ((n = [0, 0, 0]), function (t, e, r) { var a = t, s = e, l = r; return ( e < r ? e < t && ((a = e), (s = r), (l = t)) : r < t && ((a = r), (s = t), (l = e)), a < 0 ? -1 : ((n[0] = a), (n[1] = s), (n[2] = l), i.eq(this.cells, n, o)) ); })); }, { "binary-search-bounds": 31 }, ], 45: [ function (t, e, r) { "use strict"; var n = t("binary-search-bounds"), i = t("robust-orientation")[3]; function a(t, e, r, n, i) { (this.a = t), (this.b = e), (this.idx = r), (this.lowerIds = n), (this.upperIds = i); } function o(t, e, r, n) { (this.a = t), (this.b = e), (this.type = r), (this.idx = n); } function s(t, e) { var r = t.a[0] - e.a[0] || t.a[1] - e.a[1] || t.type - e.type; return ( r || (0 !== t.type && (r = i(t.a, t.b, e.b)) ? r : t.idx - e.idx) ); } function l(t, e) { return i(t.a, t.b, e); } function c(t, e, r, a, o) { for ( var s = n.lt(e, a, l), c = n.gt(e, a, l), u = s; u < c; ++u ) { for ( var f = e[u], h = f.lowerIds, p = h.length; p > 1 && i(r[h[p - 2]], r[h[p - 1]], a) > 0; ) t.push([h[p - 1], h[p - 2], o]), (p -= 1); (h.length = p), h.push(o); var d = f.upperIds; for ( p = d.length; p > 1 && i(r[d[p - 2]], r[d[p - 1]], a) < 0; ) t.push([d[p - 2], d[p - 1], o]), (p -= 1); (d.length = p), d.push(o); } } function u(t, e) { var r; return (r = t.a[0] < e.a[0] ? i(t.a, t.b, e.a) : i(e.b, e.a, t.a)) ? r : (r = e.b[0] < t.b[0] ? i(t.a, t.b, e.b) : i(e.b, e.a, t.b)) || t.idx - e.idx; } function f(t, e, r) { var i = n.le(t, r, u), o = t[i], s = o.upperIds, l = s[s.length - 1]; (o.upperIds = [l]), t.splice( i + 1, 0, new a(r.a, r.b, r.idx, [l], s), ); } function h(t, e, r) { var i = r.a; (r.a = r.b), (r.b = i); var a = n.eq(t, r, u), o = t[a]; (t[a - 1].upperIds = o.upperIds), t.splice(a, 1); } e.exports = function (t, e) { for ( var r = t.length, n = e.length, i = [], l = 0; l < r; ++l ) i.push(new o(t[l], null, 0, l)); for (l = 0; l < n; ++l) { var u = e[l], p = t[u[0]], d = t[u[1]]; p[0] < d[0] ? i.push( new o(p, d, 2, l), new o(d, p, 1, l), ) : p[0] > d[0] && i.push( new o(d, p, 2, l), new o(p, d, 1, l), ); } i.sort(s); for ( var m = i[0].a[0] - (1 + Math.abs(i[0].a[0])) * Math.pow(2, -52), g = [ new a( [m, 1], [m, 0], -1, [], [], [], [], ), ], v = [], y = ((l = 0), i.length); l < y; ++l ) { var x = i[l], b = x.type; 0 === b ? c(v, g, t, x.a, x.idx) : 2 === b ? f(g, t, x) : h(g, t, x); } return v; }; }, { "binary-search-bounds": 31, "robust-orientation": 284, }, ], 46: [ function (t, e, r) { "use strict"; var n = t("binary-search-bounds"); function i(t, e) { (this.stars = t), (this.edges = e); } e.exports = function (t, e) { for (var r = new Array(t), n = 0; n < t; ++n) r[n] = []; return new i(r, e); }; var a = i.prototype; function o(t, e, r) { for (var n = 1, i = t.length; n < i; n += 2) if (t[n - 1] === e && t[n] === r) return ( (t[n - 1] = t[i - 2]), (t[n] = t[i - 1]), void (t.length = i - 2) ); } (a.isConstraint = (function () { var t = [0, 0]; function e(t, e) { return t[0] - e[0] || t[1] - e[1]; } return function (r, i) { return ( (t[0] = Math.min(r, i)), (t[1] = Math.max(r, i)), n.eq(this.edges, t, e) >= 0 ); }; })()), (a.removeTriangle = function (t, e, r) { var n = this.stars; o(n[t], e, r), o(n[e], r, t), o(n[r], t, e); }), (a.addTriangle = function (t, e, r) { var n = this.stars; n[t].push(e, r), n[e].push(r, t), n[r].push(t, e); }), (a.opposite = function (t, e) { for ( var r = this.stars[e], n = 1, i = r.length; n < i; n += 2 ) if (r[n] === t) return r[n - 1]; return -1; }), (a.flip = function (t, e) { var r = this.opposite(t, e), n = this.opposite(e, t); this.removeTriangle(t, e, r), this.removeTriangle(e, t, n), this.addTriangle(t, n, r), this.addTriangle(e, r, n); }), (a.edges = function () { for ( var t = this.stars, e = [], r = 0, n = t.length; r < n; ++r ) for ( var i = t[r], a = 0, o = i.length; a < o; a += 2 ) e.push([i[a], i[a + 1]]); return e; }), (a.cells = function () { for ( var t = this.stars, e = [], r = 0, n = t.length; r < n; ++r ) for ( var i = t[r], a = 0, o = i.length; a < o; a += 2 ) { var s = i[a], l = i[a + 1]; r < Math.min(s, l) && e.push([r, s, l]); } return e; }); }, { "binary-search-bounds": 31 }, ], 47: [ function (t, e, r) { "use strict"; e.exports = function (t) { for (var e = 1, r = 1; r < t.length; ++r) for (var n = 0; n < r; ++n) if (t[r] < t[n]) e = -e; else if (t[n] === t[r]) return 0; return e; }; }, {}, ], 48: [ function (t, e, r) { "use strict"; var n = t("dup"), i = t("robust-linear-solve"); function a(t, e) { for ( var r = 0, n = t.length, i = 0; i < n; ++i ) r += t[i] * e[i]; return r; } function o(t) { var e = t.length; if (0 === e) return []; t[0].length; var r = n([t.length + 1, t.length + 1], 1), o = n([t.length + 1], 1); r[e][e] = 0; for (var s = 0; s < e; ++s) { for (var l = 0; l <= s; ++l) r[l][s] = r[s][l] = 2 * a(t[s], t[l]); o[s] = a(t[s], t[s]); } var c = i(r, o), u = 0, f = c[e + 1]; for (s = 0; s < f.length; ++s) u += f[s]; var h = new Array(e); for (s = 0; s < e; ++s) { f = c[s]; var p = 0; for (l = 0; l < f.length; ++l) p += f[l]; h[s] = p / u; } return h; } function s(t) { if (0 === t.length) return []; for ( var e = t[0].length, r = n([e]), i = o(t), a = 0; a < t.length; ++a ) for (var s = 0; s < e; ++s) r[s] += t[a][s] * i[a]; return r; } (s.barycenetric = o), (e.exports = s); }, { dup: 65, "robust-linear-solve": 283 }, ], 49: [ function (t, e, r) { e.exports = function (t) { for ( var e = n(t), r = 0, i = 0; i < t.length; ++i ) for (var a = t[i], o = 0; o < e.length; ++o) r += Math.pow(a[o] - e[o], 2); return Math.sqrt(r / t.length); }; var n = t("circumcenter"); }, { circumcenter: 48 }, ], 50: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { var n; if (r) { n = e; for ( var i = new Array(e.length), a = 0; a < e.length; ++a ) { var o = e[a]; i[a] = [o[0], o[1], r[a]]; } e = i; } var s = (function (t, e, r) { var n = d(t, [], p(t)); return v(e, n, r), !!n; })(t, e, !!r); for (; y(t, e, !!r); ) s = !0; if (r && s) { (n.length = 0), (r.length = 0); for (a = 0; a < e.length; ++a) { o = e[a]; n.push([o[0], o[1]]), r.push(o[2]); } } return s; }; var n = t("union-find"), i = t("box-intersect"), a = t("robust-segment-intersect"), o = t("big-rat"), s = t("big-rat/cmp"), l = t("big-rat/to-float"), c = t("rat-vec"), u = t("nextafter"), f = t("./lib/rat-seg-intersect"); function h(t) { var e = l(t); return [u(e, -1 / 0), u(e, 1 / 0)]; } function p(t) { for ( var e = new Array(t.length), r = 0; r < t.length; ++r ) { var n = t[r]; e[r] = [ u(n[0], -1 / 0), u(n[1], -1 / 0), u(n[0], 1 / 0), u(n[1], 1 / 0), ]; } return e; } function d(t, e, r) { for ( var a = e.length, o = new n(a), s = [], l = 0; l < e.length; ++l ) { var c = e[l], f = h(c[0]), p = h(c[1]); s.push([ u(f[0], -1 / 0), u(p[0], -1 / 0), u(f[1], 1 / 0), u(p[1], 1 / 0), ]); } i(s, function (t, e) { o.link(t, e); }); var d = !0, m = new Array(a); for (l = 0; l < a; ++l) { (v = o.find(l)) !== l && ((d = !1), (t[v] = [ Math.min(t[l][0], t[v][0]), Math.min(t[l][1], t[v][1]), ])); } if (d) return null; var g = 0; for (l = 0; l < a; ++l) { var v; (v = o.find(l)) === l ? ((m[l] = g), (t[g++] = t[l])) : (m[l] = -1); } t.length = g; for (l = 0; l < a; ++l) m[l] < 0 && (m[l] = m[o.find(l)]); return m; } function m(t, e) { return t[0] - e[0] || t[1] - e[1]; } function g(t, e) { var r = t[0] - e[0] || t[1] - e[1]; return ( r || (t[2] < e[2] ? -1 : t[2] > e[2] ? 1 : 0) ); } function v(t, e, r) { if (0 !== t.length) { if (e) for (var n = 0; n < t.length; ++n) { var i = e[(o = t[n])[0]], a = e[o[1]]; (o[0] = Math.min(i, a)), (o[1] = Math.max(i, a)); } else for (n = 0; n < t.length; ++n) { var o; (i = (o = t[n])[0]), (a = o[1]); (o[0] = Math.min(i, a)), (o[1] = Math.max(i, a)); } r ? t.sort(g) : t.sort(m); var s = 1; for (n = 1; n < t.length; ++n) { var l = t[n - 1], c = t[n]; (c[0] !== l[0] || c[1] !== l[1] || (r && c[2] !== l[2])) && (t[s++] = c); } t.length = s; } } function y(t, e, r) { var n = (function (t, e) { for ( var r = new Array(e.length), n = 0; n < e.length; ++n ) { var i = e[n], a = t[i[0]], o = t[i[1]]; r[n] = [ u(Math.min(a[0], o[0]), -1 / 0), u(Math.min(a[1], o[1]), -1 / 0), u(Math.max(a[0], o[0]), 1 / 0), u(Math.max(a[1], o[1]), 1 / 0), ]; } return r; })(t, e), h = (function (t, e, r) { var n = []; return ( i(r, function (r, i) { var o = e[r], s = e[i]; if ( o[0] !== s[0] && o[0] !== s[1] && o[1] !== s[0] && o[1] !== s[1] ) { var l = t[o[0]], c = t[o[1]], u = t[s[0]], f = t[s[1]]; a(l, c, u, f) && n.push([r, i]); } }), n ); })(t, e, n), m = p(t), g = (function (t, e, r, n) { var o = []; return ( i(r, n, function (r, n) { var i = e[r]; if (i[0] !== n && i[1] !== n) { var s = t[n], l = t[i[0]], c = t[i[1]]; a(l, c, s, s) && o.push([r, n]); } }), o ); })(t, e, n, m), y = d( t, (function (t, e, r, n, i) { var a, u, h = t.map(function (t) { return [o(t[0]), o(t[1])]; }); for (a = 0; a < r.length; ++a) { var p = r[a]; u = p[0]; var d = p[1], m = e[u], g = e[d], v = f( c(t[m[0]]), c(t[m[1]]), c(t[g[0]]), c(t[g[1]]), ); if (v) { var y = t.length; t.push([l(v[0]), l(v[1])]), h.push(v), n.push([u, y], [d, y]); } } for ( n.sort(function (t, e) { if (t[0] !== e[0]) return t[0] - e[0]; var r = h[t[1]], n = h[e[1]]; return ( s(r[0], n[0]) || s(r[1], n[1]) ); }), a = n.length - 1; a >= 0; --a ) { var x = e[(u = (S = n[a])[0])], b = x[0], _ = x[1], w = t[b], T = t[_]; if ( (w[0] - T[0] || w[1] - T[1]) < 0 ) { var k = b; (b = _), (_ = k); } x[0] = b; var A, M = (x[1] = S[1]); for ( i && (A = x[2]); a > 0 && n[a - 1][0] === u; ) { var S, E = (S = n[--a])[1]; i ? e.push([M, E, A]) : e.push([M, E]), (M = E); } i ? e.push([M, _, A]) : e.push([M, _]); } return h; })(t, e, h, g, r), ); return ( v(e, y, r), !!y || h.length > 0 || g.length > 0 ); } }, { "./lib/rat-seg-intersect": 51, "big-rat": 18, "big-rat/cmp": 16, "big-rat/to-float": 30, "box-intersect": 35, nextafter: 260, "rat-vec": 273, "robust-segment-intersect": 287, "union-find": 309, }, ], 51: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, n) { var a = s(e, t), f = s(n, r), h = u(a, f); if (0 === o(h)) return null; var p = s(t, r), d = u(f, p), m = i(d, h), g = c(a, m); return l(t, g); }; var n = t("big-rat/mul"), i = t("big-rat/div"), a = t("big-rat/sub"), o = t("big-rat/sign"), s = t("rat-vec/sub"), l = t("rat-vec/add"), c = t("rat-vec/muls"); function u(t, e) { return a(n(t[0], e[1]), n(t[1], e[0])); } }, { "big-rat/div": 17, "big-rat/mul": 27, "big-rat/sign": 28, "big-rat/sub": 29, "rat-vec/add": 272, "rat-vec/muls": 274, "rat-vec/sub": 275, }, ], 52: [ function (t, e, r) { e.exports = { jet: [ { index: 0, rgb: [0, 0, 131] }, { index: 0.125, rgb: [0, 60, 170] }, { index: 0.375, rgb: [5, 255, 255] }, { index: 0.625, rgb: [255, 255, 0] }, { index: 0.875, rgb: [250, 0, 0] }, { index: 1, rgb: [128, 0, 0] }, ], hsv: [ { index: 0, rgb: [255, 0, 0] }, { index: 0.169, rgb: [253, 255, 2] }, { index: 0.173, rgb: [247, 255, 2] }, { index: 0.337, rgb: [0, 252, 4] }, { index: 0.341, rgb: [0, 252, 10] }, { index: 0.506, rgb: [1, 249, 255] }, { index: 0.671, rgb: [2, 0, 253] }, { index: 0.675, rgb: [8, 0, 253] }, { index: 0.839, rgb: [255, 0, 251] }, { index: 0.843, rgb: [255, 0, 245] }, { index: 1, rgb: [255, 0, 6] }, ], hot: [ { index: 0, rgb: [0, 0, 0] }, { index: 0.3, rgb: [230, 0, 0] }, { index: 0.6, rgb: [255, 210, 0] }, { index: 1, rgb: [255, 255, 255] }, ], spring: [ { index: 0, rgb: [255, 0, 255] }, { index: 1, rgb: [255, 255, 0] }, ], summer: [ { index: 0, rgb: [0, 128, 102] }, { index: 1, rgb: [255, 255, 102] }, ], autumn: [ { index: 0, rgb: [255, 0, 0] }, { index: 1, rgb: [255, 255, 0] }, ], winter: [ { index: 0, rgb: [0, 0, 255] }, { index: 1, rgb: [0, 255, 128] }, ], bone: [ { index: 0, rgb: [0, 0, 0] }, { index: 0.376, rgb: [84, 84, 116] }, { index: 0.753, rgb: [169, 200, 200] }, { index: 1, rgb: [255, 255, 255] }, ], copper: [ { index: 0, rgb: [0, 0, 0] }, { index: 0.804, rgb: [255, 160, 102] }, { index: 1, rgb: [255, 199, 127] }, ], greys: [ { index: 0, rgb: [0, 0, 0] }, { index: 1, rgb: [255, 255, 255] }, ], yignbu: [ { index: 0, rgb: [8, 29, 88] }, { index: 0.125, rgb: [37, 52, 148] }, { index: 0.25, rgb: [34, 94, 168] }, { index: 0.375, rgb: [29, 145, 192] }, { index: 0.5, rgb: [65, 182, 196] }, { index: 0.625, rgb: [127, 205, 187] }, { index: 0.75, rgb: [199, 233, 180] }, { index: 0.875, rgb: [237, 248, 217] }, { index: 1, rgb: [255, 255, 217] }, ], greens: [ { index: 0, rgb: [0, 68, 27] }, { index: 0.125, rgb: [0, 109, 44] }, { index: 0.25, rgb: [35, 139, 69] }, { index: 0.375, rgb: [65, 171, 93] }, { index: 0.5, rgb: [116, 196, 118] }, { index: 0.625, rgb: [161, 217, 155] }, { index: 0.75, rgb: [199, 233, 192] }, { index: 0.875, rgb: [229, 245, 224] }, { index: 1, rgb: [247, 252, 245] }, ], yiorrd: [ { index: 0, rgb: [128, 0, 38] }, { index: 0.125, rgb: [189, 0, 38] }, { index: 0.25, rgb: [227, 26, 28] }, { index: 0.375, rgb: [252, 78, 42] }, { index: 0.5, rgb: [253, 141, 60] }, { index: 0.625, rgb: [254, 178, 76] }, { index: 0.75, rgb: [254, 217, 118] }, { index: 0.875, rgb: [255, 237, 160] }, { index: 1, rgb: [255, 255, 204] }, ], bluered: [ { index: 0, rgb: [0, 0, 255] }, { index: 1, rgb: [255, 0, 0] }, ], rdbu: [ { index: 0, rgb: [5, 10, 172] }, { index: 0.35, rgb: [106, 137, 247] }, { index: 0.5, rgb: [190, 190, 190] }, { index: 0.6, rgb: [220, 170, 132] }, { index: 0.7, rgb: [230, 145, 90] }, { index: 1, rgb: [178, 10, 28] }, ], picnic: [ { index: 0, rgb: [0, 0, 255] }, { index: 0.1, rgb: [51, 153, 255] }, { index: 0.2, rgb: [102, 204, 255] }, { index: 0.3, rgb: [153, 204, 255] }, { index: 0.4, rgb: [204, 204, 255] }, { index: 0.5, rgb: [255, 255, 255] }, { index: 0.6, rgb: [255, 204, 255] }, { index: 0.7, rgb: [255, 153, 255] }, { index: 0.8, rgb: [255, 102, 204] }, { index: 0.9, rgb: [255, 102, 102] }, { index: 1, rgb: [255, 0, 0] }, ], rainbow: [ { index: 0, rgb: [150, 0, 90] }, { index: 0.125, rgb: [0, 0, 200] }, { index: 0.25, rgb: [0, 25, 255] }, { index: 0.375, rgb: [0, 152, 255] }, { index: 0.5, rgb: [44, 255, 150] }, { index: 0.625, rgb: [151, 255, 0] }, { index: 0.75, rgb: [255, 234, 0] }, { index: 0.875, rgb: [255, 111, 0] }, { index: 1, rgb: [255, 0, 0] }, ], portland: [ { index: 0, rgb: [12, 51, 131] }, { index: 0.25, rgb: [10, 136, 186] }, { index: 0.5, rgb: [242, 211, 56] }, { index: 0.75, rgb: [242, 143, 56] }, { index: 1, rgb: [217, 30, 30] }, ], blackbody: [ { index: 0, rgb: [0, 0, 0] }, { index: 0.2, rgb: [230, 0, 0] }, { index: 0.4, rgb: [230, 210, 0] }, { index: 0.7, rgb: [255, 255, 255] }, { index: 1, rgb: [160, 200, 255] }, ], earth: [ { index: 0, rgb: [0, 0, 130] }, { index: 0.1, rgb: [0, 180, 180] }, { index: 0.2, rgb: [40, 210, 40] }, { index: 0.4, rgb: [230, 230, 50] }, { index: 0.6, rgb: [120, 70, 20] }, { index: 1, rgb: [255, 255, 255] }, ], electric: [ { index: 0, rgb: [0, 0, 0] }, { index: 0.15, rgb: [30, 0, 100] }, { index: 0.4, rgb: [120, 0, 100] }, { index: 0.6, rgb: [160, 90, 0] }, { index: 0.8, rgb: [230, 200, 0] }, { index: 1, rgb: [255, 250, 220] }, ], alpha: [ { index: 0, rgb: [255, 255, 255, 0] }, { index: 1, rgb: [255, 255, 255, 1] }, ], viridis: [ { index: 0, rgb: [68, 1, 84] }, { index: 0.13, rgb: [71, 44, 122] }, { index: 0.25, rgb: [59, 81, 139] }, { index: 0.38, rgb: [44, 113, 142] }, { index: 0.5, rgb: [33, 144, 141] }, { index: 0.63, rgb: [39, 173, 129] }, { index: 0.75, rgb: [92, 200, 99] }, { index: 0.88, rgb: [170, 220, 50] }, { index: 1, rgb: [253, 231, 37] }, ], inferno: [ { index: 0, rgb: [0, 0, 4] }, { index: 0.13, rgb: [31, 12, 72] }, { index: 0.25, rgb: [85, 15, 109] }, { index: 0.38, rgb: [136, 34, 106] }, { index: 0.5, rgb: [186, 54, 85] }, { index: 0.63, rgb: [227, 89, 51] }, { index: 0.75, rgb: [249, 140, 10] }, { index: 0.88, rgb: [249, 201, 50] }, { index: 1, rgb: [252, 255, 164] }, ], magma: [ { index: 0, rgb: [0, 0, 4] }, { index: 0.13, rgb: [28, 16, 68] }, { index: 0.25, rgb: [79, 18, 123] }, { index: 0.38, rgb: [129, 37, 129] }, { index: 0.5, rgb: [181, 54, 122] }, { index: 0.63, rgb: [229, 80, 100] }, { index: 0.75, rgb: [251, 135, 97] }, { index: 0.88, rgb: [254, 194, 135] }, { index: 1, rgb: [252, 253, 191] }, ], plasma: [ { index: 0, rgb: [13, 8, 135] }, { index: 0.13, rgb: [75, 3, 161] }, { index: 0.25, rgb: [125, 3, 168] }, { index: 0.38, rgb: [168, 34, 150] }, { index: 0.5, rgb: [203, 70, 121] }, { index: 0.63, rgb: [229, 107, 93] }, { index: 0.75, rgb: [248, 148, 65] }, { index: 0.88, rgb: [253, 195, 40] }, { index: 1, rgb: [240, 249, 33] }, ], warm: [ { index: 0, rgb: [125, 0, 179] }, { index: 0.13, rgb: [172, 0, 187] }, { index: 0.25, rgb: [219, 0, 170] }, { index: 0.38, rgb: [255, 0, 130] }, { index: 0.5, rgb: [255, 63, 74] }, { index: 0.63, rgb: [255, 123, 0] }, { index: 0.75, rgb: [234, 176, 0] }, { index: 0.88, rgb: [190, 228, 0] }, { index: 1, rgb: [147, 255, 0] }, ], cool: [ { index: 0, rgb: [125, 0, 179] }, { index: 0.13, rgb: [116, 0, 218] }, { index: 0.25, rgb: [98, 74, 237] }, { index: 0.38, rgb: [68, 146, 231] }, { index: 0.5, rgb: [0, 204, 197] }, { index: 0.63, rgb: [0, 247, 146] }, { index: 0.75, rgb: [0, 255, 88] }, { index: 0.88, rgb: [40, 255, 8] }, { index: 1, rgb: [147, 255, 0] }, ], "rainbow-soft": [ { index: 0, rgb: [125, 0, 179] }, { index: 0.1, rgb: [199, 0, 180] }, { index: 0.2, rgb: [255, 0, 121] }, { index: 0.3, rgb: [255, 108, 0] }, { index: 0.4, rgb: [222, 194, 0] }, { index: 0.5, rgb: [150, 255, 0] }, { index: 0.6, rgb: [0, 255, 55] }, { index: 0.7, rgb: [0, 246, 150] }, { index: 0.8, rgb: [50, 167, 222] }, { index: 0.9, rgb: [103, 51, 235] }, { index: 1, rgb: [124, 0, 186] }, ], bathymetry: [ { index: 0, rgb: [40, 26, 44] }, { index: 0.13, rgb: [59, 49, 90] }, { index: 0.25, rgb: [64, 76, 139] }, { index: 0.38, rgb: [63, 110, 151] }, { index: 0.5, rgb: [72, 142, 158] }, { index: 0.63, rgb: [85, 174, 163] }, { index: 0.75, rgb: [120, 206, 163] }, { index: 0.88, rgb: [187, 230, 172] }, { index: 1, rgb: [253, 254, 204] }, ], cdom: [ { index: 0, rgb: [47, 15, 62] }, { index: 0.13, rgb: [87, 23, 86] }, { index: 0.25, rgb: [130, 28, 99] }, { index: 0.38, rgb: [171, 41, 96] }, { index: 0.5, rgb: [206, 67, 86] }, { index: 0.63, rgb: [230, 106, 84] }, { index: 0.75, rgb: [242, 149, 103] }, { index: 0.88, rgb: [249, 193, 135] }, { index: 1, rgb: [254, 237, 176] }, ], chlorophyll: [ { index: 0, rgb: [18, 36, 20] }, { index: 0.13, rgb: [25, 63, 41] }, { index: 0.25, rgb: [24, 91, 59] }, { index: 0.38, rgb: [13, 119, 72] }, { index: 0.5, rgb: [18, 148, 80] }, { index: 0.63, rgb: [80, 173, 89] }, { index: 0.75, rgb: [132, 196, 122] }, { index: 0.88, rgb: [175, 221, 162] }, { index: 1, rgb: [215, 249, 208] }, ], density: [ { index: 0, rgb: [54, 14, 36] }, { index: 0.13, rgb: [89, 23, 80] }, { index: 0.25, rgb: [110, 45, 132] }, { index: 0.38, rgb: [120, 77, 178] }, { index: 0.5, rgb: [120, 113, 213] }, { index: 0.63, rgb: [115, 151, 228] }, { index: 0.75, rgb: [134, 185, 227] }, { index: 0.88, rgb: [177, 214, 227] }, { index: 1, rgb: [230, 241, 241] }, ], "freesurface-blue": [ { index: 0, rgb: [30, 4, 110] }, { index: 0.13, rgb: [47, 14, 176] }, { index: 0.25, rgb: [41, 45, 236] }, { index: 0.38, rgb: [25, 99, 212] }, { index: 0.5, rgb: [68, 131, 200] }, { index: 0.63, rgb: [114, 156, 197] }, { index: 0.75, rgb: [157, 181, 203] }, { index: 0.88, rgb: [200, 208, 216] }, { index: 1, rgb: [241, 237, 236] }, ], "freesurface-red": [ { index: 0, rgb: [60, 9, 18] }, { index: 0.13, rgb: [100, 17, 27] }, { index: 0.25, rgb: [142, 20, 29] }, { index: 0.38, rgb: [177, 43, 27] }, { index: 0.5, rgb: [192, 87, 63] }, { index: 0.63, rgb: [205, 125, 105] }, { index: 0.75, rgb: [216, 162, 148] }, { index: 0.88, rgb: [227, 199, 193] }, { index: 1, rgb: [241, 237, 236] }, ], oxygen: [ { index: 0, rgb: [64, 5, 5] }, { index: 0.13, rgb: [106, 6, 15] }, { index: 0.25, rgb: [144, 26, 7] }, { index: 0.38, rgb: [168, 64, 3] }, { index: 0.5, rgb: [188, 100, 4] }, { index: 0.63, rgb: [206, 136, 11] }, { index: 0.75, rgb: [220, 174, 25] }, { index: 0.88, rgb: [231, 215, 44] }, { index: 1, rgb: [248, 254, 105] }, ], par: [ { index: 0, rgb: [51, 20, 24] }, { index: 0.13, rgb: [90, 32, 35] }, { index: 0.25, rgb: [129, 44, 34] }, { index: 0.38, rgb: [159, 68, 25] }, { index: 0.5, rgb: [182, 99, 19] }, { index: 0.63, rgb: [199, 134, 22] }, { index: 0.75, rgb: [212, 171, 35] }, { index: 0.88, rgb: [221, 210, 54] }, { index: 1, rgb: [225, 253, 75] }, ], phase: [ { index: 0, rgb: [145, 105, 18] }, { index: 0.13, rgb: [184, 71, 38] }, { index: 0.25, rgb: [186, 58, 115] }, { index: 0.38, rgb: [160, 71, 185] }, { index: 0.5, rgb: [110, 97, 218] }, { index: 0.63, rgb: [50, 123, 164] }, { index: 0.75, rgb: [31, 131, 110] }, { index: 0.88, rgb: [77, 129, 34] }, { index: 1, rgb: [145, 105, 18] }, ], salinity: [ { index: 0, rgb: [42, 24, 108] }, { index: 0.13, rgb: [33, 50, 162] }, { index: 0.25, rgb: [15, 90, 145] }, { index: 0.38, rgb: [40, 118, 137] }, { index: 0.5, rgb: [59, 146, 135] }, { index: 0.63, rgb: [79, 175, 126] }, { index: 0.75, rgb: [120, 203, 104] }, { index: 0.88, rgb: [193, 221, 100] }, { index: 1, rgb: [253, 239, 154] }, ], temperature: [ { index: 0, rgb: [4, 35, 51] }, { index: 0.13, rgb: [23, 51, 122] }, { index: 0.25, rgb: [85, 59, 157] }, { index: 0.38, rgb: [129, 79, 143] }, { index: 0.5, rgb: [175, 95, 130] }, { index: 0.63, rgb: [222, 112, 101] }, { index: 0.75, rgb: [249, 146, 66] }, { index: 0.88, rgb: [249, 196, 65] }, { index: 1, rgb: [232, 250, 91] }, ], turbidity: [ { index: 0, rgb: [34, 31, 27] }, { index: 0.13, rgb: [65, 50, 41] }, { index: 0.25, rgb: [98, 69, 52] }, { index: 0.38, rgb: [131, 89, 57] }, { index: 0.5, rgb: [161, 112, 59] }, { index: 0.63, rgb: [185, 140, 66] }, { index: 0.75, rgb: [202, 174, 88] }, { index: 0.88, rgb: [216, 209, 126] }, { index: 1, rgb: [233, 246, 171] }, ], "velocity-blue": [ { index: 0, rgb: [17, 32, 64] }, { index: 0.13, rgb: [35, 52, 116] }, { index: 0.25, rgb: [29, 81, 156] }, { index: 0.38, rgb: [31, 113, 162] }, { index: 0.5, rgb: [50, 144, 169] }, { index: 0.63, rgb: [87, 173, 176] }, { index: 0.75, rgb: [149, 196, 189] }, { index: 0.88, rgb: [203, 221, 211] }, { index: 1, rgb: [254, 251, 230] }, ], "velocity-green": [ { index: 0, rgb: [23, 35, 19] }, { index: 0.13, rgb: [24, 64, 38] }, { index: 0.25, rgb: [11, 95, 45] }, { index: 0.38, rgb: [39, 123, 35] }, { index: 0.5, rgb: [95, 146, 12] }, { index: 0.63, rgb: [152, 165, 18] }, { index: 0.75, rgb: [201, 186, 69] }, { index: 0.88, rgb: [233, 216, 137] }, { index: 1, rgb: [255, 253, 205] }, ], cubehelix: [ { index: 0, rgb: [0, 0, 0] }, { index: 0.07, rgb: [22, 5, 59] }, { index: 0.13, rgb: [60, 4, 105] }, { index: 0.2, rgb: [109, 1, 135] }, { index: 0.27, rgb: [161, 0, 147] }, { index: 0.33, rgb: [210, 2, 142] }, { index: 0.4, rgb: [251, 11, 123] }, { index: 0.47, rgb: [255, 29, 97] }, { index: 0.53, rgb: [255, 54, 69] }, { index: 0.6, rgb: [255, 85, 46] }, { index: 0.67, rgb: [255, 120, 34] }, { index: 0.73, rgb: [255, 157, 37] }, { index: 0.8, rgb: [241, 191, 57] }, { index: 0.87, rgb: [224, 220, 93] }, { index: 0.93, rgb: [218, 241, 142] }, { index: 1, rgb: [227, 253, 198] }, ], }; }, {}, ], 53: [ function (t, e, r) { "use strict"; var n = t("./colorScale"), i = t("lerp"); function a(t) { return [ t[0] / 255, t[1] / 255, t[2] / 255, t[3], ]; } function o(t) { for (var e, r = "#", n = 0; n < 3; ++n) r += ( "00" + (e = (e = t[n]).toString(16)) ).substr(e.length); return r; } function s(t) { return "rgba(" + t.join(",") + ")"; } e.exports = function (t) { var e, r, l, c, u, f, h, p, d, m; t || (t = {}); (p = (t.nshades || 72) - 1), (h = t.format || "hex"), (f = t.colormap) || (f = "jet"); if ("string" == typeof f) { if (((f = f.toLowerCase()), !n[f])) throw Error( f + " not a supported colorscale", ); u = n[f]; } else { if (!Array.isArray(f)) throw Error( "unsupported colormap option", f, ); u = f.slice(); } if (u.length > p + 1) throw new Error( f + " map requires nshades to be at least size " + u.length, ); d = Array.isArray(t.alpha) ? 2 !== t.alpha.length ? [1, 1] : t.alpha.slice() : "number" == typeof t.alpha ? [t.alpha, t.alpha] : [1, 1]; (e = u.map(function (t) { return Math.round(t.index * p); })), (d[0] = Math.min(Math.max(d[0], 0), 1)), (d[1] = Math.min(Math.max(d[1], 0), 1)); var g = u.map(function (t, e) { var r = u[e].index, n = u[e].rgb.slice(); return ( (4 === n.length && n[3] >= 0 && n[3] <= 1) || (n[3] = d[0] + (d[1] - d[0]) * r), n ); }), v = []; for (m = 0; m < e.length - 1; ++m) { (c = e[m + 1] - e[m]), (r = g[m]), (l = g[m + 1]); for (var y = 0; y < c; y++) { var x = y / c; v.push([ Math.round(i(r[0], l[0], x)), Math.round(i(r[1], l[1], x)), Math.round(i(r[2], l[2], x)), i(r[3], l[3], x), ]); } } v.push(u[u.length - 1].rgb.concat(d[1])), "hex" === h ? (v = v.map(o)) : "rgbaString" === h ? (v = v.map(s)) : "float" === h && (v = v.map(a)); return v; }; }, { "./colorScale": 52, lerp: 240 }, ], 54: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, a) { var o = n(e, r, a); if (0 === o) { var s = i(n(t, e, r)), c = i(n(t, e, a)); if (s === c) { if (0 === s) { var u = l(t, e, r), f = l(t, e, a); return u === f ? 0 : u ? 1 : -1; } return 0; } return 0 === c ? s > 0 || l(t, e, a) ? -1 : 1 : 0 === s ? c > 0 || l(t, e, r) ? 1 : -1 : i(c - s); } var h = n(t, e, r); return h > 0 ? o > 0 && n(t, e, a) > 0 ? 1 : -1 : h < 0 ? o > 0 || n(t, e, a) > 0 ? 1 : -1 : n(t, e, a) > 0 || l(t, e, r) ? 1 : -1; }; var n = t("robust-orientation"), i = t("signum"), a = t("two-sum"), o = t("robust-product"), s = t("robust-sum"); function l(t, e, r) { var n = a(t[0], -e[0]), i = a(t[1], -e[1]), l = a(r[0], -e[0]), c = a(r[1], -e[1]), u = s(o(n, l), o(i, c)); return u[u.length - 1] >= 0; } }, { "robust-orientation": 284, "robust-product": 285, "robust-sum": 289, signum: 55, "two-sum": 307, }, ], 55: [ function (t, e, r) { "use strict"; e.exports = function (t) { return t < 0 ? -1 : t > 0 ? 1 : 0; }; }, {}, ], 56: [ function (t, e, r) { e.exports = function (t, e) { var r = t.length, a = t.length - e.length; if (a) return a; switch (r) { case 0: return 0; case 1: return t[0] - e[0]; case 2: return ( t[0] + t[1] - e[0] - e[1] || n(t[0], t[1]) - n(e[0], e[1]) ); case 3: var o = t[0] + t[1], s = e[0] + e[1]; if ((a = o + t[2] - (s + e[2]))) return a; var l = n(t[0], t[1]), c = n(e[0], e[1]); return ( n(l, t[2]) - n(c, e[2]) || n(l + t[2], o) - n(c + e[2], s) ); case 4: var u = t[0], f = t[1], h = t[2], p = t[3], d = e[0], m = e[1], g = e[2], v = e[3]; return ( u + f + h + p - (d + m + g + v) || n(u, f, h, p) - n(d, m, g, v, d) || n( u + f, u + h, u + p, f + h, f + p, h + p, ) - n( d + m, d + g, d + v, m + g, m + v, g + v, ) || n( u + f + h, u + f + p, u + h + p, f + h + p, ) - n( d + m + g, d + m + v, d + g + v, m + g + v, ) ); default: for ( var y = t.slice().sort(i), x = e.slice().sort(i), b = 0; b < r; ++b ) if ((a = y[b] - x[b])) return a; return 0; } }; var n = Math.min; function i(t, e) { return t - e; } }, {}, ], 57: [ function (t, e, r) { "use strict"; var n = t("compare-cell"), i = t("cell-orientation"); e.exports = function (t, e) { return n(t, e) || i(t) - i(e); }; }, { "cell-orientation": 47, "compare-cell": 56 }, ], 58: [ function (t, e, r) { "use strict"; var n = t("./lib/ch1d"), i = t("./lib/ch2d"), a = t("./lib/chnd"); e.exports = function (t) { var e = t.length; if (0 === e) return []; if (1 === e) return [[0]]; var r = t[0].length; if (0 === r) return []; if (1 === r) return n(t); if (2 === r) return i(t); return a(t, r); }; }, { "./lib/ch1d": 59, "./lib/ch2d": 60, "./lib/chnd": 61, }, ], 59: [ function (t, e, r) { "use strict"; e.exports = function (t) { for ( var e = 0, r = 0, n = 1; n < t.length; ++n ) t[n][0] < t[e][0] && (e = n), t[n][0] > t[r][0] && (r = n); return e < r ? [[e], [r]] : e > r ? [[r], [e]] : [[e]]; }; }, {}, ], 60: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = n(t), r = e.length; if (r <= 2) return []; for ( var i = new Array(r), a = e[r - 1], o = 0; o < r; ++o ) { var s = e[o]; (i[o] = [a, s]), (a = s); } return i; }; var n = t("monotone-convex-hull-2d"); }, { "monotone-convex-hull-2d": 246 }, ], 61: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { try { return n(t, !0); } catch (o) { var r = i(t); if (r.length <= e) return []; var a = (function (t, e) { for ( var r = t.length, n = new Array(r), i = 0; i < e.length; ++i ) n[i] = t[e[i]]; var a = e.length; for (i = 0; i < r; ++i) e.indexOf(i) < 0 && (n[a++] = t[i]); return n; })(t, r); return (function (t, e) { for ( var r = t.length, n = e.length, i = 0; i < r; ++i ) for ( var a = t[i], o = 0; o < a.length; ++o ) { var s = a[o]; if (s < n) a[o] = e[s]; else { s -= n; for (var l = 0; l < n; ++l) s >= e[l] && (s += 1); a[o] = s; } } return t; })(n(a, !0), r); } }; var n = t("incremental-convex-hull"), i = t("affine-hull"); }, { "affine-hull": 10, "incremental-convex-hull": 233, }, ], 62: [ function (t, e, r) { "use strict"; (e.exports = function (t, e, r, n, i, a) { var o = i - 1, s = i * i, l = o * o, c = (1 + 2 * i) * l, u = i * l, f = s * (3 - 2 * i), h = s * o; if (t.length) { a || (a = new Array(t.length)); for (var p = t.length - 1; p >= 0; --p) a[p] = c * t[p] + u * e[p] + f * r[p] + h * n[p]; return a; } return c * t + u * e + f * r + h * n; }), (e.exports.derivative = function ( t, e, r, n, i, a, ) { var o = 6 * i * i - 6 * i, s = 3 * i * i - 4 * i + 1, l = -6 * i * i + 6 * i, c = 3 * i * i - 2 * i; if (t.length) { a || (a = new Array(t.length)); for (var u = t.length - 1; u >= 0; --u) a[u] = o * t[u] + s * e[u] + l * r[u] + c * n[u]; return a; } return o * t + s * e + l * r[u] + c * n; }); }, {}, ], 63: [ function (t, e, r) { "use strict"; var n = t("incremental-convex-hull"), i = t("uniq"); function a(t, e) { (this.point = t), (this.index = e); } function o(t, e) { for ( var r = t.point, n = e.point, i = r.length, a = 0; a < i; ++a ) { var o = n[a] - r[a]; if (o) return o; } return 0; } e.exports = function (t, e) { var r = t.length; if (0 === r) return []; var s = t[0].length; if (s < 1) return []; if (1 === s) return (function (t, e, r) { if (1 === t) return r ? [[-1, 0]] : []; var n = e.map(function (t, e) { return [t[0], e]; }); n.sort(function (t, e) { return t[0] - e[0]; }); for ( var i = new Array(t - 1), a = 1; a < t; ++a ) { var o = n[a - 1], s = n[a]; i[a - 1] = [o[1], s[1]]; } r && i.push( [-1, i[0][1]], [i[t - 1][1], -1], ); return i; })(r, t, e); for ( var l = new Array(r), c = 1, u = 0; u < r; ++u ) { for ( var f = t[u], h = new Array(s + 1), p = 0, d = 0; d < s; ++d ) { var m = f[d]; (h[d] = m), (p += m * m); } (h[s] = p), (l[u] = new a(h, u)), (c = Math.max(p, c)); } i(l, o), (r = l.length); var g = new Array(r + s + 1), v = new Array(r + s + 1), y = (s + 1) * (s + 1) * c, x = new Array(s + 1); for (u = 0; u <= s; ++u) x[u] = 0; (x[s] = y), (g[0] = x.slice()), (v[0] = -1); for (u = 0; u <= s; ++u) { ((h = x.slice())[u] = 1), (g[u + 1] = h), (v[u + 1] = -1); } for (u = 0; u < r; ++u) { var b = l[u]; (g[u + s + 1] = b.point), (v[u + s + 1] = b.index); } var _ = n(g, !1); _ = e ? _.filter(function (t) { for (var e = 0, r = 0; r <= s; ++r) { var n = v[t[r]]; if (n < 0 && ++e >= 2) return !1; t[r] = n; } return !0; }) : _.filter(function (t) { for (var e = 0; e <= s; ++e) { var r = v[t[e]]; if (r < 0) return !1; t[e] = r; } return !0; }); if (1 & s) for (u = 0; u < _.length; ++u) { h = (b = _[u])[0]; (b[0] = b[1]), (b[1] = h); } return _; }; }, { "incremental-convex-hull": 233, uniq: 310 }, ], 64: [ function (t, e, r) { (function (t) { (function () { var r = !1; if ("undefined" != typeof Float64Array) { var n = new Float64Array(1), i = new Uint32Array(n.buffer); if ( ((n[0] = 1), (r = !0), 1072693248 === i[1]) ) { (e.exports = function (t) { return (n[0] = t), [i[0], i[1]]; }), (e.exports.pack = function (t, e) { return (i[0] = t), (i[1] = e), n[0]; }), (e.exports.lo = function (t) { return (n[0] = t), i[0]; }), (e.exports.hi = function (t) { return (n[0] = t), i[1]; }); } else if (1072693248 === i[0]) { (e.exports = function (t) { return (n[0] = t), [i[1], i[0]]; }), (e.exports.pack = function (t, e) { return (i[1] = t), (i[0] = e), n[0]; }), (e.exports.lo = function (t) { return (n[0] = t), i[1]; }), (e.exports.hi = function (t) { return (n[0] = t), i[0]; }); } else r = !1; } if (!r) { var a = new t(8); (e.exports = function (t) { return ( a.writeDoubleLE(t, 0, !0), [ a.readUInt32LE(0, !0), a.readUInt32LE(4, !0), ] ); }), (e.exports.pack = function (t, e) { return ( a.writeUInt32LE(t, 0, !0), a.writeUInt32LE(e, 4, !0), a.readDoubleLE(0, !0) ); }), (e.exports.lo = function (t) { return ( a.writeDoubleLE(t, 0, !0), a.readUInt32LE(0, !0) ); }), (e.exports.hi = function (t) { return ( a.writeDoubleLE(t, 0, !0), a.readUInt32LE(4, !0) ); }); } (e.exports.sign = function (t) { return e.exports.hi(t) >>> 31; }), (e.exports.exponent = function (t) { return ( ((e.exports.hi(t) << 1) >>> 21) - 1023 ); }), (e.exports.fraction = function (t) { var r = e.exports.lo(t), n = e.exports.hi(t), i = 1048575 & n; return ( 2146435072 & n && (i += 1 << 20), [r, i] ); }), (e.exports.denormalized = function (t) { return !(2146435072 & e.exports.hi(t)); }); }).call(this); }).call(this, t("buffer").Buffer); }, { buffer: 3 }, ], 65: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { switch ((void 0 === e && (e = 0), typeof t)) { case "number": if (t > 0) return (function (t, e) { var r, n; for ( r = new Array(t), n = 0; n < t; ++n ) r[n] = e; return r; })(0 | t, e); break; case "object": if ("number" == typeof t.length) return (function t(e, r, n) { var i = 0 | e[n]; if (i <= 0) return []; var a, o = new Array(i); if (n === e.length - 1) for (a = 0; a < i; ++a) o[a] = r; else for (a = 0; a < i; ++a) o[a] = t(e, r, n + 1); return o; })(t, e, 0); } return []; }; }, {}, ], 66: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r = t.length; if ("number" != typeof e) { e = 0; for (var i = 0; i < r; ++i) { var a = t[i]; e = Math.max(e, a[0], a[1]); } e = 1 + (0 | e); } e |= 0; var o = new Array(e); for (i = 0; i < e; ++i) o[i] = []; for (i = 0; i < r; ++i) { a = t[i]; o[a[0]].push(a[1]), o[a[1]].push(a[0]); } for (var s = 0; s < e; ++s) n(o[s], function (t, e) { return t - e; }); return o; }; var n = t("uniq"); }, { uniq: 310 }, ], 67: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { var n = e || 0, i = r || 1; return [ [ t[12] + t[0], t[13] + t[1], t[14] + t[2], t[15] + t[3], ], [ t[12] - t[0], t[13] - t[1], t[14] - t[2], t[15] - t[3], ], [ t[12] + t[4], t[13] + t[5], t[14] + t[6], t[15] + t[7], ], [ t[12] - t[4], t[13] - t[5], t[14] - t[6], t[15] - t[7], ], [ n * t[12] + t[8], n * t[13] + t[9], n * t[14] + t[10], n * t[15] + t[11], ], [ i * t[12] - t[8], i * t[13] - t[9], i * t[14] - t[10], i * t[15] - t[11], ], ]; }; }, {}, ], 68: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { switch (arguments.length) { case 0: return new o([0], [0], 0); case 1: return "number" == typeof t ? new o((n = l(t)), n, 0) : new o(t, l(t.length), 0); case 2: if ("number" == typeof e) { var n = l(t.length); return new o(t, n, +e); } r = 0; case 3: if (t.length !== e.length) throw new Error( "state and velocity lengths must match", ); return new o(t, e, r); } }; var n = t("cubic-hermite"), i = t("binary-search-bounds"); function a(t, e, r) { return Math.min(e, Math.max(t, r)); } function o(t, e, r) { (this.dimension = t.length), (this.bounds = [ new Array(this.dimension), new Array(this.dimension), ]); for (var n = 0; n < this.dimension; ++n) (this.bounds[0][n] = -1 / 0), (this.bounds[1][n] = 1 / 0); (this._state = t.slice().reverse()), (this._velocity = e.slice().reverse()), (this._time = [r]), (this._scratch = [ t.slice(), t.slice(), t.slice(), t.slice(), t.slice(), ]); } var s = o.prototype; function l(t) { for (var e = new Array(t), r = 0; r < t; ++r) e[r] = 0; return e; } (s.flush = function (t) { var e = i.gt(this._time, t) - 1; e <= 0 || (this._time.splice(0, e), this._state.splice(0, e * this.dimension), this._velocity.splice( 0, e * this.dimension, )); }), (s.curve = function (t) { var e = this._time, r = e.length, o = i.le(e, t), s = this._scratch[0], l = this._state, c = this._velocity, u = this.dimension, f = this.bounds; if (o < 0) for ( var h = u - 1, p = 0; p < u; ++p, --h ) s[p] = l[h]; else if (o >= r - 1) { h = l.length - 1; var d = t - e[r - 1]; for (p = 0; p < u; ++p, --h) s[p] = l[h] + d * c[h]; } else { h = u * (o + 1) - 1; var m = e[o], g = e[o + 1] - m || 1, v = this._scratch[1], y = this._scratch[2], x = this._scratch[3], b = this._scratch[4], _ = !0; for (p = 0; p < u; ++p, --h) (v[p] = l[h]), (x[p] = c[h] * g), (y[p] = l[h + u]), (b[p] = c[h + u] * g), (_ = _ && v[p] === y[p] && x[p] === b[p] && 0 === x[p]); if (_) for (p = 0; p < u; ++p) s[p] = v[p]; else n(v, x, y, b, (t - m) / g, s); } var w = f[0], T = f[1]; for (p = 0; p < u; ++p) s[p] = a(w[p], T[p], s[p]); return s; }), (s.dcurve = function (t) { var e = this._time, r = e.length, a = i.le(e, t), o = this._scratch[0], s = this._state, l = this._velocity, c = this.dimension; if (a >= r - 1) for ( var u = s.length - 1, f = (e[r - 1], 0); f < c; ++f, --u ) o[f] = l[u]; else { u = c * (a + 1) - 1; var h = e[a], p = e[a + 1] - h || 1, d = this._scratch[1], m = this._scratch[2], g = this._scratch[3], v = this._scratch[4], y = !0; for (f = 0; f < c; ++f, --u) (d[f] = s[u]), (g[f] = l[u] * p), (m[f] = s[u + c]), (v[f] = l[u + c] * p), (y = y && d[f] === m[f] && g[f] === v[f] && 0 === g[f]); if (y) for (f = 0; f < c; ++f) o[f] = 0; else { n.derivative( d, g, m, v, (t - h) / p, o, ); for (f = 0; f < c; ++f) o[f] /= p; } } return o; }), (s.lastT = function () { var t = this._time; return t[t.length - 1]; }), (s.stable = function () { for ( var t = this._velocity, e = t.length, r = this.dimension - 1; r >= 0; --r ) if (t[--e]) return !1; return !0; }), (s.jump = function (t) { var e = this.lastT(), r = this.dimension; if ( !(t < e || arguments.length !== r + 1) ) { var n = this._state, i = this._velocity, o = n.length - this.dimension, s = this.bounds, l = s[0], c = s[1]; this._time.push(e, t); for (var u = 0; u < 2; ++u) for (var f = 0; f < r; ++f) n.push(n[o++]), i.push(0); this._time.push(t); for (f = r; f > 0; --f) n.push( a(l[f - 1], c[f - 1], arguments[f]), ), i.push(0); } }), (s.push = function (t) { var e = this.lastT(), r = this.dimension; if ( !(t < e || arguments.length !== r + 1) ) { var n = this._state, i = this._velocity, o = n.length - this.dimension, s = t - e, l = this.bounds, c = l[0], u = l[1], f = s > 1e-6 ? 1 / s : 0; this._time.push(t); for (var h = r; h > 0; --h) { var p = a( c[h - 1], u[h - 1], arguments[h], ); n.push(p), i.push((p - n[o++]) * f); } } }), (s.set = function (t) { var e = this.dimension; if ( !( t < this.lastT() || arguments.length !== e + 1 ) ) { var r = this._state, n = this._velocity, i = this.bounds, o = i[0], s = i[1]; this._time.push(t); for (var l = e; l > 0; --l) r.push( a(o[l - 1], s[l - 1], arguments[l]), ), n.push(0); } }), (s.move = function (t) { var e = this.lastT(), r = this.dimension; if ( !(t <= e || arguments.length !== r + 1) ) { var n = this._state, i = this._velocity, o = n.length - this.dimension, s = this.bounds, l = s[0], c = s[1], u = t - e, f = u > 1e-6 ? 1 / u : 0; this._time.push(t); for (var h = r; h > 0; --h) { var p = arguments[h]; n.push( a(l[h - 1], c[h - 1], n[o++] + p), ), i.push(p * f); } } }), (s.idle = function (t) { var e = this.lastT(); if (!(t < e)) { var r = this.dimension, n = this._state, i = this._velocity, o = n.length - r, s = this.bounds, l = s[0], c = s[1], u = t - e; this._time.push(t); for (var f = r - 1; f >= 0; --f) n.push(a(l[f], c[f], n[o] + u * i[o])), i.push(0), (o += 1); } }); }, { "binary-search-bounds": 31, "cubic-hermite": 62, }, ], 69: [ function (t, e, r) { "use strict"; e.exports = function (t) { return new s(t || m, null); }; function n(t, e, r, n, i, a) { (this._color = t), (this.key = e), (this.value = r), (this.left = n), (this.right = i), (this._count = a); } function i(t) { return new n( t._color, t.key, t.value, t.left, t.right, t._count, ); } function a(t, e) { return new n( t, e.key, e.value, e.left, e.right, e._count, ); } function o(t) { t._count = 1 + (t.left ? t.left._count : 0) + (t.right ? t.right._count : 0); } function s(t, e) { (this._compare = t), (this.root = e); } var l = s.prototype; function c(t, e) { var r; if (e.left && (r = c(t, e.left))) return r; return ( (r = t(e.key, e.value)) || (e.right ? c(t, e.right) : void 0) ); } function u(t, e, r, n) { if (e(t, n.key) <= 0) { var i; if (n.left) if ((i = u(t, e, r, n.left))) return i; if ((i = r(n.key, n.value))) return i; } if (n.right) return u(t, e, r, n.right); } function f(t, e, r, n, i) { var a, o = r(t, i.key), s = r(e, i.key); if (o <= 0) { if (i.left && (a = f(t, e, r, n, i.left))) return a; if (s > 0 && (a = n(i.key, i.value))) return a; } if (s > 0 && i.right) return f(t, e, r, n, i.right); } function h(t, e) { (this.tree = t), (this._stack = e); } Object.defineProperty(l, "keys", { get: function () { var t = []; return ( this.forEach(function (e, r) { t.push(e); }), t ); }, }), Object.defineProperty(l, "values", { get: function () { var t = []; return ( this.forEach(function (e, r) { t.push(r); }), t ); }, }), Object.defineProperty(l, "length", { get: function () { return this.root ? this.root._count : 0; }, }), (l.insert = function (t, e) { for ( var r = this._compare, i = this.root, l = [], c = []; i; ) { var u = r(t, i.key); l.push(i), c.push(u), (i = u <= 0 ? i.left : i.right); } l.push(new n(0, t, e, null, null, 1)); for (var f = l.length - 2; f >= 0; --f) { i = l[f]; c[f] <= 0 ? (l[f] = new n( i._color, i.key, i.value, l[f + 1], i.right, i._count + 1, )) : (l[f] = new n( i._color, i.key, i.value, i.left, l[f + 1], i._count + 1, )); } for (f = l.length - 1; f > 1; --f) { var h = l[f - 1]; i = l[f]; if (1 === h._color || 1 === i._color) break; var p = l[f - 2]; if (p.left === h) if (h.left === i) { if ( !(d = p.right) || 0 !== d._color ) { if ( ((p._color = 0), (p.left = h.right), (h._color = 1), (h.right = p), (l[f - 2] = h), (l[f - 1] = i), o(p), o(h), f >= 3) ) (m = l[f - 3]).left === p ? (m.left = h) : (m.right = h); break; } (h._color = 1), (p.right = a(1, d)), (p._color = 0), (f -= 1); } else { if ( !(d = p.right) || 0 !== d._color ) { if ( ((h.right = i.left), (p._color = 0), (p.left = i.right), (i._color = 1), (i.left = h), (i.right = p), (l[f - 2] = i), (l[f - 1] = h), o(p), o(h), o(i), f >= 3) ) (m = l[f - 3]).left === p ? (m.left = i) : (m.right = i); break; } (h._color = 1), (p.right = a(1, d)), (p._color = 0), (f -= 1); } else if (h.right === i) { if (!(d = p.left) || 0 !== d._color) { if ( ((p._color = 0), (p.right = h.left), (h._color = 1), (h.left = p), (l[f - 2] = h), (l[f - 1] = i), o(p), o(h), f >= 3) ) (m = l[f - 3]).right === p ? (m.right = h) : (m.left = h); break; } (h._color = 1), (p.left = a(1, d)), (p._color = 0), (f -= 1); } else { var d; if (!(d = p.left) || 0 !== d._color) { var m; if ( ((h.left = i.right), (p._color = 0), (p.right = i.left), (i._color = 1), (i.right = h), (i.left = p), (l[f - 2] = i), (l[f - 1] = h), o(p), o(h), o(i), f >= 3) ) (m = l[f - 3]).right === p ? (m.right = i) : (m.left = i); break; } (h._color = 1), (p.left = a(1, d)), (p._color = 0), (f -= 1); } } return (l[0]._color = 1), new s(r, l[0]); }), (l.forEach = function (t, e, r) { if (this.root) switch (arguments.length) { case 1: return c(t, this.root); case 2: return u( e, this._compare, t, this.root, ); case 3: if (this._compare(e, r) >= 0) return; return f( e, r, this._compare, t, this.root, ); } }), Object.defineProperty(l, "begin", { get: function () { for (var t = [], e = this.root; e; ) t.push(e), (e = e.left); return new h(this, t); }, }), Object.defineProperty(l, "end", { get: function () { for (var t = [], e = this.root; e; ) t.push(e), (e = e.right); return new h(this, t); }, }), (l.at = function (t) { if (t < 0) return new h(this, []); for (var e = this.root, r = []; ; ) { if ((r.push(e), e.left)) { if (t < e.left._count) { e = e.left; continue; } t -= e.left._count; } if (!t) return new h(this, r); if (((t -= 1), !e.right)) break; if (t >= e.right._count) break; e = e.right; } return new h(this, []); }), (l.ge = function (t) { for ( var e = this._compare, r = this.root, n = [], i = 0; r; ) { var a = e(t, r.key); n.push(r), a <= 0 && (i = n.length), (r = a <= 0 ? r.left : r.right); } return (n.length = i), new h(this, n); }), (l.gt = function (t) { for ( var e = this._compare, r = this.root, n = [], i = 0; r; ) { var a = e(t, r.key); n.push(r), a < 0 && (i = n.length), (r = a < 0 ? r.left : r.right); } return (n.length = i), new h(this, n); }), (l.lt = function (t) { for ( var e = this._compare, r = this.root, n = [], i = 0; r; ) { var a = e(t, r.key); n.push(r), a > 0 && (i = n.length), (r = a <= 0 ? r.left : r.right); } return (n.length = i), new h(this, n); }), (l.le = function (t) { for ( var e = this._compare, r = this.root, n = [], i = 0; r; ) { var a = e(t, r.key); n.push(r), a >= 0 && (i = n.length), (r = a < 0 ? r.left : r.right); } return (n.length = i), new h(this, n); }), (l.find = function (t) { for ( var e = this._compare, r = this.root, n = []; r; ) { var i = e(t, r.key); if ((n.push(r), 0 === i)) return new h(this, n); r = i <= 0 ? r.left : r.right; } return new h(this, []); }), (l.remove = function (t) { var e = this.find(t); return e ? e.remove() : this; }), (l.get = function (t) { for ( var e = this._compare, r = this.root; r; ) { var n = e(t, r.key); if (0 === n) return r.value; r = n <= 0 ? r.left : r.right; } }); var p = h.prototype; function d(t, e) { (t.key = e.key), (t.value = e.value), (t.left = e.left), (t.right = e.right), (t._color = e._color), (t._count = e._count); } function m(t, e) { return t < e ? -1 : t > e ? 1 : 0; } Object.defineProperty(p, "valid", { get: function () { return this._stack.length > 0; }, }), Object.defineProperty(p, "node", { get: function () { return this._stack.length > 0 ? this._stack[this._stack.length - 1] : null; }, enumerable: !0, }), (p.clone = function () { return new h( this.tree, this._stack.slice(), ); }), (p.remove = function () { var t = this._stack; if (0 === t.length) return this.tree; var e = new Array(t.length), r = t[t.length - 1]; e[e.length - 1] = new n( r._color, r.key, r.value, r.left, r.right, r._count, ); for (var l = t.length - 2; l >= 0; --l) { (r = t[l]).left === t[l + 1] ? (e[l] = new n( r._color, r.key, r.value, e[l + 1], r.right, r._count, )) : (e[l] = new n( r._color, r.key, r.value, r.left, e[l + 1], r._count, )); } if ((r = e[e.length - 1]).left && r.right) { var c = e.length; for (r = r.left; r.right; ) e.push(r), (r = r.right); var u = e[c - 1]; e.push( new n( r._color, u.key, u.value, r.left, r.right, r._count, ), ), (e[c - 1].key = r.key), (e[c - 1].value = r.value); for (l = e.length - 2; l >= c; --l) (r = e[l]), (e[l] = new n( r._color, r.key, r.value, r.left, e[l + 1], r._count, )); e[c - 1].left = e[c]; } if (0 === (r = e[e.length - 1])._color) { var f = e[e.length - 2]; f.left === r ? (f.left = null) : f.right === r && (f.right = null), e.pop(); for (l = 0; l < e.length; ++l) e[l]._count--; return new s(this.tree._compare, e[0]); } if (r.left || r.right) { r.left ? d(r, r.left) : r.right && d(r, r.right), (r._color = 1); for (l = 0; l < e.length - 1; ++l) e[l]._count--; return new s(this.tree._compare, e[0]); } if (1 === e.length) return new s(this.tree._compare, null); for (l = 0; l < e.length; ++l) e[l]._count--; var h = e[e.length - 2]; return ( (function (t) { for ( var e, r, n, s, l = t.length - 1; l >= 0; --l ) { if (((e = t[l]), 0 === l)) return void (e._color = 1); if ((r = t[l - 1]).left === e) { if ( (n = r.right).right && 0 === n.right._color ) { if ( ((s = (n = r.right = i(n)).right = i(n.right)), (r.right = n.left), (n.left = r), (n.right = s), (n._color = r._color), (e._color = 1), (r._color = 1), (s._color = 1), o(r), o(n), l > 1) ) (c = t[l - 2]).left === r ? (c.left = n) : (c.right = n); return void (t[l - 1] = n); } if (n.left && 0 === n.left._color) { if ( ((s = (n = r.right = i(n)).left = i(n.left)), (r.right = s.left), (n.left = s.right), (s.left = r), (s.right = n), (s._color = r._color), (r._color = 1), (n._color = 1), (e._color = 1), o(r), o(n), o(s), l > 1) ) (c = t[l - 2]).left === r ? (c.left = s) : (c.right = s); return void (t[l - 1] = s); } if (1 === n._color) { if (0 === r._color) return ( (r._color = 1), void (r.right = a(0, n)) ); r.right = a(0, n); continue; } (n = i(n)), (r.right = n.left), (n.left = r), (n._color = r._color), (r._color = 0), o(r), o(n), l > 1 && ((c = t[l - 2]).left === r ? (c.left = n) : (c.right = n)), (t[l - 1] = n), (t[l] = r), l + 1 < t.length ? (t[l + 1] = e) : t.push(e), (l += 2); } else { if ( (n = r.left).left && 0 === n.left._color ) { if ( ((s = (n = r.left = i(n)).left = i(n.left)), (r.left = n.right), (n.right = r), (n.left = s), (n._color = r._color), (e._color = 1), (r._color = 1), (s._color = 1), o(r), o(n), l > 1) ) (c = t[l - 2]).right === r ? (c.right = n) : (c.left = n); return void (t[l - 1] = n); } if ( n.right && 0 === n.right._color ) { if ( ((s = (n = r.left = i(n)).right = i(n.right)), (r.left = s.right), (n.right = s.left), (s.right = r), (s.left = n), (s._color = r._color), (r._color = 1), (n._color = 1), (e._color = 1), o(r), o(n), o(s), l > 1) ) (c = t[l - 2]).right === r ? (c.right = s) : (c.left = s); return void (t[l - 1] = s); } if (1 === n._color) { if (0 === r._color) return ( (r._color = 1), void (r.left = a(0, n)) ); r.left = a(0, n); continue; } var c; (n = i(n)), (r.left = n.right), (n.right = r), (n._color = r._color), (r._color = 0), o(r), o(n), l > 1 && ((c = t[l - 2]).right === r ? (c.right = n) : (c.left = n)), (t[l - 1] = n), (t[l] = r), l + 1 < t.length ? (t[l + 1] = e) : t.push(e), (l += 2); } } })(e), h.left === r ? (h.left = null) : (h.right = null), new s(this.tree._compare, e[0]) ); }), Object.defineProperty(p, "key", { get: function () { if (this._stack.length > 0) return this._stack[ this._stack.length - 1 ].key; }, enumerable: !0, }), Object.defineProperty(p, "value", { get: function () { if (this._stack.length > 0) return this._stack[ this._stack.length - 1 ].value; }, enumerable: !0, }), Object.defineProperty(p, "index", { get: function () { var t = 0, e = this._stack; if (0 === e.length) { var r = this.tree.root; return r ? r._count : 0; } e[e.length - 1].left && (t = e[e.length - 1].left._count); for (var n = e.length - 2; n >= 0; --n) e[n + 1] === e[n].right && (++t, e[n].left && (t += e[n].left._count)); return t; }, enumerable: !0, }), (p.next = function () { var t = this._stack; if (0 !== t.length) { var e = t[t.length - 1]; if (e.right) for (e = e.right; e; ) t.push(e), (e = e.left); else for ( t.pop(); t.length > 0 && t[t.length - 1].right === e; ) (e = t[t.length - 1]), t.pop(); } }), Object.defineProperty(p, "hasNext", { get: function () { var t = this._stack; if (0 === t.length) return !1; if (t[t.length - 1].right) return !0; for (var e = t.length - 1; e > 0; --e) if (t[e - 1].left === t[e]) return !0; return !1; }, }), (p.update = function (t) { var e = this._stack; if (0 === e.length) throw new Error( "Can't update empty node!", ); var r = new Array(e.length), i = e[e.length - 1]; r[r.length - 1] = new n( i._color, i.key, t, i.left, i.right, i._count, ); for (var a = e.length - 2; a >= 0; --a) (i = e[a]).left === e[a + 1] ? (r[a] = new n( i._color, i.key, i.value, r[a + 1], i.right, i._count, )) : (r[a] = new n( i._color, i.key, i.value, i.left, r[a + 1], i._count, )); return new s(this.tree._compare, r[0]); }), (p.prev = function () { var t = this._stack; if (0 !== t.length) { var e = t[t.length - 1]; if (e.left) for (e = e.left; e; ) t.push(e), (e = e.right); else for ( t.pop(); t.length > 0 && t[t.length - 1].left === e; ) (e = t[t.length - 1]), t.pop(); } }), Object.defineProperty(p, "hasPrev", { get: function () { var t = this._stack; if (0 === t.length) return !1; if (t[t.length - 1].left) return !0; for (var e = t.length - 1; e > 0; --e) if (t[e - 1].right === t[e]) return !0; return !1; }, }); }, {}, ], 70: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r = new u(t); return r.update(e), r; }; var n = t("./lib/text.js"), i = t("./lib/lines.js"), a = t("./lib/background.js"), o = t("./lib/cube.js"), s = t("./lib/ticks.js"), l = new Float32Array([ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ]); function c(t, e) { return ( (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), t ); } function u(t) { (this.gl = t), (this.pixelRatio = 1), (this.bounds = [ [-10, -10, -10], [10, 10, 10], ]), (this.ticks = [[], [], []]), (this.autoTicks = !0), (this.tickSpacing = [1, 1, 1]), (this.tickEnable = [!0, !0, !0]), (this.tickFont = [ "sans-serif", "sans-serif", "sans-serif", ]), (this.tickSize = [12, 12, 12]), (this.tickAngle = [0, 0, 0]), (this.tickAlign = ["auto", "auto", "auto"]), (this.tickColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.tickPad = [10, 10, 10]), (this.lastCubeProps = { cubeEdges: [0, 0, 0], axis: [0, 0, 0], }), (this.labels = ["x", "y", "z"]), (this.labelEnable = [!0, !0, !0]), (this.labelFont = "sans-serif"), (this.labelSize = [20, 20, 20]), (this.labelAngle = [0, 0, 0]), (this.labelAlign = [ "auto", "auto", "auto", ]), (this.labelColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.labelPad = [10, 10, 10]), (this.lineEnable = [!0, !0, !0]), (this.lineMirror = [!1, !1, !1]), (this.lineWidth = [1, 1, 1]), (this.lineColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.lineTickEnable = [!0, !0, !0]), (this.lineTickMirror = [!1, !1, !1]), (this.lineTickLength = [0, 0, 0]), (this.lineTickWidth = [1, 1, 1]), (this.lineTickColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.gridEnable = [!0, !0, !0]), (this.gridWidth = [1, 1, 1]), (this.gridColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.zeroEnable = [!0, !0, !0]), (this.zeroLineColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.zeroLineWidth = [2, 2, 2]), (this.backgroundEnable = [!1, !1, !1]), (this.backgroundColor = [ [0.8, 0.8, 0.8, 0.5], [0.8, 0.8, 0.8, 0.5], [0.8, 0.8, 0.8, 0.5], ]), (this._firstInit = !0), (this._text = null), (this._lines = null), (this._background = a(t)); } var f = u.prototype; function h() { (this.primalOffset = [0, 0, 0]), (this.primalMinor = [0, 0, 0]), (this.mirrorOffset = [0, 0, 0]), (this.mirrorMinor = [0, 0, 0]); } f.update = function (t) { function e(e, r, n) { if (n in t) { var i, a = t[n], o = this[n]; ( e ? Array.isArray(a) && Array.isArray(a[0]) : Array.isArray(a) ) ? (this[n] = i = [r(a[0]), r(a[1]), r(a[2])]) : (this[n] = i = [r(a), r(a), r(a)]); for (var s = 0; s < 3; ++s) if (i[s] !== o[s]) return !0; } return !1; } t = t || {}; var r, a = e.bind(this, !1, Number), o = e.bind(this, !1, Boolean), l = e.bind(this, !1, String), c = e.bind(this, !0, function (t) { if (Array.isArray(t)) { if (3 === t.length) return [+t[0], +t[1], +t[2], 1]; if (4 === t.length) return [+t[0], +t[1], +t[2], +t[3]]; } return [0, 0, 0, 1]; }), u = !1, f = !1; if ("bounds" in t) for (var h = t.bounds, p = 0; p < 2; ++p) for (var d = 0; d < 3; ++d) h[p][d] !== this.bounds[p][d] && (f = !0), (this.bounds[p][d] = h[p][d]); if ("ticks" in t) { (r = t.ticks), (u = !0), (this.autoTicks = !1); for (p = 0; p < 3; ++p) this.tickSpacing[p] = 0; } else a("tickSpacing") && ((this.autoTicks = !0), (f = !0)); if ( (this._firstInit && ("ticks" in t || "tickSpacing" in t || (this.autoTicks = !0), (f = !0), (u = !0), (this._firstInit = !1)), f && this.autoTicks && ((r = s.create( this.bounds, this.tickSpacing, )), (u = !0)), u) ) { for (p = 0; p < 3; ++p) r[p].sort(function (t, e) { return t.x - e.x; }); s.equal(r, this.ticks) ? (u = !1) : (this.ticks = r); } o("tickEnable"), l("tickFont") && (u = !0), a("tickSize"), a("tickAngle"), a("tickPad"), c("tickColor"); var m = l("labels"); l("labelFont") && (m = !0), o("labelEnable"), a("labelSize"), a("labelPad"), c("labelColor"), o("lineEnable"), o("lineMirror"), a("lineWidth"), c("lineColor"), o("lineTickEnable"), o("lineTickMirror"), a("lineTickLength"), a("lineTickWidth"), c("lineTickColor"), o("gridEnable"), a("gridWidth"), c("gridColor"), o("zeroEnable"), c("zeroLineColor"), a("zeroLineWidth"), o("backgroundEnable"), c("backgroundColor"), this._text ? this._text && (m || u) && this._text.update( this.bounds, this.labels, this.labelFont, this.ticks, this.tickFont, ) : (this._text = n( this.gl, this.bounds, this.labels, this.labelFont, this.ticks, this.tickFont, )), this._lines && u && (this._lines.dispose(), (this._lines = null)), this._lines || (this._lines = i( this.gl, this.bounds, this.ticks, )); }; var p = [new h(), new h(), new h()]; function d(t, e, r, n, i) { for ( var a = t.primalOffset, o = t.primalMinor, s = t.mirrorOffset, l = t.mirrorMinor, c = n[e], u = 0; u < 3; ++u ) if (e !== u) { var f = a, h = s, p = o, d = l; c & (1 << u) && ((f = s), (h = a), (p = l), (d = o)), (f[u] = r[0][u]), (h[u] = r[1][u]), i[u] > 0 ? ((p[u] = -1), (d[u] = 0)) : ((p[u] = 0), (d[u] = 1)); } } var m = [0, 0, 0], g = { model: l, view: l, projection: l, _ortho: !1, }; (f.isOpaque = function () { return !0; }), (f.isTransparent = function () { return !1; }), (f.drawTransparent = function (t) {}); var v = [0, 0, 0], y = [0, 0, 0], x = [0, 0, 0]; (f.draw = function (t) { t = t || g; for ( var e = this.gl, r = t.model || l, n = t.view || l, i = t.projection || l, a = this.bounds, s = t._ortho || !1, u = o(r, n, i, a, s), f = u.cubeEdges, h = u.axis, b = n[12], _ = n[13], w = n[14], T = n[15], k = ((s ? 2 : 1) * this.pixelRatio * (i[3] * b + i[7] * _ + i[11] * w + i[15] * T)) / e.drawingBufferHeight, A = 0; A < 3; ++A ) (this.lastCubeProps.cubeEdges[A] = f[A]), (this.lastCubeProps.axis[A] = h[A]); var M = p; for (A = 0; A < 3; ++A) d(p[A], A, this.bounds, f, h); e = this.gl; var S, E = m; for (A = 0; A < 3; ++A) this.backgroundEnable[A] ? (E[A] = h[A]) : (E[A] = 0); this._background.draw( r, n, i, a, E, this.backgroundColor, ), this._lines.bind(r, n, i, this); for (A = 0; A < 3; ++A) { var L = [0, 0, 0]; h[A] > 0 ? (L[A] = a[1][A]) : (L[A] = a[0][A]); for (var C = 0; C < 2; ++C) { var P = (A + 1 + C) % 3, I = (A + 1 + (1 ^ C)) % 3; this.gridEnable[P] && this._lines.drawGrid( P, I, this.bounds, L, this.gridColor[P], this.gridWidth[P] * this.pixelRatio, ); } for (C = 0; C < 2; ++C) { (P = (A + 1 + C) % 3), (I = (A + 1 + (1 ^ C)) % 3); this.zeroEnable[I] && Math.min(a[0][I], a[1][I]) <= 0 && Math.max(a[0][I], a[1][I]) >= 0 && this._lines.drawZero( P, I, this.bounds, L, this.zeroLineColor[I], this.zeroLineWidth[I] * this.pixelRatio, ); } } for (A = 0; A < 3; ++A) { this.lineEnable[A] && this._lines.drawAxisLine( A, this.bounds, M[A].primalOffset, this.lineColor[A], this.lineWidth[A] * this.pixelRatio, ), this.lineMirror[A] && this._lines.drawAxisLine( A, this.bounds, M[A].mirrorOffset, this.lineColor[A], this.lineWidth[A] * this.pixelRatio, ); var O = c(v, M[A].primalMinor), z = c(y, M[A].mirrorMinor), D = this.lineTickLength; for (C = 0; C < 3; ++C) { var R = k / r[5 * C]; (O[C] *= D[C] * R), (z[C] *= D[C] * R); } this.lineTickEnable[A] && this._lines.drawAxisTicks( A, M[A].primalOffset, O, this.lineTickColor[A], this.lineTickWidth[A] * this.pixelRatio, ), this.lineTickMirror[A] && this._lines.drawAxisTicks( A, M[A].mirrorOffset, z, this.lineTickColor[A], this.lineTickWidth[A] * this.pixelRatio, ); } this._lines.unbind(), this._text.bind(r, n, i, this.pixelRatio); var F, B; function N(t) { (B = [0, 0, 0])[t] = 1; } function j(t, e, r) { var n = (t + 1) % 3, i = (t + 2) % 3, a = e[n], o = e[i], s = r[n], l = r[i]; (a > 0 && l > 0) || (a > 0 && l < 0) || (a < 0 && l > 0) || (a < 0 && l < 0) ? N(n) : ((o > 0 && s > 0) || (o > 0 && s < 0) || (o < 0 && s > 0) || (o < 0 && s < 0)) && N(i); } for (A = 0; A < 3; ++A) { var U = M[A].primalMinor, V = M[A].mirrorMinor, H = c(x, M[A].primalOffset); for (C = 0; C < 3; ++C) this.lineTickEnable[A] && (H[C] += (k * U[C] * Math.max( this.lineTickLength[C], 0, )) / r[5 * C]); var q = [0, 0, 0]; if (((q[A] = 1), this.tickEnable[A])) { -3600 === this.tickAngle[A] ? ((this.tickAngle[A] = 0), (this.tickAlign[A] = "auto")) : (this.tickAlign[A] = -1), (F = 1), "auto" === (S = [this.tickAlign[A], 0.5, F])[0] ? (S[0] = 0) : (S[0] = parseInt("" + S[0])), (B = [0, 0, 0]), j(A, U, V); for (C = 0; C < 3; ++C) H[C] += (k * U[C] * this.tickPad[C]) / r[5 * C]; this._text.drawTicks( A, this.tickSize[A], this.tickAngle[A], H, this.tickColor[A], q, B, S, ); } if (this.labelEnable[A]) { (F = 0), (B = [0, 0, 0]), this.labels[A].length > 4 && (N(A), (F = 1)), "auto" === (S = [this.labelAlign[A], 0.5, F])[0] ? (S[0] = 0) : (S[0] = parseInt("" + S[0])); for (C = 0; C < 3; ++C) H[C] += (k * U[C] * this.labelPad[C]) / r[5 * C]; (H[A] += 0.5 * (a[0][A] + a[1][A])), this._text.drawLabel( A, this.labelSize[A], this.labelAngle[A], H, this.labelColor[A], [0, 0, 0], B, S, ); } } this._text.unbind(); }), (f.dispose = function () { this._text.dispose(), this._lines.dispose(), this._background.dispose(), (this._lines = null), (this._text = null), (this._background = null), (this.gl = null); }); }, { "./lib/background.js": 71, "./lib/cube.js": 72, "./lib/lines.js": 73, "./lib/text.js": 75, "./lib/ticks.js": 76, }, ], 71: [ function (t, e, r) { "use strict"; e.exports = function (t) { for ( var e = [], r = [], s = 0, l = 0; l < 3; ++l ) for ( var c = (l + 1) % 3, u = (l + 2) % 3, f = [0, 0, 0], h = [0, 0, 0], p = -1; p <= 1; p += 2 ) { r.push( s, s + 2, s + 1, s + 1, s + 2, s + 3, ), (f[l] = p), (h[l] = p); for (var d = -1; d <= 1; d += 2) { f[c] = d; for (var m = -1; m <= 1; m += 2) (f[u] = m), e.push( f[0], f[1], f[2], h[0], h[1], h[2], ), (s += 1); } var g = c; (c = u), (u = g); } var v = n(t, new Float32Array(e)), y = n( t, new Uint16Array(r), t.ELEMENT_ARRAY_BUFFER, ), x = i( t, [ { buffer: v, type: t.FLOAT, size: 3, offset: 0, stride: 24, }, { buffer: v, type: t.FLOAT, size: 3, offset: 12, stride: 24, }, ], y, ), b = a(t); return ( (b.attributes.position.location = 0), (b.attributes.normal.location = 1), new o(t, v, x, b) ); }; var n = t("gl-buffer"), i = t("gl-vao"), a = t("./shaders").bg; function o(t, e, r, n) { (this.gl = t), (this.buffer = e), (this.vao = r), (this.shader = n); } var s = o.prototype; (s.draw = function (t, e, r, n, i, a) { for (var o = !1, s = 0; s < 3; ++s) o = o || i[s]; if (o) { var l = this.gl; l.enable(l.POLYGON_OFFSET_FILL), l.polygonOffset(1, 2), this.shader.bind(), (this.shader.uniforms = { model: t, view: e, projection: r, bounds: n, enable: i, colors: a, }), this.vao.bind(), this.vao.draw(this.gl.TRIANGLES, 36), this.vao.unbind(), l.disable(l.POLYGON_OFFSET_FILL); } }), (s.dispose = function () { this.vao.dispose(), this.buffer.dispose(), this.shader.dispose(); }); }, { "./shaders": 74, "gl-buffer": 78, "gl-vao": 150, }, ], 72: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, a, p) { i(s, e, t), i(s, r, s); for (var y = 0, x = 0; x < 2; ++x) { u[2] = a[x][2]; for (var b = 0; b < 2; ++b) { u[1] = a[b][1]; for (var _ = 0; _ < 2; ++_) (u[0] = a[_][0]), h(l[y], u, s), (y += 1); } } var w = -1; for (x = 0; x < 8; ++x) { for (var T = l[x][3], k = 0; k < 3; ++k) c[x][k] = l[x][k] / T; p && (c[x][2] *= -1), T < 0 && (w < 0 || c[x][2] < c[w][2]) && (w = x); } if (w < 0) { w = 0; for (var A = 0; A < 3; ++A) { for ( var M = (A + 2) % 3, S = (A + 1) % 3, E = -1, L = -1, C = 0; C < 2; ++C ) { var P = (O = C << A) + (C << M) + ((1 - C) << S), I = O + ((1 - C) << M) + (C << S); o(c[O], c[P], c[I], f) < 0 || (C ? (E = 1) : (L = 1)); } if (E < 0 || L < 0) L > E && (w |= 1 << A); else { for (C = 0; C < 2; ++C) { (P = (O = C << A) + (C << M) + ((1 - C) << S)), (I = O + ((1 - C) << M) + (C << S)); var O, z = d([ l[O], l[P], l[I], l[O + (1 << M) + (1 << S)], ]); C ? (E = z) : (L = z); } L > E && (w |= 1 << A); } } } var D = 7 ^ w, R = -1; for (x = 0; x < 8; ++x) x !== w && x !== D && (R < 0 || c[R][1] > c[x][1]) && (R = x); var F = -1; for (x = 0; x < 3; ++x) { if ((N = R ^ (1 << x)) !== w && N !== D) F < 0 && (F = N), (S = c[N])[0] < c[F][0] && (F = N); } var B = -1; for (x = 0; x < 3; ++x) { var N; if ( (N = R ^ (1 << x)) !== w && N !== D && N !== F ) B < 0 && (B = N), (S = c[N])[0] > c[B][0] && (B = N); } var j = m; (j[0] = j[1] = j[2] = 0), (j[n.log2(F ^ R)] = R & F), (j[n.log2(R ^ B)] = R & B); var U = 7 ^ B; U === w || U === D ? ((U = 7 ^ F), (j[n.log2(B ^ U)] = U & B)) : (j[n.log2(F ^ U)] = U & F); var V = g, H = w; for (A = 0; A < 3; ++A) V[A] = H & (1 << A) ? -1 : 1; return v; }; var n = t("bit-twiddle"), i = t("gl-mat4/multiply"), a = t("split-polygon"), o = t("robust-orientation"), s = new Array(16), l = new Array(8), c = new Array(8), u = new Array(3), f = [0, 0, 0]; function h(t, e, r) { for (var n = 0; n < 4; ++n) { t[n] = r[12 + n]; for (var i = 0; i < 3; ++i) t[n] += e[i] * r[4 * i + n]; } } !(function () { for (var t = 0; t < 8; ++t) (l[t] = [1, 1, 1, 1]), (c[t] = [1, 1, 1]); })(); var p = [ [0, 0, 1, 0, 0], [0, 0, -1, 1, 0], [0, -1, 0, 1, 0], [0, 1, 0, 1, 0], [-1, 0, 0, 1, 0], [1, 0, 0, 1, 0], ]; function d(t) { for (var e = 0; e < p.length; ++e) if ((t = a.positive(t, p[e])).length < 3) return 0; var r = t[0], n = r[0] / r[3], i = r[1] / r[3], o = 0; for (e = 1; e + 1 < t.length; ++e) { var s = t[e], l = t[e + 1], c = s[0] / s[3] - n, u = s[1] / s[3] - i, f = l[0] / l[3] - n, h = l[1] / l[3] - i; o += Math.abs(c * h - u * f); } return o; } var m = [1, 1, 1], g = [0, 0, 0], v = { cubeEdges: m, axis: g }; }, { "bit-twiddle": 32, "gl-mat4/multiply": 100, "robust-orientation": 284, "split-polygon": 300, }, ], 73: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { var o = [], s = [0, 0, 0], l = [0, 0, 0], c = [0, 0, 0], u = [0, 0, 0]; o.push( 0, 0, 1, 0, 1, 1, 0, 0, -1, 0, 0, -1, 0, 1, 1, 0, 1, -1, ); for (var f = 0; f < 3; ++f) { for ( var h = (o.length / 3) | 0, d = 0; d < r[f].length; ++d ) { var m = +r[f][d].x; o.push( m, 0, 1, m, 1, 1, m, 0, -1, m, 0, -1, m, 1, 1, m, 1, -1, ); } var g = (o.length / 3) | 0; (s[f] = h), (l[f] = g - h); h = (o.length / 3) | 0; for (var v = 0; v < r[f].length; ++v) { m = +r[f][v].x; o.push( m, 0, 1, m, 1, 1, m, 0, -1, m, 0, -1, m, 1, 1, m, 1, -1, ); } g = (o.length / 3) | 0; (c[f] = h), (u[f] = g - h); } var y = n(t, new Float32Array(o)), x = i(t, [ { buffer: y, type: t.FLOAT, size: 3, stride: 0, offset: 0, }, ]), b = a(t); return ( (b.attributes.position.location = 0), new p(t, y, x, b, l, s, u, c) ); }; var n = t("gl-buffer"), i = t("gl-vao"), a = t("./shaders").line, o = [0, 0, 0], s = [0, 0, 0], l = [0, 0, 0], c = [0, 0, 0], u = [1, 1]; function f(t) { return (t[0] = t[1] = t[2] = 0), t; } function h(t, e) { return ( (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), t ); } function p(t, e, r, n, i, a, o, s) { (this.gl = t), (this.vertBuffer = e), (this.vao = r), (this.shader = n), (this.tickCount = i), (this.tickOffset = a), (this.gridCount = o), (this.gridOffset = s); } var d = p.prototype; (d.bind = function (t, e, r) { this.shader.bind(), (this.shader.uniforms.model = t), (this.shader.uniforms.view = e), (this.shader.uniforms.projection = r), (u[0] = this.gl.drawingBufferWidth), (u[1] = this.gl.drawingBufferHeight), (this.shader.uniforms.screenShape = u), this.vao.bind(); }), (d.unbind = function () { this.vao.unbind(); }), (d.drawAxisLine = function (t, e, r, n, i) { var a = f(s); (this.shader.uniforms.majorAxis = s), (a[t] = e[1][t] - e[0][t]), (this.shader.uniforms.minorAxis = a); var o, u = h(c, r); (u[t] += e[0][t]), (this.shader.uniforms.offset = u), (this.shader.uniforms.lineWidth = i), (this.shader.uniforms.color = n), ((o = f(l))[(t + 2) % 3] = 1), (this.shader.uniforms.screenAxis = o), this.vao.draw(this.gl.TRIANGLES, 6), ((o = f(l))[(t + 1) % 3] = 1), (this.shader.uniforms.screenAxis = o), this.vao.draw(this.gl.TRIANGLES, 6); }), (d.drawAxisTicks = function (t, e, r, n, i) { if (this.tickCount[t]) { var a = f(o); (a[t] = 1), (this.shader.uniforms.majorAxis = a), (this.shader.uniforms.offset = e), (this.shader.uniforms.minorAxis = r), (this.shader.uniforms.color = n), (this.shader.uniforms.lineWidth = i); var s = f(l); (s[t] = 1), (this.shader.uniforms.screenAxis = s), this.vao.draw( this.gl.TRIANGLES, this.tickCount[t], this.tickOffset[t], ); } }), (d.drawGrid = function (t, e, r, n, i, a) { if (this.gridCount[t]) { var u = f(s); (u[e] = r[1][e] - r[0][e]), (this.shader.uniforms.minorAxis = u); var p = h(c, n); (p[e] += r[0][e]), (this.shader.uniforms.offset = p); var d = f(o); (d[t] = 1), (this.shader.uniforms.majorAxis = d); var m = f(l); (m[t] = 1), (this.shader.uniforms.screenAxis = m), (this.shader.uniforms.lineWidth = a), (this.shader.uniforms.color = i), this.vao.draw( this.gl.TRIANGLES, this.gridCount[t], this.gridOffset[t], ); } }), (d.drawZero = function (t, e, r, n, i, a) { var o = f(s); (this.shader.uniforms.majorAxis = o), (o[t] = r[1][t] - r[0][t]), (this.shader.uniforms.minorAxis = o); var u = h(c, n); (u[t] += r[0][t]), (this.shader.uniforms.offset = u); var p = f(l); (p[e] = 1), (this.shader.uniforms.screenAxis = p), (this.shader.uniforms.lineWidth = a), (this.shader.uniforms.color = i), this.vao.draw(this.gl.TRIANGLES, 6); }), (d.dispose = function () { this.vao.dispose(), this.vertBuffer.dispose(), this.shader.dispose(); }); }, { "./shaders": 74, "gl-buffer": 78, "gl-vao": 150, }, ], 74: [ function (t, e, r) { "use strict"; var n = t("glslify"), i = t("gl-shader"), a = n([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\n\nuniform mat4 model, view, projection;\nuniform vec3 offset, majorAxis, minorAxis, screenAxis;\nuniform float lineWidth;\nuniform vec2 screenShape;\n\nvec3 project(vec3 p) {\n vec4 pp = projection * view * model * vec4(p, 1.0);\n return pp.xyz / max(pp.w, 0.0001);\n}\n\nvoid main() {\n vec3 major = position.x * majorAxis;\n vec3 minor = position.y * minorAxis;\n\n vec3 vPosition = major + minor + offset;\n vec3 pPosition = project(vPosition);\n vec3 offset = project(vPosition + screenAxis * position.z);\n\n vec2 screen = normalize((offset - pPosition).xy * screenShape) / screenShape;\n\n gl_Position = vec4(pPosition + vec3(0.5 * screen * lineWidth, 0), 1.0);\n}\n", ]), o = n([ "precision highp float;\n#define GLSLIFY 1\n\nuniform vec4 color;\nvoid main() {\n gl_FragColor = color;\n}", ]); r.line = function (t) { return i(t, a, o, null, [ { name: "position", type: "vec3" }, ]); }; var s = n([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\n\nuniform mat4 model, view, projection;\nuniform vec3 offset, axis, alignDir, alignOpt;\nuniform float scale, angle, pixelScale;\nuniform vec2 resolution;\n\nvec3 project(vec3 p) {\n vec4 pp = projection * view * model * vec4(p, 1.0);\n return pp.xyz / max(pp.w, 0.0001);\n}\n\nfloat computeViewAngle(vec3 a, vec3 b) {\n vec3 A = project(a);\n vec3 B = project(b);\n\n return atan(\n (B.y - A.y) * resolution.y,\n (B.x - A.x) * resolution.x\n );\n}\n\nconst float PI = 3.141592;\nconst float TWO_PI = 2.0 * PI;\nconst float HALF_PI = 0.5 * PI;\nconst float ONE_AND_HALF_PI = 1.5 * PI;\n\nint option = int(floor(alignOpt.x + 0.001));\nfloat hv_ratio = alignOpt.y;\nbool enableAlign = (alignOpt.z != 0.0);\n\nfloat mod_angle(float a) {\n return mod(a, PI);\n}\n\nfloat positive_angle(float a) {\n return mod_angle((a < 0.0) ?\n a + TWO_PI :\n a\n );\n}\n\nfloat look_upwards(float a) {\n float b = positive_angle(a);\n return ((b > HALF_PI) && (b <= ONE_AND_HALF_PI)) ?\n b - PI :\n b;\n}\n\nfloat look_horizontal_or_vertical(float a, float ratio) {\n // ratio controls the ratio between being horizontal to (vertical + horizontal)\n // if ratio is set to 0.5 then it is 50%, 50%.\n // when using a higher ratio e.g. 0.75 the result would\n // likely be more horizontal than vertical.\n\n float b = positive_angle(a);\n\n return\n (b < ( ratio) * HALF_PI) ? 0.0 :\n (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI :\n (b < (2.0 + ratio) * HALF_PI) ? 0.0 :\n (b < (4.0 - ratio) * HALF_PI) ? HALF_PI :\n 0.0;\n}\n\nfloat roundTo(float a, float b) {\n return float(b * floor((a + 0.5 * b) / b));\n}\n\nfloat look_round_n_directions(float a, int n) {\n float b = positive_angle(a);\n float div = TWO_PI / float(n);\n float c = roundTo(b, div);\n return look_upwards(c);\n}\n\nfloat applyAlignOption(float rawAngle, float delta) {\n return\n (option > 2) ? look_round_n_directions(rawAngle + delta, option) : // option 3-n: round to n directions\n (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical\n (option == 1) ? rawAngle + delta : // use free angle, and flip to align with one direction of the axis\n (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards\n (option ==-1) ? 0.0 : // useful for backward compatibility, all texts remains horizontal\n rawAngle; // otherwise return back raw input angle\n}\n\nbool isAxisTitle = (axis.x == 0.0) &&\n (axis.y == 0.0) &&\n (axis.z == 0.0);\n\nvoid main() {\n //Compute world offset\n float axisDistance = position.z;\n vec3 dataPosition = axisDistance * axis + offset;\n\n float beta = angle; // i.e. user defined attributes for each tick\n\n float axisAngle;\n float clipAngle;\n float flip;\n\n if (enableAlign) {\n axisAngle = (isAxisTitle) ? HALF_PI :\n computeViewAngle(dataPosition, dataPosition + axis);\n clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir);\n\n axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0;\n clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0;\n\n flip = (dot(vec2(cos(axisAngle), sin(axisAngle)),\n vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0;\n\n beta += applyAlignOption(clipAngle, flip * PI);\n }\n\n //Compute plane offset\n vec2 planeCoord = position.xy * pixelScale;\n\n mat2 planeXform = scale * mat2(\n cos(beta), sin(beta),\n -sin(beta), cos(beta)\n );\n\n vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution;\n\n //Compute clip position\n vec3 clipPosition = project(dataPosition);\n\n //Apply text offset in clip coordinates\n clipPosition += vec3(viewOffset, 0.0);\n\n //Done\n gl_Position = vec4(clipPosition, 1.0);\n}", ]), l = n([ "precision highp float;\n#define GLSLIFY 1\n\nuniform vec4 color;\nvoid main() {\n gl_FragColor = color;\n}", ]); r.text = function (t) { return i(t, s, l, null, [ { name: "position", type: "vec3" }, ]); }; var c = n([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute vec3 normal;\n\nuniform mat4 model, view, projection;\nuniform vec3 enable;\nuniform vec3 bounds[2];\n\nvarying vec3 colorChannel;\n\nvoid main() {\n\n vec3 signAxis = sign(bounds[1] - bounds[0]);\n\n vec3 realNormal = signAxis * normal;\n\n if(dot(realNormal, enable) > 0.0) {\n vec3 minRange = min(bounds[0], bounds[1]);\n vec3 maxRange = max(bounds[0], bounds[1]);\n vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0));\n gl_Position = projection * view * model * vec4(nPosition, 1.0);\n } else {\n gl_Position = vec4(0,0,0,0);\n }\n\n colorChannel = abs(realNormal);\n}", ]), u = n([ "precision highp float;\n#define GLSLIFY 1\n\nuniform vec4 colors[3];\n\nvarying vec3 colorChannel;\n\nvoid main() {\n gl_FragColor = colorChannel.x * colors[0] +\n colorChannel.y * colors[1] +\n colorChannel.z * colors[2];\n}", ]); r.bg = function (t) { return i(t, c, u, null, [ { name: "position", type: "vec3" }, { name: "normal", type: "vec3" }, ]); }; }, { "gl-shader": 132, glslify: 231 }, ], 75: [ function (t, e, r) { (function (r) { (function () { "use strict"; e.exports = function (t, e, r, a, s, l) { var u = n(t), f = i(t, [{ buffer: u, size: 3 }]), h = o(t); h.attributes.position.location = 0; var p = new c(t, h, u, f); return p.update(e, r, a, s, l), p; }; var n = t("gl-buffer"), i = t("gl-vao"), a = t("vectorize-text"), o = t("./shaders").text, s = window || r.global || {}, l = s.__TEXT_CACHE || {}; s.__TEXT_CACHE = {}; function c(t, e, r, n) { (this.gl = t), (this.shader = e), (this.buffer = r), (this.vao = n), (this.tickOffset = this.tickCount = this.labelOffset = this.labelCount = null); } var u = c.prototype, f = [0, 0]; (u.bind = function (t, e, r, n) { this.vao.bind(), this.shader.bind(); var i = this.shader.uniforms; (i.model = t), (i.view = e), (i.projection = r), (i.pixelScale = n), (f[0] = this.gl.drawingBufferWidth), (f[1] = this.gl.drawingBufferHeight), (this.shader.uniforms.resolution = f); }), (u.unbind = function () { this.vao.unbind(); }), (u.update = function (t, e, r, n, i) { var o = []; function s(t, e, r, n, i, s) { var c = l[r]; c || (c = l[r] = {}); var u = c[e]; u || (u = c[e] = (function (t, e) { try { return a(t, e); } catch (e) { return ( console.warn( 'error vectorizing text:"' + t + '" error:', e, ), { cells: [], positions: [] } ); } })(e, { triangles: !0, font: r, textAlign: "center", textBaseline: "middle", lineSpacing: i, styletags: s, })); for ( var f = (n || 12) / 12, h = u.positions, p = u.cells, d = 0, m = p.length; d < m; ++d ) for ( var g = p[d], v = 2; v >= 0; --v ) { var y = h[g[v]]; o.push(f * y[0], -f * y[1], t); } } for ( var c = [0, 0, 0], u = [0, 0, 0], f = [0, 0, 0], h = [0, 0, 0], p = { breaklines: !0, bolds: !0, italics: !0, subscripts: !0, superscripts: !0, }, d = 0; d < 3; ++d ) { (f[d] = (o.length / 3) | 0), s( 0.5 * (t[0][d] + t[1][d]), e[d], r[d], 12, 1.25, p, ), (h[d] = ((o.length / 3) | 0) - f[d]), (c[d] = (o.length / 3) | 0); for (var m = 0; m < n[d].length; ++m) n[d][m].text && s( n[d][m].x, n[d][m].text, n[d][m].font || i, n[d][m].fontSize || 12, 1.25, p, ); u[d] = ((o.length / 3) | 0) - c[d]; } this.buffer.update(o), (this.tickOffset = c), (this.tickCount = u), (this.labelOffset = f), (this.labelCount = h); }), (u.drawTicks = function ( t, e, r, n, i, a, o, s, ) { this.tickCount[t] && ((this.shader.uniforms.axis = a), (this.shader.uniforms.color = i), (this.shader.uniforms.angle = r), (this.shader.uniforms.scale = e), (this.shader.uniforms.offset = n), (this.shader.uniforms.alignDir = o), (this.shader.uniforms.alignOpt = s), this.vao.draw( this.gl.TRIANGLES, this.tickCount[t], this.tickOffset[t], )); }), (u.drawLabel = function ( t, e, r, n, i, a, o, s, ) { this.labelCount[t] && ((this.shader.uniforms.axis = a), (this.shader.uniforms.color = i), (this.shader.uniforms.angle = r), (this.shader.uniforms.scale = e), (this.shader.uniforms.offset = n), (this.shader.uniforms.alignDir = o), (this.shader.uniforms.alignOpt = s), this.vao.draw( this.gl.TRIANGLES, this.labelCount[t], this.labelOffset[t], )); }), (u.dispose = function () { this.shader.dispose(), this.vao.dispose(), this.buffer.dispose(); }); }).call(this); }).call(this, t("_process")); }, { "./shaders": 74, _process: 5, "gl-buffer": 78, "gl-vao": 150, "vectorize-text": 311, }, ], 76: [ function (t, e, r) { "use strict"; function n(t, e) { var r = t + "", n = r.indexOf("."), i = 0; n >= 0 && (i = r.length - n - 1); var a = Math.pow(10, i), o = Math.round(t * e * a), s = o + ""; if (s.indexOf("e") >= 0) return s; var l = o / a, c = o % a; o < 0 ? ((l = 0 | -Math.ceil(l)), (c = 0 | -c)) : ((l = 0 | Math.floor(l)), (c |= 0)); var u = "" + l; if ((o < 0 && (u = "-" + u), i)) { for (var f = "" + c; f.length < i; ) f = "0" + f; return u + "." + f; } return u; } (r.create = function (t, e) { for (var r = [], i = 0; i < 3; ++i) { for ( var a = [], o = (t[0][i], t[1][i], 0); o * e[i] <= t[1][i]; ++o ) a.push({ x: o * e[i], text: n(e[i], o) }); for (o = -1; o * e[i] >= t[0][i]; --o) a.push({ x: o * e[i], text: n(e[i], o) }); r.push(a); } return r; }), (r.equal = function (t, e) { for (var r = 0; r < 3; ++r) { if (t[r].length !== e[r].length) return !1; for (var n = 0; n < t[r].length; ++n) { var i = t[r][n], a = e[r][n]; if ( i.x !== a.x || i.text !== a.text || i.font !== a.font || i.fontColor !== a.fontColor || i.fontSize !== a.fontSize || i.dx !== a.dx || i.dy !== a.dy ) return !1; } } return !0; }); }, {}, ], 77: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, l, f) { var h = e.model || c, p = e.view || c, v = e.projection || c, y = e._ortho || !1, x = t.bounds, b = (f = f || a(h, p, v, x, y)).axis; o(u, p, h), o(u, v, u); for (var _ = m, w = 0; w < 3; ++w) (_[w].lo = 1 / 0), (_[w].hi = -1 / 0), (_[w].pixelsPerDataUnit = 1 / 0); var T = n(s(u, u)); s(u, u); for (var k = 0; k < 3; ++k) { var A = (k + 1) % 3, M = (k + 2) % 3, S = g; t: for (w = 0; w < 2; ++w) { var E = []; if (b[k] < 0 != !!w) { S[k] = x[w][k]; for (var L = 0; L < 2; ++L) { S[A] = x[L ^ w][A]; for (var C = 0; C < 2; ++C) (S[M] = x[C ^ L ^ w][M]), E.push(S.slice()); } var P = y ? 5 : 4; for (L = P; L === P; ++L) { if (0 === E.length) continue t; E = i.positive(E, T[L]); } for (L = 0; L < E.length; ++L) { M = E[L]; var I = d(g, u, M, r, l); for (C = 0; C < 3; ++C) (_[C].lo = Math.min(_[C].lo, M[C])), (_[C].hi = Math.max( _[C].hi, M[C], )), C !== k && (_[C].pixelsPerDataUnit = Math.min( _[C].pixelsPerDataUnit, Math.abs(I[C]), )); } } } } return _; }; var n = t("extract-frustum-planes"), i = t("split-polygon"), a = t("./lib/cube.js"), o = t("gl-mat4/multiply"), s = t("gl-mat4/transpose"), l = t("gl-vec4/transformMat4"), c = new Float32Array([ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ]), u = new Float32Array(16); function f(t, e, r) { (this.lo = t), (this.hi = e), (this.pixelsPerDataUnit = r); } var h = [0, 0, 0, 1], p = [0, 0, 0, 1]; function d(t, e, r, n, i) { for (var a = 0; a < 3; ++a) { for (var o = h, s = p, c = 0; c < 3; ++c) s[c] = o[c] = r[c]; (s[3] = o[3] = 1), (s[a] += 1), l(s, s, e), s[3] < 0 && (t[a] = 1 / 0), (o[a] -= 1), l(o, o, e), o[3] < 0 && (t[a] = 1 / 0); var u = (o[0] / o[3] - s[0] / s[3]) * n, f = (o[1] / o[3] - s[1] / s[3]) * i; t[a] = 0.25 * Math.sqrt(u * u + f * f); } return t; } var m = [ new f(1 / 0, -1 / 0, 1 / 0), new f(1 / 0, -1 / 0, 1 / 0), new f(1 / 0, -1 / 0, 1 / 0), ], g = [0, 0, 0]; }, { "./lib/cube.js": 72, "extract-frustum-planes": 67, "gl-mat4/multiply": 100, "gl-mat4/transpose": 109, "gl-vec4/transformMat4": 221, "split-polygon": 300, }, ], 78: [ function (t, e, r) { "use strict"; var n = t("typedarray-pool"), i = t("ndarray-ops"), a = t("ndarray"), o = [ "uint8", "uint8_clamped", "uint16", "uint32", "int8", "int16", "int32", "float32", ]; function s(t, e, r, n, i) { (this.gl = t), (this.type = e), (this.handle = r), (this.length = n), (this.usage = i); } var l = s.prototype; function c(t, e, r, n, i, a) { var o = i.length * i.BYTES_PER_ELEMENT; if (a < 0) return t.bufferData(e, i, n), o; if (o + a > r) throw new Error( "gl-buffer: If resizing buffer, must not specify offset", ); return t.bufferSubData(e, a, i), r; } function u(t, e) { for ( var r = n.malloc(t.length, e), i = t.length, a = 0; a < i; ++a ) r[a] = t[a]; return r; } (l.bind = function () { this.gl.bindBuffer(this.type, this.handle); }), (l.unbind = function () { this.gl.bindBuffer(this.type, null); }), (l.dispose = function () { this.gl.deleteBuffer(this.handle); }), (l.update = function (t, e) { if ( ("number" != typeof e && (e = -1), this.bind(), "object" == typeof t && void 0 !== t.shape) ) { var r = t.dtype; if ( (o.indexOf(r) < 0 && (r = "float32"), this.type === this.gl.ELEMENT_ARRAY_BUFFER) ) r = gl.getExtension( "OES_element_index_uint", ) && "uint16" !== r ? "uint32" : "uint16"; if ( r === t.dtype && (function (t, e) { for ( var r = 1, n = e.length - 1; n >= 0; --n ) { if (e[n] !== r) return !1; r *= t[n]; } return !0; })(t.shape, t.stride) ) 0 === t.offset && t.data.length === t.shape[0] ? (this.length = c( this.gl, this.type, this.length, this.usage, t.data, e, )) : (this.length = c( this.gl, this.type, this.length, this.usage, t.data.subarray( t.offset, t.shape[0], ), e, )); else { var s = n.malloc(t.size, r), l = a(s, t.shape); i.assign(l, t), (this.length = c( this.gl, this.type, this.length, this.usage, e < 0 ? s : s.subarray(0, t.size), e, )), n.free(s); } } else if (Array.isArray(t)) { var f; (f = this.type === this.gl.ELEMENT_ARRAY_BUFFER ? u(t, "uint16") : u(t, "float32")), (this.length = c( this.gl, this.type, this.length, this.usage, e < 0 ? f : f.subarray(0, t.length), e, )), n.free(f); } else if ( "object" == typeof t && "number" == typeof t.length ) this.length = c( this.gl, this.type, this.length, this.usage, t, e, ); else { if ("number" != typeof t && void 0 !== t) throw new Error( "gl-buffer: Invalid data type", ); if (e >= 0) throw new Error( "gl-buffer: Cannot specify offset when resizing buffer", ); (t |= 0) <= 0 && (t = 1), this.gl.bufferData( this.type, 0 | t, this.usage, ), (this.length = t); } }), (e.exports = function (t, e, r, n) { if ( ((r = r || t.ARRAY_BUFFER), (n = n || t.DYNAMIC_DRAW), r !== t.ARRAY_BUFFER && r !== t.ELEMENT_ARRAY_BUFFER) ) throw new Error( "gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER", ); if ( n !== t.DYNAMIC_DRAW && n !== t.STATIC_DRAW && n !== t.STREAM_DRAW ) throw new Error( "gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW", ); var i = t.createBuffer(), a = new s(t, r, i, 0, n); return a.update(e), a; }); }, { ndarray: 259, "ndarray-ops": 254, "typedarray-pool": 308, }, ], 79: [ function (t, e, r) { "use strict"; var n = t("gl-vec3"); e.exports = function (t, e) { var r = t.positions, i = t.vectors, a = { positions: [], vertexIntensity: [], vertexIntensityBounds: t.vertexIntensityBounds, vectors: [], cells: [], coneOffset: t.coneOffset, colormap: t.colormap, }; if (0 === t.positions.length) return ( e && ((e[0] = [0, 0, 0]), (e[1] = [0, 0, 0])), a ); for ( var o = 0, s = 1 / 0, l = -1 / 0, c = 1 / 0, u = -1 / 0, f = 1 / 0, h = -1 / 0, p = null, d = null, m = [], g = 1 / 0, v = !1, y = 0; y < r.length; y++ ) { var x = r[y]; (s = Math.min(x[0], s)), (l = Math.max(x[0], l)), (c = Math.min(x[1], c)), (u = Math.max(x[1], u)), (f = Math.min(x[2], f)), (h = Math.max(x[2], h)); var b = i[y]; if ( (n.length(b) > o && (o = n.length(b)), y) ) { var _ = (2 * n.distance(p, x)) / (n.length(d) + n.length(b)); _ ? ((g = Math.min(g, _)), (v = !1)) : (v = !0); } v || ((p = x), (d = b)), m.push(b); } var w = [s, c, f], T = [l, u, h]; e && ((e[0] = w), (e[1] = T)), 0 === o && (o = 1); var k = 1 / o; isFinite(g) || (g = 1), (a.vectorScale = g); var A = t.coneSize || 0.5; t.absoluteConeSize && (A = t.absoluteConeSize * k), (a.coneScale = A); y = 0; for (var M = 0; y < r.length; y++) for ( var S = (x = r[y])[0], E = x[1], L = x[2], C = m[y], P = n.length(C) * k, I = 0; I < 8; I++ ) { a.positions.push([S, E, L, M++]), a.positions.push([S, E, L, M++]), a.positions.push([S, E, L, M++]), a.positions.push([S, E, L, M++]), a.positions.push([S, E, L, M++]), a.positions.push([S, E, L, M++]), a.vectors.push(C), a.vectors.push(C), a.vectors.push(C), a.vectors.push(C), a.vectors.push(C), a.vectors.push(C), a.vertexIntensity.push(P, P, P), a.vertexIntensity.push(P, P, P); var O = a.positions.length; a.cells.push( [O - 6, O - 5, O - 4], [O - 3, O - 2, O - 1], ); } return a; }; var i = t("./lib/shaders"); (e.exports.createMesh = t("./create_mesh")), (e.exports.createConeMesh = function (t, r) { return e.exports.createMesh(t, r, { shaders: i, traceType: "cone", }); }); }, { "./create_mesh": 80, "./lib/shaders": 81, "gl-vec3": 169, }, ], 80: [ function (t, e, r) { "use strict"; var n = t("gl-shader"), i = t("gl-buffer"), a = t("gl-vao"), o = t("gl-texture2d"), s = t("gl-mat4/multiply"), l = t("gl-mat4/invert"), c = t("ndarray"), u = t("colormap"), f = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ]; function h(t, e, r, n, i, a, o, s, l, c, u) { (this.gl = t), (this.pixelRatio = 1), (this.cells = []), (this.positions = []), (this.intensity = []), (this.texture = e), (this.dirty = !0), (this.triShader = r), (this.pickShader = n), (this.trianglePositions = i), (this.triangleVectors = a), (this.triangleColors = s), (this.triangleUVs = l), (this.triangleIds = o), (this.triangleVAO = c), (this.triangleCount = 0), (this.pickId = 1), (this.bounds = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ]), (this.clipBounds = [ [-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0], ]), (this.lightPosition = [1e5, 1e5, 0]), (this.ambientLight = 0.8), (this.diffuseLight = 0.8), (this.specularLight = 2), (this.roughness = 0.5), (this.fresnel = 1.5), (this.opacity = 1), (this.traceType = u), (this.tubeScale = 1), (this.coneScale = 2), (this.vectorScale = 1), (this.coneOffset = 0.25), (this._model = f), (this._view = f), (this._projection = f), (this._resolution = [1, 1]); } var p = h.prototype; function d(t, e) { var r = n( t, e.meshShader.vertex, e.meshShader.fragment, null, e.meshShader.attributes, ); return ( (r.attributes.position.location = 0), (r.attributes.color.location = 2), (r.attributes.uv.location = 3), (r.attributes.vector.location = 4), r ); } function m(t, e) { var r = n( t, e.pickShader.vertex, e.pickShader.fragment, null, e.pickShader.attributes, ); return ( (r.attributes.position.location = 0), (r.attributes.id.location = 1), (r.attributes.vector.location = 4), r ); } (p.isOpaque = function () { return this.opacity >= 1; }), (p.isTransparent = function () { return this.opacity < 1; }), (p.pickSlots = 1), (p.setPickBase = function (t) { this.pickId = t; }), (p.update = function (t) { t = t || {}; var e = this.gl; (this.dirty = !0), "lightPosition" in t && (this.lightPosition = t.lightPosition), "opacity" in t && (this.opacity = t.opacity), "ambient" in t && (this.ambientLight = t.ambient), "diffuse" in t && (this.diffuseLight = t.diffuse), "specular" in t && (this.specularLight = t.specular), "roughness" in t && (this.roughness = t.roughness), "fresnel" in t && (this.fresnel = t.fresnel), void 0 !== t.tubeScale && (this.tubeScale = t.tubeScale), void 0 !== t.vectorScale && (this.vectorScale = t.vectorScale), void 0 !== t.coneScale && (this.coneScale = t.coneScale), void 0 !== t.coneOffset && (this.coneOffset = t.coneOffset), t.colormap && ((this.texture.shape = [256, 256]), (this.texture.minFilter = e.LINEAR_MIPMAP_LINEAR), (this.texture.magFilter = e.LINEAR), this.texture.setPixels( (function (t) { for ( var e = u({ colormap: t, nshades: 256, format: "rgba", }), r = new Uint8Array(1024), n = 0; n < 256; ++n ) { for ( var i = e[n], a = 0; a < 3; ++a ) r[4 * n + a] = i[a]; r[4 * n + 3] = 255 * i[3]; } return c( r, [256, 256, 4], [4, 0, 1], ); })(t.colormap), ), this.texture.generateMipmap()); var r = t.cells, n = t.positions, i = t.vectors; if (n && r && i) { var a = [], o = [], s = [], l = [], f = []; (this.cells = r), (this.positions = n), (this.vectors = i); var h = t.meshColor || [1, 1, 1, 1], p = t.vertexIntensity, d = 1 / 0, m = -1 / 0; if (p) if (t.vertexIntensityBounds) (d = +t.vertexIntensityBounds[0]), (m = +t.vertexIntensityBounds[1]); else for (var g = 0; g < p.length; ++g) { var v = p[g]; (d = Math.min(d, v)), (m = Math.max(m, v)); } else for (g = 0; g < n.length; ++g) { v = n[g][2]; (d = Math.min(d, v)), (m = Math.max(m, v)); } (this.intensity = p || (function (t) { for ( var e = t.length, r = new Array(e), n = 0; n < e; ++n ) r[n] = t[n][2]; return r; })(n)), (this.bounds = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ]); for (g = 0; g < n.length; ++g) for (var y = n[g], x = 0; x < 3; ++x) !isNaN(y[x]) && isFinite(y[x]) && ((this.bounds[0][x] = Math.min( this.bounds[0][x], y[x], )), (this.bounds[1][x] = Math.max( this.bounds[1][x], y[x], ))); var b = 0; t: for (g = 0; g < r.length; ++g) { var _ = r[g]; switch (_.length) { case 3: for (x = 0; x < 3; ++x) { y = n[(T = _[x])]; for (var w = 0; w < 3; ++w) if ( isNaN(y[w]) || !isFinite(y[w]) ) continue t; } for (x = 0; x < 3; ++x) { var T; y = n[(T = _[2 - x])]; a.push(y[0], y[1], y[2], y[3]); var k = i[T]; o.push( k[0], k[1], k[2], k[3] || 0, ); var A, M = h; 3 === M.length ? s.push(M[0], M[1], M[2], 1) : s.push( M[0], M[1], M[2], M[3], ), (A = p ? [(p[T] - d) / (m - d), 0] : [(y[2] - d) / (m - d), 0]), l.push(A[0], A[1]), f.push(g); } b += 1; } } (this.triangleCount = b), this.trianglePositions.update(a), this.triangleVectors.update(o), this.triangleColors.update(s), this.triangleUVs.update(l), this.triangleIds.update( new Uint32Array(f), ); } }), (p.drawTransparent = p.draw = function (t) { t = t || {}; for ( var e = this.gl, r = t.model || f, n = t.view || f, i = t.projection || f, a = [ [-1e6, -1e6, -1e6], [1e6, 1e6, 1e6], ], o = 0; o < 3; ++o ) (a[0][o] = Math.max( a[0][o], this.clipBounds[0][o], )), (a[1][o] = Math.min( a[1][o], this.clipBounds[1][o], )); var c = { model: r, view: n, projection: i, inverseModel: f.slice(), clipBounds: a, kambient: this.ambientLight, kdiffuse: this.diffuseLight, kspecular: this.specularLight, roughness: this.roughness, fresnel: this.fresnel, eyePosition: [0, 0, 0], lightPosition: [0, 0, 0], opacity: this.opacity, tubeScale: this.tubeScale, vectorScale: this.vectorScale, coneScale: this.coneScale, coneOffset: this.coneOffset, texture: 0, }; (c.inverseModel = l( c.inverseModel, c.model, )), e.disable(e.CULL_FACE), this.texture.bind(0); var u = new Array(16); s(u, c.view, c.model), s(u, c.projection, u), l(u, u); for (o = 0; o < 3; ++o) c.eyePosition[o] = u[12 + o] / u[15]; var h = u[15]; for (o = 0; o < 3; ++o) h += this.lightPosition[o] * u[4 * o + 3]; for (o = 0; o < 3; ++o) { for ( var p = u[12 + o], d = 0; d < 3; ++d ) p += u[4 * d + o] * this.lightPosition[d]; c.lightPosition[o] = p / h; } if (this.triangleCount > 0) { var m = this.triShader; m.bind(), (m.uniforms = c), this.triangleVAO.bind(), e.drawArrays( e.TRIANGLES, 0, 3 * this.triangleCount, ), this.triangleVAO.unbind(); } }), (p.drawPick = function (t) { t = t || {}; for ( var e = this.gl, r = t.model || f, n = t.view || f, i = t.projection || f, a = [ [-1e6, -1e6, -1e6], [1e6, 1e6, 1e6], ], o = 0; o < 3; ++o ) (a[0][o] = Math.max( a[0][o], this.clipBounds[0][o], )), (a[1][o] = Math.min( a[1][o], this.clipBounds[1][o], )); (this._model = [].slice.call(r)), (this._view = [].slice.call(n)), (this._projection = [].slice.call(i)), (this._resolution = [ e.drawingBufferWidth, e.drawingBufferHeight, ]); var s = { model: r, view: n, projection: i, clipBounds: a, tubeScale: this.tubeScale, vectorScale: this.vectorScale, coneScale: this.coneScale, coneOffset: this.coneOffset, pickId: this.pickId / 255, }, l = this.pickShader; l.bind(), (l.uniforms = s), this.triangleCount > 0 && (this.triangleVAO.bind(), e.drawArrays( e.TRIANGLES, 0, 3 * this.triangleCount, ), this.triangleVAO.unbind()); }), (p.pick = function (t) { if (!t) return null; if (t.id !== this.pickId) return null; var e = t.value[0] + 256 * t.value[1] + 65536 * t.value[2], r = this.cells[e], n = this.positions[r[1]].slice(0, 3), i = { position: n, dataCoordinate: n, index: Math.floor(r[1] / 48), }; return ( "cone" === this.traceType ? (i.index = Math.floor(r[1] / 48)) : "streamtube" === this.traceType && ((i.intensity = this.intensity[r[1]]), (i.velocity = this.vectors[ r[1] ].slice(0, 3)), (i.divergence = this.vectors[r[1]][3]), (i.index = e)), i ); }), (p.dispose = function () { this.texture.dispose(), this.triShader.dispose(), this.pickShader.dispose(), this.triangleVAO.dispose(), this.trianglePositions.dispose(), this.triangleVectors.dispose(), this.triangleColors.dispose(), this.triangleUVs.dispose(), this.triangleIds.dispose(); }), (e.exports = function (t, e, r) { var n = r.shaders; 1 === arguments.length && (t = (e = t).gl); var s = d(t, n), l = m(t, n), u = o( t, c( new Uint8Array([255, 255, 255, 255]), [1, 1, 4], ), ); u.generateMipmap(), (u.minFilter = t.LINEAR_MIPMAP_LINEAR), (u.magFilter = t.LINEAR); var f = i(t), p = i(t), g = i(t), v = i(t), y = i(t), x = a(t, [ { buffer: f, type: t.FLOAT, size: 4 }, { buffer: y, type: t.UNSIGNED_BYTE, size: 4, normalized: !0, }, { buffer: g, type: t.FLOAT, size: 4 }, { buffer: v, type: t.FLOAT, size: 2 }, { buffer: p, type: t.FLOAT, size: 4 }, ]), b = new h( t, u, s, l, f, p, y, g, v, x, r.traceType || "cone", ); return b.update(e), b; }); }, { colormap: 53, "gl-buffer": 78, "gl-mat4/invert": 98, "gl-mat4/multiply": 100, "gl-shader": 132, "gl-texture2d": 146, "gl-vao": 150, ndarray: 259, }, ], 81: [ function (t, e, r) { var n = t("glslify"), i = n([ "precision highp float;\n\nprecision highp float;\n#define GLSLIFY 1\n\nvec3 getOrthogonalVector(vec3 v) {\n // Return up-vector for only-z vector.\n // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\n // From the above if-statement we have ||a|| > 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the cone vertex and normal at the given index.\n//\n// The returned vertex is for a cone with its top at origin and height of 1.0,\n// pointing in the direction of the vector attribute.\n//\n// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.\n// These vertices are used to make up the triangles of the cone by the following:\n// segment + 0 top vertex\n// segment + 1 perimeter vertex a+1\n// segment + 2 perimeter vertex a\n// segment + 3 center base vertex\n// segment + 4 perimeter vertex a\n// segment + 5 perimeter vertex a+1\n// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.\n// To go from index to segment, floor(index / 6)\n// To go from segment to angle, 2*pi * (segment/segmentCount)\n// To go from index to segment index, index - (segment*6)\n//\nvec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) {\n\n const float segmentCount = 8.0;\n\n float index = rawIndex - floor(rawIndex /\n (segmentCount * 6.0)) *\n (segmentCount * 6.0);\n\n float segment = floor(0.001 + index/6.0);\n float segmentIndex = index - (segment*6.0);\n\n normal = -normalize(d);\n\n if (segmentIndex > 2.99 && segmentIndex < 3.01) {\n return mix(vec3(0.0), -d, coneOffset);\n }\n\n float nextAngle = (\n (segmentIndex > 0.99 && segmentIndex < 1.01) ||\n (segmentIndex > 4.99 && segmentIndex < 5.01)\n ) ? 1.0 : 0.0;\n float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);\n\n vec3 v1 = mix(d, vec3(0.0), coneOffset);\n vec3 v2 = v1 - d;\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d)*0.25;\n vec3 y = v * sin(angle) * length(d)*0.25;\n vec3 v3 = v2 + x + y;\n if (segmentIndex < 3.0) {\n vec3 tx = u * sin(angle);\n vec3 ty = v * -cos(angle);\n vec3 tangent = tx + ty;\n normal = normalize(cross(v3 - v1, tangent));\n }\n\n if (segmentIndex == 0.0) {\n return mix(d, vec3(0.0), coneOffset);\n }\n return v3;\n}\n\nattribute vec3 vector;\nattribute vec4 color, position;\nattribute vec2 uv;\n\nuniform float vectorScale, coneScale, coneOffset;\nuniform mat4 model, view, projection, inverseModel;\nuniform vec3 eyePosition, lightPosition;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n // Scale the vector magnitude to stay constant with\n // model & view changes.\n vec3 normal;\n vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal);\n vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n\n //Lighting geometry parameters\n vec4 cameraCoordinate = view * conePosition;\n cameraCoordinate.xyz /= cameraCoordinate.w;\n f_lightDirection = lightPosition - cameraCoordinate.xyz;\n f_eyeDirection = eyePosition - cameraCoordinate.xyz;\n f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\n\n // vec4 m_position = model * vec4(conePosition, 1.0);\n vec4 t_position = view * conePosition;\n gl_Position = projection * t_position;\n\n f_color = color;\n f_data = conePosition.xyz;\n f_position = position.xyz;\n f_uv = uv;\n}\n", ]), a = n([ "#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n#define GLSLIFY 1\n\nfloat beckmannDistribution(float x, float roughness) {\n float NdotH = max(x, 0.0001);\n float cos2Alpha = NdotH * NdotH;\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\n float roughness2 = roughness * roughness;\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\n return exp(tan2Alpha / roughness2) / denom;\n}\n\nfloat cookTorranceSpecular(\n vec3 lightDirection,\n vec3 viewDirection,\n vec3 surfaceNormal,\n float roughness,\n float fresnel) {\n\n float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\n float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\n\n //Half angle vector\n vec3 H = normalize(lightDirection + viewDirection);\n\n //Geometric term\n float NdotH = max(dot(surfaceNormal, H), 0.0);\n float VdotH = max(dot(viewDirection, H), 0.000001);\n float LdotH = max(dot(lightDirection, H), 0.000001);\n float G1 = (2.0 * NdotH * VdotN) / VdotH;\n float G2 = (2.0 * NdotH * LdotN) / LdotH;\n float G = min(1.0, min(G1, G2));\n \n //Distribution term\n float D = beckmannDistribution(NdotH, roughness);\n\n //Fresnel term\n float F = pow(1.0 - VdotN, fresnel);\n\n //Multiply terms and done\n return G * F * D / max(3.14159265 * VdotN, 0.000001);\n}\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\nuniform sampler2D texture;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n vec3 N = normalize(f_normal);\n vec3 L = normalize(f_lightDirection);\n vec3 V = normalize(f_eyeDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n vec4 surfaceColor = f_color * texture2D(texture, f_uv);\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = litColor * opacity;\n}\n", ]), o = n([ "precision highp float;\n\nprecision highp float;\n#define GLSLIFY 1\n\nvec3 getOrthogonalVector(vec3 v) {\n // Return up-vector for only-z vector.\n // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\n // From the above if-statement we have ||a|| > 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the cone vertex and normal at the given index.\n//\n// The returned vertex is for a cone with its top at origin and height of 1.0,\n// pointing in the direction of the vector attribute.\n//\n// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.\n// These vertices are used to make up the triangles of the cone by the following:\n// segment + 0 top vertex\n// segment + 1 perimeter vertex a+1\n// segment + 2 perimeter vertex a\n// segment + 3 center base vertex\n// segment + 4 perimeter vertex a\n// segment + 5 perimeter vertex a+1\n// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.\n// To go from index to segment, floor(index / 6)\n// To go from segment to angle, 2*pi * (segment/segmentCount)\n// To go from index to segment index, index - (segment*6)\n//\nvec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) {\n\n const float segmentCount = 8.0;\n\n float index = rawIndex - floor(rawIndex /\n (segmentCount * 6.0)) *\n (segmentCount * 6.0);\n\n float segment = floor(0.001 + index/6.0);\n float segmentIndex = index - (segment*6.0);\n\n normal = -normalize(d);\n\n if (segmentIndex > 2.99 && segmentIndex < 3.01) {\n return mix(vec3(0.0), -d, coneOffset);\n }\n\n float nextAngle = (\n (segmentIndex > 0.99 && segmentIndex < 1.01) ||\n (segmentIndex > 4.99 && segmentIndex < 5.01)\n ) ? 1.0 : 0.0;\n float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);\n\n vec3 v1 = mix(d, vec3(0.0), coneOffset);\n vec3 v2 = v1 - d;\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d)*0.25;\n vec3 y = v * sin(angle) * length(d)*0.25;\n vec3 v3 = v2 + x + y;\n if (segmentIndex < 3.0) {\n vec3 tx = u * sin(angle);\n vec3 ty = v * -cos(angle);\n vec3 tangent = tx + ty;\n normal = normalize(cross(v3 - v1, tangent));\n }\n\n if (segmentIndex == 0.0) {\n return mix(d, vec3(0.0), coneOffset);\n }\n return v3;\n}\n\nattribute vec4 vector;\nattribute vec4 position;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform float vectorScale, coneScale, coneOffset;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n vec3 normal;\n vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal);\n vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n gl_Position = projection * view * conePosition;\n f_id = id;\n f_position = position.xyz;\n}\n", ]), s = n([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n\n gl_FragColor = vec4(pickId, f_id.xyz);\n}", ]); (r.meshShader = { vertex: i, fragment: a, attributes: [ { name: "position", type: "vec4" }, { name: "color", type: "vec4" }, { name: "uv", type: "vec2" }, { name: "vector", type: "vec3" }, ], }), (r.pickShader = { vertex: o, fragment: s, attributes: [ { name: "position", type: "vec4" }, { name: "id", type: "vec4" }, { name: "vector", type: "vec3" }, ], }); }, { glslify: 231 }, ], 82: [ function (t, e, r) { e.exports = { 0: "NONE", 1: "ONE", 2: "LINE_LOOP", 3: "LINE_STRIP", 4: "TRIANGLES", 5: "TRIANGLE_STRIP", 6: "TRIANGLE_FAN", 256: "DEPTH_BUFFER_BIT", 512: "NEVER", 513: "LESS", 514: "EQUAL", 515: "LEQUAL", 516: "GREATER", 517: "NOTEQUAL", 518: "GEQUAL", 519: "ALWAYS", 768: "SRC_COLOR", 769: "ONE_MINUS_SRC_COLOR", 770: "SRC_ALPHA", 771: "ONE_MINUS_SRC_ALPHA", 772: "DST_ALPHA", 773: "ONE_MINUS_DST_ALPHA", 774: "DST_COLOR", 775: "ONE_MINUS_DST_COLOR", 776: "SRC_ALPHA_SATURATE", 1024: "STENCIL_BUFFER_BIT", 1028: "FRONT", 1029: "BACK", 1032: "FRONT_AND_BACK", 1280: "INVALID_ENUM", 1281: "INVALID_VALUE", 1282: "INVALID_OPERATION", 1285: "OUT_OF_MEMORY", 1286: "INVALID_FRAMEBUFFER_OPERATION", 2304: "CW", 2305: "CCW", 2849: "LINE_WIDTH", 2884: "CULL_FACE", 2885: "CULL_FACE_MODE", 2886: "FRONT_FACE", 2928: "DEPTH_RANGE", 2929: "DEPTH_TEST", 2930: "DEPTH_WRITEMASK", 2931: "DEPTH_CLEAR_VALUE", 2932: "DEPTH_FUNC", 2960: "STENCIL_TEST", 2961: "STENCIL_CLEAR_VALUE", 2962: "STENCIL_FUNC", 2963: "STENCIL_VALUE_MASK", 2964: "STENCIL_FAIL", 2965: "STENCIL_PASS_DEPTH_FAIL", 2966: "STENCIL_PASS_DEPTH_PASS", 2967: "STENCIL_REF", 2968: "STENCIL_WRITEMASK", 2978: "VIEWPORT", 3024: "DITHER", 3042: "BLEND", 3088: "SCISSOR_BOX", 3089: "SCISSOR_TEST", 3106: "COLOR_CLEAR_VALUE", 3107: "COLOR_WRITEMASK", 3317: "UNPACK_ALIGNMENT", 3333: "PACK_ALIGNMENT", 3379: "MAX_TEXTURE_SIZE", 3386: "MAX_VIEWPORT_DIMS", 3408: "SUBPIXEL_BITS", 3410: "RED_BITS", 3411: "GREEN_BITS", 3412: "BLUE_BITS", 3413: "ALPHA_BITS", 3414: "DEPTH_BITS", 3415: "STENCIL_BITS", 3553: "TEXTURE_2D", 4352: "DONT_CARE", 4353: "FASTEST", 4354: "NICEST", 5120: "BYTE", 5121: "UNSIGNED_BYTE", 5122: "SHORT", 5123: "UNSIGNED_SHORT", 5124: "INT", 5125: "UNSIGNED_INT", 5126: "FLOAT", 5386: "INVERT", 5890: "TEXTURE", 6401: "STENCIL_INDEX", 6402: "DEPTH_COMPONENT", 6406: "ALPHA", 6407: "RGB", 6408: "RGBA", 6409: "LUMINANCE", 6410: "LUMINANCE_ALPHA", 7680: "KEEP", 7681: "REPLACE", 7682: "INCR", 7683: "DECR", 7936: "VENDOR", 7937: "RENDERER", 7938: "VERSION", 9728: "NEAREST", 9729: "LINEAR", 9984: "NEAREST_MIPMAP_NEAREST", 9985: "LINEAR_MIPMAP_NEAREST", 9986: "NEAREST_MIPMAP_LINEAR", 9987: "LINEAR_MIPMAP_LINEAR", 10240: "TEXTURE_MAG_FILTER", 10241: "TEXTURE_MIN_FILTER", 10242: "TEXTURE_WRAP_S", 10243: "TEXTURE_WRAP_T", 10497: "REPEAT", 10752: "POLYGON_OFFSET_UNITS", 16384: "COLOR_BUFFER_BIT", 32769: "CONSTANT_COLOR", 32770: "ONE_MINUS_CONSTANT_COLOR", 32771: "CONSTANT_ALPHA", 32772: "ONE_MINUS_CONSTANT_ALPHA", 32773: "BLEND_COLOR", 32774: "FUNC_ADD", 32777: "BLEND_EQUATION_RGB", 32778: "FUNC_SUBTRACT", 32779: "FUNC_REVERSE_SUBTRACT", 32819: "UNSIGNED_SHORT_4_4_4_4", 32820: "UNSIGNED_SHORT_5_5_5_1", 32823: "POLYGON_OFFSET_FILL", 32824: "POLYGON_OFFSET_FACTOR", 32854: "RGBA4", 32855: "RGB5_A1", 32873: "TEXTURE_BINDING_2D", 32926: "SAMPLE_ALPHA_TO_COVERAGE", 32928: "SAMPLE_COVERAGE", 32936: "SAMPLE_BUFFERS", 32937: "SAMPLES", 32938: "SAMPLE_COVERAGE_VALUE", 32939: "SAMPLE_COVERAGE_INVERT", 32968: "BLEND_DST_RGB", 32969: "BLEND_SRC_RGB", 32970: "BLEND_DST_ALPHA", 32971: "BLEND_SRC_ALPHA", 33071: "CLAMP_TO_EDGE", 33170: "GENERATE_MIPMAP_HINT", 33189: "DEPTH_COMPONENT16", 33306: "DEPTH_STENCIL_ATTACHMENT", 33635: "UNSIGNED_SHORT_5_6_5", 33648: "MIRRORED_REPEAT", 33901: "ALIASED_POINT_SIZE_RANGE", 33902: "ALIASED_LINE_WIDTH_RANGE", 33984: "TEXTURE0", 33985: "TEXTURE1", 33986: "TEXTURE2", 33987: "TEXTURE3", 33988: "TEXTURE4", 33989: "TEXTURE5", 33990: "TEXTURE6", 33991: "TEXTURE7", 33992: "TEXTURE8", 33993: "TEXTURE9", 33994: "TEXTURE10", 33995: "TEXTURE11", 33996: "TEXTURE12", 33997: "TEXTURE13", 33998: "TEXTURE14", 33999: "TEXTURE15", 34e3: "TEXTURE16", 34001: "TEXTURE17", 34002: "TEXTURE18", 34003: "TEXTURE19", 34004: "TEXTURE20", 34005: "TEXTURE21", 34006: "TEXTURE22", 34007: "TEXTURE23", 34008: "TEXTURE24", 34009: "TEXTURE25", 34010: "TEXTURE26", 34011: "TEXTURE27", 34012: "TEXTURE28", 34013: "TEXTURE29", 34014: "TEXTURE30", 34015: "TEXTURE31", 34016: "ACTIVE_TEXTURE", 34024: "MAX_RENDERBUFFER_SIZE", 34041: "DEPTH_STENCIL", 34055: "INCR_WRAP", 34056: "DECR_WRAP", 34067: "TEXTURE_CUBE_MAP", 34068: "TEXTURE_BINDING_CUBE_MAP", 34069: "TEXTURE_CUBE_MAP_POSITIVE_X", 34070: "TEXTURE_CUBE_MAP_NEGATIVE_X", 34071: "TEXTURE_CUBE_MAP_POSITIVE_Y", 34072: "TEXTURE_CUBE_MAP_NEGATIVE_Y", 34073: "TEXTURE_CUBE_MAP_POSITIVE_Z", 34074: "TEXTURE_CUBE_MAP_NEGATIVE_Z", 34076: "MAX_CUBE_MAP_TEXTURE_SIZE", 34338: "VERTEX_ATTRIB_ARRAY_ENABLED", 34339: "VERTEX_ATTRIB_ARRAY_SIZE", 34340: "VERTEX_ATTRIB_ARRAY_STRIDE", 34341: "VERTEX_ATTRIB_ARRAY_TYPE", 34342: "CURRENT_VERTEX_ATTRIB", 34373: "VERTEX_ATTRIB_ARRAY_POINTER", 34466: "NUM_COMPRESSED_TEXTURE_FORMATS", 34467: "COMPRESSED_TEXTURE_FORMATS", 34660: "BUFFER_SIZE", 34661: "BUFFER_USAGE", 34816: "STENCIL_BACK_FUNC", 34817: "STENCIL_BACK_FAIL", 34818: "STENCIL_BACK_PASS_DEPTH_FAIL", 34819: "STENCIL_BACK_PASS_DEPTH_PASS", 34877: "BLEND_EQUATION_ALPHA", 34921: "MAX_VERTEX_ATTRIBS", 34922: "VERTEX_ATTRIB_ARRAY_NORMALIZED", 34930: "MAX_TEXTURE_IMAGE_UNITS", 34962: "ARRAY_BUFFER", 34963: "ELEMENT_ARRAY_BUFFER", 34964: "ARRAY_BUFFER_BINDING", 34965: "ELEMENT_ARRAY_BUFFER_BINDING", 34975: "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING", 35040: "STREAM_DRAW", 35044: "STATIC_DRAW", 35048: "DYNAMIC_DRAW", 35632: "FRAGMENT_SHADER", 35633: "VERTEX_SHADER", 35660: "MAX_VERTEX_TEXTURE_IMAGE_UNITS", 35661: "MAX_COMBINED_TEXTURE_IMAGE_UNITS", 35663: "SHADER_TYPE", 35664: "FLOAT_VEC2", 35665: "FLOAT_VEC3", 35666: "FLOAT_VEC4", 35667: "INT_VEC2", 35668: "INT_VEC3", 35669: "INT_VEC4", 35670: "BOOL", 35671: "BOOL_VEC2", 35672: "BOOL_VEC3", 35673: "BOOL_VEC4", 35674: "FLOAT_MAT2", 35675: "FLOAT_MAT3", 35676: "FLOAT_MAT4", 35678: "SAMPLER_2D", 35680: "SAMPLER_CUBE", 35712: "DELETE_STATUS", 35713: "COMPILE_STATUS", 35714: "LINK_STATUS", 35715: "VALIDATE_STATUS", 35716: "INFO_LOG_LENGTH", 35717: "ATTACHED_SHADERS", 35718: "ACTIVE_UNIFORMS", 35719: "ACTIVE_UNIFORM_MAX_LENGTH", 35720: "SHADER_SOURCE_LENGTH", 35721: "ACTIVE_ATTRIBUTES", 35722: "ACTIVE_ATTRIBUTE_MAX_LENGTH", 35724: "SHADING_LANGUAGE_VERSION", 35725: "CURRENT_PROGRAM", 36003: "STENCIL_BACK_REF", 36004: "STENCIL_BACK_VALUE_MASK", 36005: "STENCIL_BACK_WRITEMASK", 36006: "FRAMEBUFFER_BINDING", 36007: "RENDERBUFFER_BINDING", 36048: "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", 36049: "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME", 36050: "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", 36051: "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE", 36053: "FRAMEBUFFER_COMPLETE", 36054: "FRAMEBUFFER_INCOMPLETE_ATTACHMENT", 36055: "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT", 36057: "FRAMEBUFFER_INCOMPLETE_DIMENSIONS", 36061: "FRAMEBUFFER_UNSUPPORTED", 36064: "COLOR_ATTACHMENT0", 36096: "DEPTH_ATTACHMENT", 36128: "STENCIL_ATTACHMENT", 36160: "FRAMEBUFFER", 36161: "RENDERBUFFER", 36162: "RENDERBUFFER_WIDTH", 36163: "RENDERBUFFER_HEIGHT", 36164: "RENDERBUFFER_INTERNAL_FORMAT", 36168: "STENCIL_INDEX8", 36176: "RENDERBUFFER_RED_SIZE", 36177: "RENDERBUFFER_GREEN_SIZE", 36178: "RENDERBUFFER_BLUE_SIZE", 36179: "RENDERBUFFER_ALPHA_SIZE", 36180: "RENDERBUFFER_DEPTH_SIZE", 36181: "RENDERBUFFER_STENCIL_SIZE", 36194: "RGB565", 36336: "LOW_FLOAT", 36337: "MEDIUM_FLOAT", 36338: "HIGH_FLOAT", 36339: "LOW_INT", 36340: "MEDIUM_INT", 36341: "HIGH_INT", 36346: "SHADER_COMPILER", 36347: "MAX_VERTEX_UNIFORM_VECTORS", 36348: "MAX_VARYING_VECTORS", 36349: "MAX_FRAGMENT_UNIFORM_VECTORS", 37440: "UNPACK_FLIP_Y_WEBGL", 37441: "UNPACK_PREMULTIPLY_ALPHA_WEBGL", 37442: "CONTEXT_LOST_WEBGL", 37443: "UNPACK_COLORSPACE_CONVERSION_WEBGL", 37444: "BROWSER_DEFAULT_WEBGL", }; }, {}, ], 83: [ function (t, e, r) { var n = t("./1.0/numbers"); e.exports = function (t) { return n[t]; }; }, { "./1.0/numbers": 82 }, ], 84: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.gl, r = n(e), o = i(e, [ { buffer: r, type: e.FLOAT, size: 3, offset: 0, stride: 40, }, { buffer: r, type: e.FLOAT, size: 4, offset: 12, stride: 40, }, { buffer: r, type: e.FLOAT, size: 3, offset: 28, stride: 40, }, ]), l = a(e); (l.attributes.position.location = 0), (l.attributes.color.location = 1), (l.attributes.offset.location = 2); var c = new s(e, r, o, l); return c.update(t), c; }; var n = t("gl-buffer"), i = t("gl-vao"), a = t("./shaders/index"), o = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ]; function s(t, e, r, n) { (this.gl = t), (this.shader = n), (this.buffer = e), (this.vao = r), (this.pixelRatio = 1), (this.bounds = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ]), (this.clipBounds = [ [-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0], ]), (this.lineWidth = [1, 1, 1]), (this.capSize = [10, 10, 10]), (this.lineCount = [0, 0, 0]), (this.lineOffset = [0, 0, 0]), (this.opacity = 1), (this.hasAlpha = !1); } var l = s.prototype; function c(t, e) { for (var r = 0; r < 3; ++r) (t[0][r] = Math.min(t[0][r], e[r])), (t[1][r] = Math.max(t[1][r], e[r])); } (l.isOpaque = function () { return !this.hasAlpha; }), (l.isTransparent = function () { return this.hasAlpha; }), (l.drawTransparent = l.draw = function (t) { var e = this.gl, r = this.shader.uniforms; this.shader.bind(); var n = (r.view = t.view || o), i = (r.projection = t.projection || o); (r.model = t.model || o), (r.clipBounds = this.clipBounds), (r.opacity = this.opacity); var a = n[12], s = n[13], l = n[14], c = n[15], u = ((t._ortho || !1 ? 2 : 1) * this.pixelRatio * (i[3] * a + i[7] * s + i[11] * l + i[15] * c)) / e.drawingBufferHeight; this.vao.bind(); for (var f = 0; f < 3; ++f) e.lineWidth( this.lineWidth[f] * this.pixelRatio, ), (r.capSize = this.capSize[f] * u), this.lineCount[f] && e.drawArrays( e.LINES, this.lineOffset[f], this.lineCount[f], ); this.vao.unbind(); }); var u = (function () { for ( var t = new Array(3), e = 0; e < 3; ++e ) { for (var r = [], n = 1; n <= 2; ++n) for (var i = -1; i <= 1; i += 2) { var a = [0, 0, 0]; (a[(n + e) % 3] = i), r.push(a); } t[e] = r; } return t; })(); function f(t, e, r, n) { for (var i = u[n], a = 0; a < i.length; ++a) { var o = i[a]; t.push( e[0], e[1], e[2], r[0], r[1], r[2], r[3], o[0], o[1], o[2], ); } return i.length; } (l.update = function (t) { "lineWidth" in (t = t || {}) && ((this.lineWidth = t.lineWidth), Array.isArray(this.lineWidth) || (this.lineWidth = [ this.lineWidth, this.lineWidth, this.lineWidth, ])), "capSize" in t && ((this.capSize = t.capSize), Array.isArray(this.capSize) || (this.capSize = [ this.capSize, this.capSize, this.capSize, ])), (this.hasAlpha = !1), "opacity" in t && ((this.opacity = +t.opacity), this.opacity < 1 && (this.hasAlpha = !0)); var e = t.color || [ [0, 0, 0], [0, 0, 0], [0, 0, 0], ], r = t.position, n = t.error; if ( (Array.isArray(e[0]) || (e = [e, e, e]), r && n) ) { var i = [], a = r.length, o = 0; (this.bounds = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ]), (this.lineCount = [0, 0, 0]); for (var s = 0; s < 3; ++s) { this.lineOffset[s] = o; t: for (var l = 0; l < a; ++l) { for (var u = r[l], h = 0; h < 3; ++h) if (isNaN(u[h]) || !isFinite(u[h])) continue t; var p = n[l], d = e[s]; if ( (Array.isArray(d[0]) && (d = e[l]), 3 === d.length ? (d = [d[0], d[1], d[2], 1]) : 4 === d.length && ((d = [d[0], d[1], d[2], d[3]]), !this.hasAlpha && d[3] < 1 && (this.hasAlpha = !0)), !isNaN(p[0][s]) && !isNaN(p[1][s])) ) { var m; if (p[0][s] < 0) ((m = u.slice())[s] += p[0][s]), i.push( u[0], u[1], u[2], d[0], d[1], d[2], d[3], 0, 0, 0, m[0], m[1], m[2], d[0], d[1], d[2], d[3], 0, 0, 0, ), c(this.bounds, m), (o += 2 + f(i, m, d, s)); if (p[1][s] > 0) ((m = u.slice())[s] += p[1][s]), i.push( u[0], u[1], u[2], d[0], d[1], d[2], d[3], 0, 0, 0, m[0], m[1], m[2], d[0], d[1], d[2], d[3], 0, 0, 0, ), c(this.bounds, m), (o += 2 + f(i, m, d, s)); } } this.lineCount[s] = o - this.lineOffset[s]; } this.buffer.update(i); } }), (l.dispose = function () { this.shader.dispose(), this.buffer.dispose(), this.vao.dispose(); }); }, { "./shaders/index": 85, "gl-buffer": 78, "gl-vao": 150, }, ], 85: [ function (t, e, r) { "use strict"; var n = t("glslify"), i = t("gl-shader"), a = n([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position, offset;\nattribute vec4 color;\nuniform mat4 model, view, projection;\nuniform float capSize;\nvarying vec4 fragColor;\nvarying vec3 fragPosition;\n\nvoid main() {\n vec4 worldPosition = model * vec4(position, 1.0);\n worldPosition = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0);\n gl_Position = projection * view * worldPosition;\n fragColor = color;\n fragPosition = position;\n}", ]), o = n([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float opacity;\nvarying vec3 fragPosition;\nvarying vec4 fragColor;\n\nvoid main() {\n if (\n outOfRange(clipBounds[0], clipBounds[1], fragPosition) ||\n fragColor.a * opacity == 0.\n ) discard;\n\n gl_FragColor = opacity * fragColor;\n}", ]); e.exports = function (t) { return i(t, a, o, null, [ { name: "position", type: "vec3" }, { name: "color", type: "vec4" }, { name: "offset", type: "vec3" }, ]); }; }, { "gl-shader": 132, glslify: 231 }, ], 86: [ function (t, e, r) { "use strict"; var n = t("gl-texture2d"); e.exports = function (t, e, r, n) { i || ((i = t.FRAMEBUFFER_UNSUPPORTED), (a = t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT), (o = t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS), (s = t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT)); var c = t.getExtension("WEBGL_draw_buffers"); !l && c && (function (t, e) { var r = t.getParameter( e.MAX_COLOR_ATTACHMENTS_WEBGL, ); l = new Array(r + 1); for (var n = 0; n <= r; ++n) { for ( var i = new Array(r), a = 0; a < n; ++a ) i[a] = t.COLOR_ATTACHMENT0 + a; for (a = n; a < r; ++a) i[a] = t.NONE; l[n] = i; } })(t, c); Array.isArray(e) && ((n = r), (r = 0 | e[1]), (e = 0 | e[0])); if ("number" != typeof e) throw new Error( "gl-fbo: Missing shape parameter", ); var u = t.getParameter( t.MAX_RENDERBUFFER_SIZE, ); if (e < 0 || e > u || r < 0 || r > u) throw new Error( "gl-fbo: Parameters are too large for FBO", ); var f = 1; if ("color" in (n = n || {})) { if ((f = Math.max(0 | n.color, 0)) < 0) throw new Error( "gl-fbo: Must specify a nonnegative number of colors", ); if (f > 1) { if (!c) throw new Error( "gl-fbo: Multiple draw buffer extension not supported", ); if ( f > t.getParameter( c.MAX_COLOR_ATTACHMENTS_WEBGL, ) ) throw new Error( "gl-fbo: Context does not support " + f + " draw buffers", ); } } var h = t.UNSIGNED_BYTE, p = t.getExtension("OES_texture_float"); if (n.float && f > 0) { if (!p) throw new Error( "gl-fbo: Context does not support floating point textures", ); h = t.FLOAT; } else n.preferFloat && f > 0 && p && (h = t.FLOAT); var m = !0; "depth" in n && (m = !!n.depth); var g = !1; "stencil" in n && (g = !!n.stencil); return new d(t, e, r, h, f, m, g, c); }; var i, a, o, s, l = null; function c(t) { return [ t.getParameter(t.FRAMEBUFFER_BINDING), t.getParameter(t.RENDERBUFFER_BINDING), t.getParameter(t.TEXTURE_BINDING_2D), ]; } function u(t, e) { t.bindFramebuffer(t.FRAMEBUFFER, e[0]), t.bindRenderbuffer(t.RENDERBUFFER, e[1]), t.bindTexture(t.TEXTURE_2D, e[2]); } function f(t) { switch (t) { case i: throw new Error( "gl-fbo: Framebuffer unsupported", ); case a: throw new Error( "gl-fbo: Framebuffer incomplete attachment", ); case o: throw new Error( "gl-fbo: Framebuffer incomplete dimensions", ); case s: throw new Error( "gl-fbo: Framebuffer incomplete missing attachment", ); default: throw new Error( "gl-fbo: Framebuffer failed for unspecified reason", ); } } function h(t, e, r, i, a, o) { if (!i) return null; var s = n(t, e, r, a, i); return ( (s.magFilter = t.NEAREST), (s.minFilter = t.NEAREST), (s.mipSamples = 1), s.bind(), t.framebufferTexture2D( t.FRAMEBUFFER, o, t.TEXTURE_2D, s.handle, 0, ), s ); } function p(t, e, r, n, i) { var a = t.createRenderbuffer(); return ( t.bindRenderbuffer(t.RENDERBUFFER, a), t.renderbufferStorage( t.RENDERBUFFER, n, e, r, ), t.framebufferRenderbuffer( t.FRAMEBUFFER, i, t.RENDERBUFFER, a, ), a ); } function d(t, e, r, n, i, a, o, s) { (this.gl = t), (this._shape = [0 | e, 0 | r]), (this._destroyed = !1), (this._ext = s), (this.color = new Array(i)); for (var d = 0; d < i; ++d) this.color[d] = null; (this._color_rb = null), (this.depth = null), (this._depth_rb = null), (this._colorType = n), (this._useDepth = a), (this._useStencil = o); var m = this, g = [0 | e, 0 | r]; Object.defineProperties(g, { 0: { get: function () { return m._shape[0]; }, set: function (t) { return (m.width = t); }, }, 1: { get: function () { return m._shape[1]; }, set: function (t) { return (m.height = t); }, }, }), (this._shapeVector = g), (function (t) { var e = c(t.gl), r = t.gl, n = (t.handle = r.createFramebuffer()), i = t._shape[0], a = t._shape[1], o = t.color.length, s = t._ext, d = t._useStencil, m = t._useDepth, g = t._colorType; r.bindFramebuffer(r.FRAMEBUFFER, n); for (var v = 0; v < o; ++v) t.color[v] = h( r, i, a, g, r.RGBA, r.COLOR_ATTACHMENT0 + v, ); 0 === o ? ((t._color_rb = p( r, i, a, r.RGBA4, r.COLOR_ATTACHMENT0, )), s && s.drawBuffersWEBGL(l[0])) : o > 1 && s.drawBuffersWEBGL(l[o]); var y = r.getExtension( "WEBGL_depth_texture", ); y ? d ? (t.depth = h( r, i, a, y.UNSIGNED_INT_24_8_WEBGL, r.DEPTH_STENCIL, r.DEPTH_STENCIL_ATTACHMENT, )) : m && (t.depth = h( r, i, a, r.UNSIGNED_SHORT, r.DEPTH_COMPONENT, r.DEPTH_ATTACHMENT, )) : m && d ? (t._depth_rb = p( r, i, a, r.DEPTH_STENCIL, r.DEPTH_STENCIL_ATTACHMENT, )) : m ? (t._depth_rb = p( r, i, a, r.DEPTH_COMPONENT16, r.DEPTH_ATTACHMENT, )) : d && (t._depth_rb = p( r, i, a, r.STENCIL_INDEX, r.STENCIL_ATTACHMENT, )); var x = r.checkFramebufferStatus( r.FRAMEBUFFER, ); if (x !== r.FRAMEBUFFER_COMPLETE) { (t._destroyed = !0), r.bindFramebuffer( r.FRAMEBUFFER, null, ), r.deleteFramebuffer(t.handle), (t.handle = null), t.depth && (t.depth.dispose(), (t.depth = null)), t._depth_rb && (r.deleteRenderbuffer(t._depth_rb), (t._depth_rb = null)); for (v = 0; v < t.color.length; ++v) t.color[v].dispose(), (t.color[v] = null); t._color_rb && (r.deleteRenderbuffer(t._color_rb), (t._color_rb = null)), u(r, e), f(x); } u(r, e); })(this); } var m = d.prototype; function g(t, e, r) { if (t._destroyed) throw new Error( "gl-fbo: Can't resize destroyed FBO", ); if (t._shape[0] !== e || t._shape[1] !== r) { var n = t.gl, i = n.getParameter( n.MAX_RENDERBUFFER_SIZE, ); if (e < 0 || e > i || r < 0 || r > i) throw new Error( "gl-fbo: Can't resize FBO, invalid dimensions", ); (t._shape[0] = e), (t._shape[1] = r); for ( var a = c(n), o = 0; o < t.color.length; ++o ) t.color[o].shape = t._shape; t._color_rb && (n.bindRenderbuffer( n.RENDERBUFFER, t._color_rb, ), n.renderbufferStorage( n.RENDERBUFFER, n.RGBA4, t._shape[0], t._shape[1], )), t.depth && (t.depth.shape = t._shape), t._depth_rb && (n.bindRenderbuffer( n.RENDERBUFFER, t._depth_rb, ), t._useDepth && t._useStencil ? n.renderbufferStorage( n.RENDERBUFFER, n.DEPTH_STENCIL, t._shape[0], t._shape[1], ) : t._useDepth ? n.renderbufferStorage( n.RENDERBUFFER, n.DEPTH_COMPONENT16, t._shape[0], t._shape[1], ) : t._useStencil && n.renderbufferStorage( n.RENDERBUFFER, n.STENCIL_INDEX, t._shape[0], t._shape[1], )), n.bindFramebuffer( n.FRAMEBUFFER, t.handle, ); var s = n.checkFramebufferStatus( n.FRAMEBUFFER, ); s !== n.FRAMEBUFFER_COMPLETE && (t.dispose(), u(n, a), f(s)), u(n, a); } } Object.defineProperties(m, { shape: { get: function () { return this._destroyed ? [0, 0] : this._shapeVector; }, set: function (t) { if ( (Array.isArray(t) || (t = [0 | t, 0 | t]), 2 !== t.length) ) throw new Error( "gl-fbo: Shape vector must be length 2", ); var e = 0 | t[0], r = 0 | t[1]; return g(this, e, r), [e, r]; }, enumerable: !1, }, width: { get: function () { return this._destroyed ? 0 : this._shape[0]; }, set: function (t) { return ( g(this, (t |= 0), this._shape[1]), t ); }, enumerable: !1, }, height: { get: function () { return this._destroyed ? 0 : this._shape[1]; }, set: function (t) { return ( (t |= 0), g(this, this._shape[0], t), t ); }, enumerable: !1, }, }), (m.bind = function () { if (!this._destroyed) { var t = this.gl; t.bindFramebuffer( t.FRAMEBUFFER, this.handle, ), t.viewport( 0, 0, this._shape[0], this._shape[1], ); } }), (m.dispose = function () { if (!this._destroyed) { this._destroyed = !0; var t = this.gl; t.deleteFramebuffer(this.handle), (this.handle = null), this.depth && (this.depth.dispose(), (this.depth = null)), this._depth_rb && (t.deleteRenderbuffer(this._depth_rb), (this._depth_rb = null)); for ( var e = 0; e < this.color.length; ++e ) this.color[e].dispose(), (this.color[e] = null); this._color_rb && (t.deleteRenderbuffer(this._color_rb), (this._color_rb = null)); } }); }, { "gl-texture2d": 146 }, ], 87: [ function (t, e, r) { var n = t("sprintf-js").sprintf, i = t("gl-constants/lookup"), a = t("glsl-shader-name"), o = t("add-line-numbers"); e.exports = function (t, e, r) { "use strict"; var s = a(e) || "of unknown name (see npm glsl-shader-name)", l = "unknown type"; void 0 !== r && (l = r === i.FRAGMENT_SHADER ? "fragment" : "vertex"); for ( var c = n( "Error compiling %s shader %s:\n", l, s, ), u = n("%s%s", c, t), f = t.split("\n"), h = {}, p = 0; p < f.length; p++ ) { var d = f[p]; if ("" !== d && "\0" !== d) { var m = parseInt(d.split(":")[2]); if (isNaN(m)) throw new Error( n("Could not parse error: %s", d), ); h[m] = d; } } var g = o(e).split("\n"); for (p = 0; p < g.length; p++) if (h[p + 3] || h[p + 2] || h[p + 1]) { var v = g[p]; if (((c += v + "\n"), h[p + 1])) { var y = h[p + 1]; (y = y .substr( y.split(":", 3).join(":").length + 1, ) .trim()), (c += n("^^^ %s\n\n", y)); } } return { long: c.trim(), short: u.trim() }; }; }, { "add-line-numbers": 9, "gl-constants/lookup": 83, "glsl-shader-name": 223, "sprintf-js": 301, }, ], 88: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r = t.gl, n = o(r, l.vertex, l.fragment), i = o(r, l.pickVertex, l.pickFragment), a = s(r), u = s(r), f = s(r), h = s(r), p = new c(t, n, i, a, u, f, h); return p.update(e), t.addObject(p), p; }; var n = t("binary-search-bounds"), i = t("iota-array"), a = t("typedarray-pool"), o = t("gl-shader"), s = t("gl-buffer"), l = t("./lib/shaders"); function c(t, e, r, n, i, a, o) { (this.plot = t), (this.shader = e), (this.pickShader = r), (this.positionBuffer = n), (this.weightBuffer = i), (this.colorBuffer = a), (this.idBuffer = o), (this.xData = []), (this.yData = []), (this.shape = [0, 0]), (this.bounds = [ 1 / 0, 1 / 0, -1 / 0, -1 / 0, ]), (this.pickOffset = 0); } var u, f = c.prototype, h = [0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1]; (f.draw = ((u = [1, 0, 0, 0, 1, 0, 0, 0, 1]), function () { var t = this.plot, e = this.shader, r = this.bounds, n = this.numVertices; if (!(n <= 0)) { var i = t.gl, a = t.dataBox, o = r[2] - r[0], s = r[3] - r[1], l = a[2] - a[0], c = a[3] - a[1]; (u[0] = (2 * o) / l), (u[4] = (2 * s) / c), (u[6] = (2 * (r[0] - a[0])) / l - 1), (u[7] = (2 * (r[1] - a[1])) / c - 1), e.bind(); var f = e.uniforms; (f.viewTransform = u), (f.shape = this.shape); var h = e.attributes; this.positionBuffer.bind(), h.position.pointer(), this.weightBuffer.bind(), h.weight.pointer(i.UNSIGNED_BYTE, !1), this.colorBuffer.bind(), h.color.pointer(i.UNSIGNED_BYTE, !0), i.drawArrays(i.TRIANGLES, 0, n); } })), (f.drawPick = (function () { var t = [1, 0, 0, 0, 1, 0, 0, 0, 1], e = [0, 0, 0, 0]; return function (r) { var n = this.plot, i = this.pickShader, a = this.bounds, o = this.numVertices; if (!(o <= 0)) { var s = n.gl, l = n.dataBox, c = a[2] - a[0], u = a[3] - a[1], f = l[2] - l[0], h = l[3] - l[1]; (t[0] = (2 * c) / f), (t[4] = (2 * u) / h), (t[6] = (2 * (a[0] - l[0])) / f - 1), (t[7] = (2 * (a[1] - l[1])) / h - 1); for (var p = 0; p < 4; ++p) e[p] = (r >> (8 * p)) & 255; (this.pickOffset = r), i.bind(); var d = i.uniforms; (d.viewTransform = t), (d.pickOffset = e), (d.shape = this.shape); var m = i.attributes; return ( this.positionBuffer.bind(), m.position.pointer(), this.weightBuffer.bind(), m.weight.pointer(s.UNSIGNED_BYTE, !1), this.idBuffer.bind(), m.pickId.pointer(s.UNSIGNED_BYTE, !1), s.drawArrays(s.TRIANGLES, 0, o), r + this.shape[0] * this.shape[1] ); } }; })()), (f.pick = function (t, e, r) { var n = this.pickOffset, i = this.shape[0] * this.shape[1]; if (r < n || r >= n + i) return null; var a = r - n, o = this.xData, s = this.yData; return { object: this, pointId: a, dataCoord: [ o[a % this.shape[0]], s[(a / this.shape[0]) | 0], ], }; }), (f.update = function (t) { var e = (t = t || {}).shape || [0, 0], r = t.x || i(e[0]), o = t.y || i(e[1]), s = t.z || new Float32Array(e[0] * e[1]), l = !1 !== t.zsmooth; (this.xData = r), (this.yData = o); var c, u, f, p, d = t.colorLevels || [0], m = t.colorValues || [0, 0, 0, 1], g = d.length, v = this.bounds; l ? ((c = v[0] = r[0]), (u = v[1] = o[0]), (f = v[2] = r[r.length - 1]), (p = v[3] = o[o.length - 1])) : ((c = v[0] = r[0] + (r[1] - r[0]) / 2), (u = v[1] = o[0] + (o[1] - o[0]) / 2), (f = v[2] = r[r.length - 1] + (r[r.length - 1] - r[r.length - 2]) / 2), (p = v[3] = o[o.length - 1] + (o[o.length - 1] - o[o.length - 2]) / 2)); var y = 1 / (f - c), x = 1 / (p - u), b = e[0], _ = e[1]; this.shape = [b, _]; var w = (l ? (b - 1) * (_ - 1) : b * _) * (h.length >>> 1); this.numVertices = w; for ( var T = a.mallocUint8(4 * w), k = a.mallocFloat32(2 * w), A = a.mallocUint8(2 * w), M = a.mallocUint32(w), S = 0, E = l ? b - 1 : b, L = l ? _ - 1 : _, C = 0; C < L; ++C ) { var P, I; l ? ((P = x * (o[C] - u)), (I = x * (o[C + 1] - u))) : ((P = C < _ - 1 ? x * (o[C] - (o[C + 1] - o[C]) / 2 - u) : x * (o[C] - (o[C] - o[C - 1]) / 2 - u)), (I = C < _ - 1 ? x * (o[C] + (o[C + 1] - o[C]) / 2 - u) : x * (o[C] + (o[C] - o[C - 1]) / 2 - u))); for (var O = 0; O < E; ++O) { var z, D; l ? ((z = y * (r[O] - c)), (D = y * (r[O + 1] - c))) : ((z = O < b - 1 ? y * (r[O] - (r[O + 1] - r[O]) / 2 - c) : y * (r[O] - (r[O] - r[O - 1]) / 2 - c)), (D = O < b - 1 ? y * (r[O] + (r[O + 1] - r[O]) / 2 - c) : y * (r[O] + (r[O] - r[O - 1]) / 2 - c))); for (var R = 0; R < h.length; R += 2) { var F, B, N, j, U = h[R], V = h[R + 1], H = s[ l ? (C + V) * b + (O + U) : C * b + O ], q = n.le(d, H); if (q < 0) (F = m[0]), (B = m[1]), (N = m[2]), (j = m[3]); else if (q === g - 1) (F = m[4 * g - 4]), (B = m[4 * g - 3]), (N = m[4 * g - 2]), (j = m[4 * g - 1]); else { var G = (H - d[q]) / (d[q + 1] - d[q]), Y = 1 - G, W = 4 * q, Z = 4 * (q + 1); (F = Y * m[W] + G * m[Z]), (B = Y * m[W + 1] + G * m[Z + 1]), (N = Y * m[W + 2] + G * m[Z + 2]), (j = Y * m[W + 3] + G * m[Z + 3]); } (T[4 * S] = 255 * F), (T[4 * S + 1] = 255 * B), (T[4 * S + 2] = 255 * N), (T[4 * S + 3] = 255 * j), (k[2 * S] = 0.5 * z + 0.5 * D), (k[2 * S + 1] = 0.5 * P + 0.5 * I), (A[2 * S] = U), (A[2 * S + 1] = V), (M[S] = C * b + O), (S += 1); } } } this.positionBuffer.update(k), this.weightBuffer.update(A), this.colorBuffer.update(T), this.idBuffer.update(M), a.free(k), a.free(T), a.free(A), a.free(M); }), (f.dispose = function () { this.shader.dispose(), this.pickShader.dispose(), this.positionBuffer.dispose(), this.weightBuffer.dispose(), this.colorBuffer.dispose(), this.idBuffer.dispose(), this.plot.removeObject(this); }); }, { "./lib/shaders": 89, "binary-search-bounds": 31, "gl-buffer": 78, "gl-shader": 132, "iota-array": 235, "typedarray-pool": 308, }, ], 89: [ function (t, e, r) { "use strict"; var n = t("glslify"); e.exports = { fragment: n([ "precision lowp float;\n#define GLSLIFY 1\nvarying vec4 fragColor;\nvoid main() {\n gl_FragColor = vec4(fragColor.rgb * fragColor.a, fragColor.a);\n}\n", ]), vertex: n([ "precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 position;\nattribute vec4 color;\nattribute vec2 weight;\n\nuniform vec2 shape;\nuniform mat3 viewTransform;\n\nvarying vec4 fragColor;\n\nvoid main() {\n vec3 vPosition = viewTransform * vec3( position + (weight-.5)/(shape-1.) , 1.0);\n fragColor = color;\n gl_Position = vec4(vPosition.xy, 0, vPosition.z);\n}\n", ]), pickFragment: n([ "precision mediump float;\n#define GLSLIFY 1\n\nvarying vec4 fragId;\nvarying vec2 vWeight;\n\nuniform vec2 shape;\nuniform vec4 pickOffset;\n\nvoid main() {\n vec2 d = step(.5, vWeight);\n vec4 id = fragId + pickOffset;\n id.x += d.x + d.y*shape.x;\n\n id.y += floor(id.x / 256.0);\n id.x -= floor(id.x / 256.0) * 256.0;\n\n id.z += floor(id.y / 256.0);\n id.y -= floor(id.y / 256.0) * 256.0;\n\n id.w += floor(id.z / 256.0);\n id.z -= floor(id.z / 256.0) * 256.0;\n\n gl_FragColor = id/255.;\n}\n", ]), pickVertex: n([ "precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 position;\nattribute vec4 pickId;\nattribute vec2 weight;\n\nuniform vec2 shape;\nuniform mat3 viewTransform;\n\nvarying vec4 fragId;\nvarying vec2 vWeight;\n\nvoid main() {\n vWeight = weight;\n\n fragId = pickId;\n\n vec3 vPosition = viewTransform * vec3( position + (weight-.5)/(shape-1.) , 1.0);\n gl_Position = vec4(vPosition.xy, 0, vPosition.z);\n}\n", ]), }; }, { glslify: 231 }, ], 90: [ function (t, e, r) { var n = t("glslify"), i = t("gl-shader"), a = n([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position, nextPosition;\nattribute float arcLength, lineWidth;\nattribute vec4 color;\n\nuniform vec2 screenShape;\nuniform float pixelRatio;\nuniform mat4 model, view, projection;\n\nvarying vec4 fragColor;\nvarying vec3 worldPosition;\nvarying float pixelArcLength;\n\nvec4 project(vec3 p) {\n return projection * view * model * vec4(p, 1.0);\n}\n\nvoid main() {\n vec4 startPoint = project(position);\n vec4 endPoint = project(nextPosition);\n\n vec2 A = startPoint.xy / startPoint.w;\n vec2 B = endPoint.xy / endPoint.w;\n\n float clipAngle = atan(\n (B.y - A.y) * screenShape.y,\n (B.x - A.x) * screenShape.x\n );\n\n vec2 offset = 0.5 * pixelRatio * lineWidth * vec2(\n sin(clipAngle),\n -cos(clipAngle)\n ) / screenShape;\n\n gl_Position = vec4(startPoint.xy + startPoint.w * offset, startPoint.zw);\n\n worldPosition = position;\n pixelArcLength = arcLength;\n fragColor = color;\n}\n", ]), o = n([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform sampler2D dashTexture;\nuniform float dashScale;\nuniform float opacity;\n\nvarying vec3 worldPosition;\nvarying float pixelArcLength;\nvarying vec4 fragColor;\n\nvoid main() {\n if (\n outOfRange(clipBounds[0], clipBounds[1], worldPosition) ||\n fragColor.a * opacity == 0.\n ) discard;\n\n float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r;\n if(dashWeight < 0.5) {\n discard;\n }\n gl_FragColor = fragColor * opacity;\n}\n", ]), s = n([ "precision highp float;\n#define GLSLIFY 1\n\n#define FLOAT_MAX 1.70141184e38\n#define FLOAT_MIN 1.17549435e-38\n\n// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl\nvec4 packFloat(float v) {\n float av = abs(v);\n\n //Handle special cases\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(127.0, 128.0, 0.0, 0.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(255.0, 128.0, 0.0, 0.0) / 255.0;\n }\n\n vec4 c = vec4(0,0,0,0);\n\n //Compute exponent and mantissa\n float e = floor(log2(av));\n float m = av * pow(2.0, -e) - 1.0;\n\n //Unpack mantissa\n c[1] = floor(128.0 * m);\n m -= c[1] / 128.0;\n c[2] = floor(32768.0 * m);\n m -= c[2] / 32768.0;\n c[3] = floor(8388608.0 * m);\n\n //Unpack exponent\n float ebias = e + 127.0;\n c[0] = floor(ebias / 2.0);\n ebias -= c[0] * 2.0;\n c[1] += floor(ebias) * 128.0;\n\n //Unpack sign bit\n c[0] += 128.0 * step(0.0, -v);\n\n //Scale back to range\n return c / 255.0;\n}\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform float pickId;\nuniform vec3 clipBounds[2];\n\nvarying vec3 worldPosition;\nvarying float pixelArcLength;\nvarying vec4 fragColor;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard;\n\n gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz);\n}", ]), l = [ { name: "position", type: "vec3" }, { name: "nextPosition", type: "vec3" }, { name: "arcLength", type: "float" }, { name: "lineWidth", type: "float" }, { name: "color", type: "vec4" }, ]; (r.createShader = function (t) { return i(t, a, o, null, l); }), (r.createPickShader = function (t) { return i(t, a, s, null, l); }); }, { "gl-shader": 132, glslify: 231 }, ], 91: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.gl || (t.scene && t.scene.gl), r = f(e); (r.attributes.position.location = 0), (r.attributes.nextPosition.location = 1), (r.attributes.arcLength.location = 2), (r.attributes.lineWidth.location = 3), (r.attributes.color.location = 4); var o = h(e); (o.attributes.position.location = 0), (o.attributes.nextPosition.location = 1), (o.attributes.arcLength.location = 2), (o.attributes.lineWidth.location = 3), (o.attributes.color.location = 4); for ( var s = n(e), l = i(e, [ { buffer: s, size: 3, offset: 0, stride: 48, }, { buffer: s, size: 3, offset: 12, stride: 48, }, { buffer: s, size: 1, offset: 24, stride: 48, }, { buffer: s, size: 1, offset: 28, stride: 48, }, { buffer: s, size: 4, offset: 32, stride: 48, }, ]), u = c(new Array(1024), [256, 1, 4]), p = 0; p < 1024; ++p ) u.data[p] = 255; var d = a(e, u); d.wrap = e.REPEAT; var m = new v(e, r, o, s, l, d); return m.update(t), m; }; var n = t("gl-buffer"), i = t("gl-vao"), a = t("gl-texture2d"), o = new Uint8Array(4), s = new Float32Array(o.buffer); var l = t("binary-search-bounds"), c = t("ndarray"), u = t("./lib/shaders"), f = u.createShader, h = u.createPickShader, p = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ]; function d(t, e) { for (var r = 0, n = 0; n < 3; ++n) { var i = t[n] - e[n]; r += i * i; } return Math.sqrt(r); } function m(t) { for ( var e = [ [-1e6, -1e6, -1e6], [1e6, 1e6, 1e6], ], r = 0; r < 3; ++r ) (e[0][r] = Math.max(t[0][r], e[0][r])), (e[1][r] = Math.min(t[1][r], e[1][r])); return e; } function g(t, e, r, n) { (this.arcLength = t), (this.position = e), (this.index = r), (this.dataCoordinate = n); } function v(t, e, r, n, i, a) { (this.gl = t), (this.shader = e), (this.pickShader = r), (this.buffer = n), (this.vao = i), (this.clipBounds = [ [-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0], ]), (this.points = []), (this.arcLength = []), (this.vertexCount = 0), (this.bounds = [ [0, 0, 0], [0, 0, 0], ]), (this.pickId = 0), (this.lineWidth = 1), (this.texture = a), (this.dashScale = 1), (this.opacity = 1), (this.hasAlpha = !1), (this.dirty = !0), (this.pixelRatio = 1); } var y = v.prototype; (y.isTransparent = function () { return this.hasAlpha; }), (y.isOpaque = function () { return !this.hasAlpha; }), (y.pickSlots = 1), (y.setPickBase = function (t) { this.pickId = t; }), (y.drawTransparent = y.draw = function (t) { if (this.vertexCount) { var e = this.gl, r = this.shader, n = this.vao; r.bind(), (r.uniforms = { model: t.model || p, view: t.view || p, projection: t.projection || p, clipBounds: m(this.clipBounds), dashTexture: this.texture.bind(), dashScale: this.dashScale / this.arcLength[ this.arcLength.length - 1 ], opacity: this.opacity, screenShape: [ e.drawingBufferWidth, e.drawingBufferHeight, ], pixelRatio: this.pixelRatio, }), n.bind(), n.draw( e.TRIANGLE_STRIP, this.vertexCount, ), n.unbind(); } }), (y.drawPick = function (t) { if (this.vertexCount) { var e = this.gl, r = this.pickShader, n = this.vao; r.bind(), (r.uniforms = { model: t.model || p, view: t.view || p, projection: t.projection || p, pickId: this.pickId, clipBounds: m(this.clipBounds), screenShape: [ e.drawingBufferWidth, e.drawingBufferHeight, ], pixelRatio: this.pixelRatio, }), n.bind(), n.draw( e.TRIANGLE_STRIP, this.vertexCount, ), n.unbind(); } }), (y.update = function (t) { var e, r; this.dirty = !0; var n = !!t.connectGaps; "dashScale" in t && (this.dashScale = t.dashScale), (this.hasAlpha = !1), "opacity" in t && ((this.opacity = +t.opacity), this.opacity < 1 && (this.hasAlpha = !0)); var i = [], a = [], o = [], s = 0, u = 0, f = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ], h = t.position || t.positions; if (h) { var p = t.color || t.colors || [0, 0, 0, 1], m = t.lineWidth || 1, g = !1; t: for (e = 1; e < h.length; ++e) { var v, y, x, b = h[e - 1], _ = h[e]; for ( a.push(s), o.push(b.slice()), r = 0; r < 3; ++r ) { if ( isNaN(b[r]) || isNaN(_[r]) || !isFinite(b[r]) || !isFinite(_[r]) ) { if (!n && i.length > 0) { for (var w = 0; w < 24; ++w) i.push(i[i.length - 12]); (u += 2), (g = !0); } continue t; } (f[0][r] = Math.min( f[0][r], b[r], _[r], )), (f[1][r] = Math.max( f[1][r], b[r], _[r], )); } Array.isArray(p[0]) ? ((v = p.length > e - 1 ? p[e - 1] : p.length > 0 ? p[p.length - 1] : [0, 0, 0, 1]), (y = p.length > e ? p[e] : p.length > 0 ? p[p.length - 1] : [0, 0, 0, 1])) : (v = y = p), 3 === v.length && (v = [v[0], v[1], v[2], 1]), 3 === y.length && (y = [y[0], y[1], y[2], 1]), !this.hasAlpha && v[3] < 1 && (this.hasAlpha = !0), (x = Array.isArray(m) ? m.length > e - 1 ? m[e - 1] : m.length > 0 ? m[m.length - 1] : [0, 0, 0, 1] : m); var T = s; if (((s += d(b, _)), g)) { for (r = 0; r < 2; ++r) i.push( b[0], b[1], b[2], _[0], _[1], _[2], T, x, v[0], v[1], v[2], v[3], ); (u += 2), (g = !1); } i.push( b[0], b[1], b[2], _[0], _[1], _[2], T, x, v[0], v[1], v[2], v[3], b[0], b[1], b[2], _[0], _[1], _[2], T, -x, v[0], v[1], v[2], v[3], _[0], _[1], _[2], b[0], b[1], b[2], s, -x, y[0], y[1], y[2], y[3], _[0], _[1], _[2], b[0], b[1], b[2], s, x, y[0], y[1], y[2], y[3], ), (u += 4); } } if ( (this.buffer.update(i), a.push(s), o.push(h[h.length - 1].slice()), (this.bounds = f), (this.vertexCount = u), (this.points = o), (this.arcLength = a), "dashes" in t) ) { var k = t.dashes.slice(); for ( k.unshift(0), e = 1; e < k.length; ++e ) k[e] = k[e - 1] + k[e]; var A = c(new Array(1024), [256, 1, 4]); for (e = 0; e < 256; ++e) { for (r = 0; r < 4; ++r) A.set(e, 0, r, 0); 1 & l.le(k, (k[k.length - 1] * e) / 255) ? A.set(e, 0, 0, 0) : A.set(e, 0, 0, 255); } this.texture.setPixels(A); } }), (y.dispose = function () { this.shader.dispose(), this.vao.dispose(), this.buffer.dispose(); }), (y.pick = function (t) { if (!t) return null; if (t.id !== this.pickId) return null; var e = (function (t, e, r, n) { return ( (o[0] = n), (o[1] = r), (o[2] = e), (o[3] = t), s[0] ); })(t.value[0], t.value[1], t.value[2], 0), r = l.le(this.arcLength, e); if (r < 0) return null; if (r === this.arcLength.length - 1) return new g( this.arcLength[ this.arcLength.length - 1 ], this.points[ this.points.length - 1 ].slice(), r, ); for ( var n = this.points[r], i = this.points[ Math.min( r + 1, this.points.length - 1, ) ], a = (e - this.arcLength[r]) / (this.arcLength[r + 1] - this.arcLength[r]), c = 1 - a, u = [0, 0, 0], f = 0; f < 3; ++f ) u[f] = c * n[f] + a * i[f]; var h = Math.min( a < 0.5 ? r : r + 1, this.points.length - 1, ); return new g(e, u, h, this.points[h]); }); }, { "./lib/shaders": 90, "binary-search-bounds": 31, "gl-buffer": 78, "gl-texture2d": 146, "gl-vao": 150, ndarray: 259, }, ], 92: [ function (t, e, r) { e.exports = function (t) { var e = new Float32Array(16); return ( (e[0] = t[0]), (e[1] = t[1]), (e[2] = t[2]), (e[3] = t[3]), (e[4] = t[4]), (e[5] = t[5]), (e[6] = t[6]), (e[7] = t[7]), (e[8] = t[8]), (e[9] = t[9]), (e[10] = t[10]), (e[11] = t[11]), (e[12] = t[12]), (e[13] = t[13]), (e[14] = t[14]), (e[15] = t[15]), e ); }; }, {}, ], 93: [ function (t, e, r) { e.exports = function () { var t = new Float32Array(16); return ( (t[0] = 1), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = 1), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[10] = 1), (t[11] = 0), (t[12] = 0), (t[13] = 0), (t[14] = 0), (t[15] = 1), t ); }; }, {}, ], 94: [ function (t, e, r) { e.exports = function (t) { var e = t[0], r = t[1], n = t[2], i = t[3], a = t[4], o = t[5], s = t[6], l = t[7], c = t[8], u = t[9], f = t[10], h = t[11], p = t[12], d = t[13], m = t[14], g = t[15]; return ( (e * o - r * a) * (f * g - h * m) - (e * s - n * a) * (u * g - h * d) + (e * l - i * a) * (u * m - f * d) + (r * s - n * o) * (c * g - h * p) - (r * l - i * o) * (c * m - f * p) + (n * l - i * s) * (c * d - u * p) ); }; }, {}, ], 95: [ function (t, e, r) { e.exports = function (t, e) { var r = e[0], n = e[1], i = e[2], a = e[3], o = r + r, s = n + n, l = i + i, c = r * o, u = n * o, f = n * s, h = i * o, p = i * s, d = i * l, m = a * o, g = a * s, v = a * l; return ( (t[0] = 1 - f - d), (t[1] = u + v), (t[2] = h - g), (t[3] = 0), (t[4] = u - v), (t[5] = 1 - c - d), (t[6] = p + m), (t[7] = 0), (t[8] = h + g), (t[9] = p - m), (t[10] = 1 - c - f), (t[11] = 0), (t[12] = 0), (t[13] = 0), (t[14] = 0), (t[15] = 1), t ); }; }, {}, ], 96: [ function (t, e, r) { e.exports = function (t, e, r) { var n = e[0], i = e[1], a = e[2], o = e[3], s = n + n, l = i + i, c = a + a, u = n * s, f = n * l, h = n * c, p = i * l, d = i * c, m = a * c, g = o * s, v = o * l, y = o * c; return ( (t[0] = 1 - (p + m)), (t[1] = f + y), (t[2] = h - v), (t[3] = 0), (t[4] = f - y), (t[5] = 1 - (u + m)), (t[6] = d + g), (t[7] = 0), (t[8] = h + v), (t[9] = d - g), (t[10] = 1 - (u + p)), (t[11] = 0), (t[12] = r[0]), (t[13] = r[1]), (t[14] = r[2]), (t[15] = 1), t ); }; }, {}, ], 97: [ function (t, e, r) { e.exports = function (t) { return ( (t[0] = 1), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = 1), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[10] = 1), (t[11] = 0), (t[12] = 0), (t[13] = 0), (t[14] = 0), (t[15] = 1), t ); }; }, {}, ], 98: [ function (t, e, r) { e.exports = function (t, e) { var r = e[0], n = e[1], i = e[2], a = e[3], o = e[4], s = e[5], l = e[6], c = e[7], u = e[8], f = e[9], h = e[10], p = e[11], d = e[12], m = e[13], g = e[14], v = e[15], y = r * s - n * o, x = r * l - i * o, b = r * c - a * o, _ = n * l - i * s, w = n * c - a * s, T = i * c - a * l, k = u * m - f * d, A = u * g - h * d, M = u * v - p * d, S = f * g - h * m, E = f * v - p * m, L = h * v - p * g, C = y * L - x * E + b * S + _ * M - w * A + T * k; if (!C) return null; return ( (C = 1 / C), (t[0] = (s * L - l * E + c * S) * C), (t[1] = (i * E - n * L - a * S) * C), (t[2] = (m * T - g * w + v * _) * C), (t[3] = (h * w - f * T - p * _) * C), (t[4] = (l * M - o * L - c * A) * C), (t[5] = (r * L - i * M + a * A) * C), (t[6] = (g * b - d * T - v * x) * C), (t[7] = (u * T - h * b + p * x) * C), (t[8] = (o * E - s * M + c * k) * C), (t[9] = (n * M - r * E - a * k) * C), (t[10] = (d * w - m * b + v * y) * C), (t[11] = (f * b - u * w - p * y) * C), (t[12] = (s * A - o * S - l * k) * C), (t[13] = (r * S - n * A + i * k) * C), (t[14] = (m * x - d * _ - g * y) * C), (t[15] = (u * _ - f * x + h * y) * C), t ); }; }, {}, ], 99: [ function (t, e, r) { var n = t("./identity"); e.exports = function (t, e, r, i) { var a, o, s, l, c, u, f, h, p, d, m = e[0], g = e[1], v = e[2], y = i[0], x = i[1], b = i[2], _ = r[0], w = r[1], T = r[2]; if ( Math.abs(m - _) < 1e-6 && Math.abs(g - w) < 1e-6 && Math.abs(v - T) < 1e-6 ) return n(t); (f = m - _), (h = g - w), (p = v - T), (d = 1 / Math.sqrt(f * f + h * h + p * p)), (a = x * (p *= d) - b * (h *= d)), (o = b * (f *= d) - y * p), (s = y * h - x * f), (d = Math.sqrt(a * a + o * o + s * s)) ? ((a *= d = 1 / d), (o *= d), (s *= d)) : ((a = 0), (o = 0), (s = 0)); (l = h * s - p * o), (c = p * a - f * s), (u = f * o - h * a), (d = Math.sqrt(l * l + c * c + u * u)) ? ((l *= d = 1 / d), (c *= d), (u *= d)) : ((l = 0), (c = 0), (u = 0)); return ( (t[0] = a), (t[1] = l), (t[2] = f), (t[3] = 0), (t[4] = o), (t[5] = c), (t[6] = h), (t[7] = 0), (t[8] = s), (t[9] = u), (t[10] = p), (t[11] = 0), (t[12] = -(a * m + o * g + s * v)), (t[13] = -(l * m + c * g + u * v)), (t[14] = -(f * m + h * g + p * v)), (t[15] = 1), t ); }; }, { "./identity": 97 }, ], 100: [ function (t, e, r) { e.exports = function (t, e, r) { var n = e[0], i = e[1], a = e[2], o = e[3], s = e[4], l = e[5], c = e[6], u = e[7], f = e[8], h = e[9], p = e[10], d = e[11], m = e[12], g = e[13], v = e[14], y = e[15], x = r[0], b = r[1], _ = r[2], w = r[3]; return ( (t[0] = x * n + b * s + _ * f + w * m), (t[1] = x * i + b * l + _ * h + w * g), (t[2] = x * a + b * c + _ * p + w * v), (t[3] = x * o + b * u + _ * d + w * y), (x = r[4]), (b = r[5]), (_ = r[6]), (w = r[7]), (t[4] = x * n + b * s + _ * f + w * m), (t[5] = x * i + b * l + _ * h + w * g), (t[6] = x * a + b * c + _ * p + w * v), (t[7] = x * o + b * u + _ * d + w * y), (x = r[8]), (b = r[9]), (_ = r[10]), (w = r[11]), (t[8] = x * n + b * s + _ * f + w * m), (t[9] = x * i + b * l + _ * h + w * g), (t[10] = x * a + b * c + _ * p + w * v), (t[11] = x * o + b * u + _ * d + w * y), (x = r[12]), (b = r[13]), (_ = r[14]), (w = r[15]), (t[12] = x * n + b * s + _ * f + w * m), (t[13] = x * i + b * l + _ * h + w * g), (t[14] = x * a + b * c + _ * p + w * v), (t[15] = x * o + b * u + _ * d + w * y), t ); }; }, {}, ], 101: [ function (t, e, r) { e.exports = function (t, e, r, n, i, a, o) { var s = 1 / (e - r), l = 1 / (n - i), c = 1 / (a - o); return ( (t[0] = -2 * s), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = -2 * l), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[10] = 2 * c), (t[11] = 0), (t[12] = (e + r) * s), (t[13] = (i + n) * l), (t[14] = (o + a) * c), (t[15] = 1), t ); }; }, {}, ], 102: [ function (t, e, r) { e.exports = function (t, e, r, n, i) { var a = 1 / Math.tan(e / 2), o = 1 / (n - i); return ( (t[0] = a / r), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), (t[5] = a), (t[6] = 0), (t[7] = 0), (t[8] = 0), (t[9] = 0), (t[10] = (i + n) * o), (t[11] = -1), (t[12] = 0), (t[13] = 0), (t[14] = 2 * i * n * o), (t[15] = 0), t ); }; }, {}, ], 103: [ function (t, e, r) { e.exports = function (t, e, r, n) { var i, a, o, s, l, c, u, f, h, p, d, m, g, v, y, x, b, _, w, T, k, A, M, S, E = n[0], L = n[1], C = n[2], P = Math.sqrt(E * E + L * L + C * C); if (Math.abs(P) < 1e-6) return null; (E *= P = 1 / P), (L *= P), (C *= P), (i = Math.sin(r)), (a = Math.cos(r)), (o = 1 - a), (s = e[0]), (l = e[1]), (c = e[2]), (u = e[3]), (f = e[4]), (h = e[5]), (p = e[6]), (d = e[7]), (m = e[8]), (g = e[9]), (v = e[10]), (y = e[11]), (x = E * E * o + a), (b = L * E * o + C * i), (_ = C * E * o - L * i), (w = E * L * o - C * i), (T = L * L * o + a), (k = C * L * o + E * i), (A = E * C * o + L * i), (M = L * C * o - E * i), (S = C * C * o + a), (t[0] = s * x + f * b + m * _), (t[1] = l * x + h * b + g * _), (t[2] = c * x + p * b + v * _), (t[3] = u * x + d * b + y * _), (t[4] = s * w + f * T + m * k), (t[5] = l * w + h * T + g * k), (t[6] = c * w + p * T + v * k), (t[7] = u * w + d * T + y * k), (t[8] = s * A + f * M + m * S), (t[9] = l * A + h * M + g * S), (t[10] = c * A + p * M + v * S), (t[11] = u * A + d * M + y * S), e !== t && ((t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15])); return t; }; }, {}, ], 104: [ function (t, e, r) { e.exports = function (t, e, r) { var n = Math.sin(r), i = Math.cos(r), a = e[4], o = e[5], s = e[6], l = e[7], c = e[8], u = e[9], f = e[10], h = e[11]; e !== t && ((t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), (t[3] = e[3]), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15])); return ( (t[4] = a * i + c * n), (t[5] = o * i + u * n), (t[6] = s * i + f * n), (t[7] = l * i + h * n), (t[8] = c * i - a * n), (t[9] = u * i - o * n), (t[10] = f * i - s * n), (t[11] = h * i - l * n), t ); }; }, {}, ], 105: [ function (t, e, r) { e.exports = function (t, e, r) { var n = Math.sin(r), i = Math.cos(r), a = e[0], o = e[1], s = e[2], l = e[3], c = e[8], u = e[9], f = e[10], h = e[11]; e !== t && ((t[4] = e[4]), (t[5] = e[5]), (t[6] = e[6]), (t[7] = e[7]), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15])); return ( (t[0] = a * i - c * n), (t[1] = o * i - u * n), (t[2] = s * i - f * n), (t[3] = l * i - h * n), (t[8] = a * n + c * i), (t[9] = o * n + u * i), (t[10] = s * n + f * i), (t[11] = l * n + h * i), t ); }; }, {}, ], 106: [ function (t, e, r) { e.exports = function (t, e, r) { var n = Math.sin(r), i = Math.cos(r), a = e[0], o = e[1], s = e[2], l = e[3], c = e[4], u = e[5], f = e[6], h = e[7]; e !== t && ((t[8] = e[8]), (t[9] = e[9]), (t[10] = e[10]), (t[11] = e[11]), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15])); return ( (t[0] = a * i + c * n), (t[1] = o * i + u * n), (t[2] = s * i + f * n), (t[3] = l * i + h * n), (t[4] = c * i - a * n), (t[5] = u * i - o * n), (t[6] = f * i - s * n), (t[7] = h * i - l * n), t ); }; }, {}, ], 107: [ function (t, e, r) { e.exports = function (t, e, r) { var n = r[0], i = r[1], a = r[2]; return ( (t[0] = e[0] * n), (t[1] = e[1] * n), (t[2] = e[2] * n), (t[3] = e[3] * n), (t[4] = e[4] * i), (t[5] = e[5] * i), (t[6] = e[6] * i), (t[7] = e[7] * i), (t[8] = e[8] * a), (t[9] = e[9] * a), (t[10] = e[10] * a), (t[11] = e[11] * a), (t[12] = e[12]), (t[13] = e[13]), (t[14] = e[14]), (t[15] = e[15]), t ); }; }, {}, ], 108: [ function (t, e, r) { e.exports = function (t, e, r) { var n, i, a, o, s, l, c, u, f, h, p, d, m = r[0], g = r[1], v = r[2]; e === t ? ((t[12] = e[0] * m + e[4] * g + e[8] * v + e[12]), (t[13] = e[1] * m + e[5] * g + e[9] * v + e[13]), (t[14] = e[2] * m + e[6] * g + e[10] * v + e[14]), (t[15] = e[3] * m + e[7] * g + e[11] * v + e[15])) : ((n = e[0]), (i = e[1]), (a = e[2]), (o = e[3]), (s = e[4]), (l = e[5]), (c = e[6]), (u = e[7]), (f = e[8]), (h = e[9]), (p = e[10]), (d = e[11]), (t[0] = n), (t[1] = i), (t[2] = a), (t[3] = o), (t[4] = s), (t[5] = l), (t[6] = c), (t[7] = u), (t[8] = f), (t[9] = h), (t[10] = p), (t[11] = d), (t[12] = n * m + s * g + f * v + e[12]), (t[13] = i * m + l * g + h * v + e[13]), (t[14] = a * m + c * g + p * v + e[14]), (t[15] = o * m + u * g + d * v + e[15])); return t; }; }, {}, ], 109: [ function (t, e, r) { e.exports = function (t, e) { if (t === e) { var r = e[1], n = e[2], i = e[3], a = e[6], o = e[7], s = e[11]; (t[1] = e[4]), (t[2] = e[8]), (t[3] = e[12]), (t[4] = r), (t[6] = e[9]), (t[7] = e[13]), (t[8] = n), (t[9] = a), (t[11] = e[14]), (t[12] = i), (t[13] = o), (t[14] = s); } else (t[0] = e[0]), (t[1] = e[4]), (t[2] = e[8]), (t[3] = e[12]), (t[4] = e[1]), (t[5] = e[5]), (t[6] = e[9]), (t[7] = e[13]), (t[8] = e[2]), (t[9] = e[6]), (t[10] = e[10]), (t[11] = e[14]), (t[12] = e[3]), (t[13] = e[7]), (t[14] = e[11]), (t[15] = e[15]); return t; }; }, {}, ], 110: [ function (t, e, r) { "use strict"; var n = t("barycentric"), i = t( "polytope-closest-point/lib/closest_point_2d.js", ); function a(t, e) { for (var r = [0, 0, 0, 0], n = 0; n < 4; ++n) for (var i = 0; i < 4; ++i) r[i] += t[4 * n + i] * e[n]; return r; } function o(t, e, r, n, i) { for ( var o = a( n, a(r, a(e, [t[0], t[1], t[2], 1])), ), s = 0; s < 3; ++s ) o[s] /= o[3]; return [ 0.5 * i[0] * (1 + o[0]), 0.5 * i[1] * (1 - o[1]), ]; } function s(t, e) { for ( var r = [0, 0, 0], n = 0; n < t.length; ++n ) for ( var i = t[n], a = e[n], o = 0; o < 3; ++o ) r[o] += a * i[o]; return r; } e.exports = function (t, e, r, a, l, c) { if (1 === t.length) return [0, t[0].slice()]; for ( var u = new Array(t.length), f = 0; f < t.length; ++f ) u[f] = o(t[f], r, a, l, c); var h = 0, p = 1 / 0; for (f = 0; f < u.length; ++f) { for (var d = 0, m = 0; m < 2; ++m) d += Math.pow(u[f][m] - e[m], 2); d < p && ((p = d), (h = f)); } var g = (function (t, e) { if (2 === t.length) { for ( var r = 0, a = 0, o = 0; o < 2; ++o ) (r += Math.pow(e[o] - t[0][o], 2)), (a += Math.pow(e[o] - t[1][o], 2)); return ( (r = Math.sqrt(r)), (a = Math.sqrt(a)), r + a < 1e-6 ? [1, 0] : [a / (r + a), r / (a + r)] ); } if (3 === t.length) { var s = [0, 0]; return ( i(t[0], t[1], t[2], e, s), n(t, s) ); } return []; })(u, e), v = 0; for (f = 0; f < 3; ++f) { if (g[f] < -0.001 || g[f] > 1.0001) return null; v += g[f]; } if (Math.abs(v - 1) > 0.001) return null; return [h, s(t, g), g]; }; }, { barycentric: 14, "polytope-closest-point/lib/closest_point_2d.js": 270, }, ], 111: [ function (t, e, r) { var n = t("glslify"), i = n([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position, normal;\nattribute vec4 color;\nattribute vec2 uv;\n\nuniform mat4 model\n , view\n , projection\n , inverseModel;\nuniform vec3 eyePosition\n , lightPosition;\n\nvarying vec3 f_normal\n , f_lightDirection\n , f_eyeDirection\n , f_data;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvec4 project(vec3 p) {\n return projection * view * model * vec4(p, 1.0);\n}\n\nvoid main() {\n gl_Position = project(position);\n\n //Lighting geometry parameters\n vec4 cameraCoordinate = view * vec4(position , 1.0);\n cameraCoordinate.xyz /= cameraCoordinate.w;\n f_lightDirection = lightPosition - cameraCoordinate.xyz;\n f_eyeDirection = eyePosition - cameraCoordinate.xyz;\n f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\n\n f_color = color;\n f_data = position;\n f_uv = uv;\n}\n", ]), a = n([ "#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n#define GLSLIFY 1\n\nfloat beckmannDistribution(float x, float roughness) {\n float NdotH = max(x, 0.0001);\n float cos2Alpha = NdotH * NdotH;\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\n float roughness2 = roughness * roughness;\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\n return exp(tan2Alpha / roughness2) / denom;\n}\n\nfloat cookTorranceSpecular(\n vec3 lightDirection,\n vec3 viewDirection,\n vec3 surfaceNormal,\n float roughness,\n float fresnel) {\n\n float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\n float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\n\n //Half angle vector\n vec3 H = normalize(lightDirection + viewDirection);\n\n //Geometric term\n float NdotH = max(dot(surfaceNormal, H), 0.0);\n float VdotH = max(dot(viewDirection, H), 0.000001);\n float LdotH = max(dot(lightDirection, H), 0.000001);\n float G1 = (2.0 * NdotH * VdotN) / VdotH;\n float G2 = (2.0 * NdotH * LdotN) / LdotH;\n float G = min(1.0, min(G1, G2));\n \n //Distribution term\n float D = beckmannDistribution(NdotH, roughness);\n\n //Fresnel term\n float F = pow(1.0 - VdotN, fresnel);\n\n //Multiply terms and done\n return G * F * D / max(3.14159265 * VdotN, 0.000001);\n}\n\n//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float roughness\n , fresnel\n , kambient\n , kdiffuse\n , kspecular;\nuniform sampler2D texture;\n\nvarying vec3 f_normal\n , f_lightDirection\n , f_eyeDirection\n , f_data;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (f_color.a == 0.0 ||\n outOfRange(clipBounds[0], clipBounds[1], f_data)\n ) discard;\n\n vec3 N = normalize(f_normal);\n vec3 L = normalize(f_lightDirection);\n vec3 V = normalize(f_eyeDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\n //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d\n\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv);\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = litColor * f_color.a;\n}\n", ]), o = n([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 uv;\n\nuniform mat4 model, view, projection;\n\nvarying vec4 f_color;\nvarying vec3 f_data;\nvarying vec2 f_uv;\n\nvoid main() {\n gl_Position = projection * view * model * vec4(position, 1.0);\n f_color = color;\n f_data = position;\n f_uv = uv;\n}", ]), s = n([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform sampler2D texture;\nuniform float opacity;\n\nvarying vec4 f_color;\nvarying vec3 f_data;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard;\n\n gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\n}", ]), l = n([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 uv;\nattribute float pointSize;\n\nuniform mat4 model, view, projection;\nuniform vec3 clipBounds[2];\n\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0);\n } else {\n gl_Position = projection * view * model * vec4(position, 1.0);\n }\n gl_PointSize = pointSize;\n f_color = color;\n f_uv = uv;\n}", ]), c = n([ "precision highp float;\n#define GLSLIFY 1\n\nuniform sampler2D texture;\nuniform float opacity;\n\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5);\n if(dot(pointR, pointR) > 0.25) {\n discard;\n }\n gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\n}", ]), u = n([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n gl_Position = projection * view * model * vec4(position, 1.0);\n f_id = id;\n f_position = position;\n}", ]), f = n([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n\n gl_FragColor = vec4(pickId, f_id.xyz);\n}", ]), h = n([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute float pointSize;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform vec3 clipBounds[2];\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\n } else {\n gl_Position = projection * view * model * vec4(position, 1.0);\n gl_PointSize = pointSize;\n }\n f_id = id;\n f_position = position;\n}", ]), p = n([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\n\nuniform mat4 model, view, projection;\n\nvoid main() {\n gl_Position = projection * view * model * vec4(position, 1.0);\n}", ]), d = n([ "precision highp float;\n#define GLSLIFY 1\n\nuniform vec3 contourColor;\n\nvoid main() {\n gl_FragColor = vec4(contourColor, 1.0);\n}\n", ]); (r.meshShader = { vertex: i, fragment: a, attributes: [ { name: "position", type: "vec3" }, { name: "normal", type: "vec3" }, { name: "color", type: "vec4" }, { name: "uv", type: "vec2" }, ], }), (r.wireShader = { vertex: o, fragment: s, attributes: [ { name: "position", type: "vec3" }, { name: "color", type: "vec4" }, { name: "uv", type: "vec2" }, ], }), (r.pointShader = { vertex: l, fragment: c, attributes: [ { name: "position", type: "vec3" }, { name: "color", type: "vec4" }, { name: "uv", type: "vec2" }, { name: "pointSize", type: "float" }, ], }), (r.pickShader = { vertex: u, fragment: f, attributes: [ { name: "position", type: "vec3" }, { name: "id", type: "vec4" }, ], }), (r.pointPickShader = { vertex: h, fragment: f, attributes: [ { name: "position", type: "vec3" }, { name: "pointSize", type: "float" }, { name: "id", type: "vec4" }, ], }), (r.contourShader = { vertex: p, fragment: d, attributes: [ { name: "position", type: "vec3" }, ], }); }, { glslify: 231 }, ], 112: [ function (t, e, r) { "use strict"; var n = t("gl-shader"), i = t("gl-buffer"), a = t("gl-vao"), o = t("gl-texture2d"), s = t("normals"), l = t("gl-mat4/multiply"), c = t("gl-mat4/invert"), u = t("ndarray"), f = t("colormap"), h = t("simplicial-complex-contour"), p = t("typedarray-pool"), d = t("./lib/shaders"), m = t("./lib/closest-point"), g = d.meshShader, v = d.wireShader, y = d.pointShader, x = d.pickShader, b = d.pointPickShader, _ = d.contourShader, w = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ]; function T( t, e, r, n, i, a, o, s, l, c, u, f, h, p, d, m, g, v, y, x, b, _, T, k, A, M, S, ) { (this.gl = t), (this.pixelRatio = 1), (this.cells = []), (this.positions = []), (this.intensity = []), (this.texture = e), (this.dirty = !0), (this.triShader = r), (this.lineShader = n), (this.pointShader = i), (this.pickShader = a), (this.pointPickShader = o), (this.contourShader = s), (this.trianglePositions = l), (this.triangleColors = u), (this.triangleNormals = h), (this.triangleUVs = f), (this.triangleIds = c), (this.triangleVAO = p), (this.triangleCount = 0), (this.lineWidth = 1), (this.edgePositions = d), (this.edgeColors = g), (this.edgeUVs = v), (this.edgeIds = m), (this.edgeVAO = y), (this.edgeCount = 0), (this.pointPositions = x), (this.pointColors = _), (this.pointUVs = T), (this.pointSizes = k), (this.pointIds = b), (this.pointVAO = A), (this.pointCount = 0), (this.contourLineWidth = 1), (this.contourPositions = M), (this.contourVAO = S), (this.contourCount = 0), (this.contourColor = [0, 0, 0]), (this.contourEnable = !0), (this.pickVertex = !0), (this.pickId = 1), (this.bounds = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ]), (this.clipBounds = [ [-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0], ]), (this.lightPosition = [1e5, 1e5, 0]), (this.ambientLight = 0.8), (this.diffuseLight = 0.8), (this.specularLight = 2), (this.roughness = 0.5), (this.fresnel = 1.5), (this.opacity = 1), (this.hasAlpha = !1), (this.opacityscale = !1), (this._model = w), (this._view = w), (this._projection = w), (this._resolution = [1, 1]); } var k = T.prototype; function A(t, e) { if (!e) return 1; if (!e.length) return 1; for (var r = 0; r < e.length; ++r) { if (e.length < 2) return 1; if (e[r][0] === t) return e[r][1]; if (e[r][0] > t && r > 0) { var n = (e[r][0] - t) / (e[r][0] - e[r - 1][0]); return ( e[r][1] * (1 - n) + n * e[r - 1][1] ); } } return 1; } function M(t) { var e = n(t, g.vertex, g.fragment); return ( (e.attributes.position.location = 0), (e.attributes.color.location = 2), (e.attributes.uv.location = 3), (e.attributes.normal.location = 4), e ); } function S(t) { var e = n(t, v.vertex, v.fragment); return ( (e.attributes.position.location = 0), (e.attributes.color.location = 2), (e.attributes.uv.location = 3), e ); } function E(t) { var e = n(t, y.vertex, y.fragment); return ( (e.attributes.position.location = 0), (e.attributes.color.location = 2), (e.attributes.uv.location = 3), (e.attributes.pointSize.location = 4), e ); } function L(t) { var e = n(t, x.vertex, x.fragment); return ( (e.attributes.position.location = 0), (e.attributes.id.location = 1), e ); } function C(t) { var e = n(t, b.vertex, b.fragment); return ( (e.attributes.position.location = 0), (e.attributes.id.location = 1), (e.attributes.pointSize.location = 4), e ); } function P(t) { var e = n(t, _.vertex, _.fragment); return ( (e.attributes.position.location = 0), e ); } (k.isOpaque = function () { return !this.hasAlpha; }), (k.isTransparent = function () { return this.hasAlpha; }), (k.pickSlots = 1), (k.setPickBase = function (t) { this.pickId = t; }), (k.highlight = function (t) { if (t && this.contourEnable) { for ( var e = h( this.cells, this.intensity, t.intensity, ), r = e.cells, n = e.vertexIds, i = e.vertexWeights, a = r.length, o = p.mallocFloat32(6 * a), s = 0, l = 0; l < a; ++l ) for (var c = r[l], u = 0; u < 2; ++u) { var f = c[0]; 2 === c.length && (f = c[u]); for ( var d = n[f][0], m = n[f][1], g = i[f], v = 1 - g, y = this.positions[d], x = this.positions[m], b = 0; b < 3; ++b ) o[s++] = g * y[b] + v * x[b]; } (this.contourCount = (s / 3) | 0), this.contourPositions.update( o.subarray(0, s), ), p.free(o); } else this.contourCount = 0; }), (k.update = function (t) { t = t || {}; var e = this.gl; (this.dirty = !0), "contourEnable" in t && (this.contourEnable = t.contourEnable), "contourColor" in t && (this.contourColor = t.contourColor), "lineWidth" in t && (this.lineWidth = t.lineWidth), "lightPosition" in t && (this.lightPosition = t.lightPosition), (this.hasAlpha = !1), "opacity" in t && ((this.opacity = t.opacity), this.opacity < 1 && (this.hasAlpha = !0)), "opacityscale" in t && ((this.opacityscale = t.opacityscale), (this.hasAlpha = !0)), "ambient" in t && (this.ambientLight = t.ambient), "diffuse" in t && (this.diffuseLight = t.diffuse), "specular" in t && (this.specularLight = t.specular), "roughness" in t && (this.roughness = t.roughness), "fresnel" in t && (this.fresnel = t.fresnel), t.texture ? (this.texture.dispose(), (this.texture = o(e, t.texture))) : t.colormap && ((this.texture.shape = [256, 256]), (this.texture.minFilter = e.LINEAR_MIPMAP_LINEAR), (this.texture.magFilter = e.LINEAR), this.texture.setPixels( (function (t, e) { for ( var r = f({ colormap: t, nshades: 256, format: "rgba", }), n = new Uint8Array(1024), i = 0; i < 256; ++i ) { for ( var a = r[i], o = 0; o < 3; ++o ) n[4 * i + o] = a[o]; n[4 * i + 3] = e ? 255 * A(i / 255, e) : 255 * a[3]; } return u( n, [256, 256, 4], [4, 0, 1], ); })(t.colormap, this.opacityscale), ), this.texture.generateMipmap()); var r = t.cells, n = t.positions; if (n && r) { var i = [], a = [], l = [], c = [], h = [], p = [], d = [], m = [], g = [], v = [], y = [], x = [], b = [], _ = []; (this.cells = r), (this.positions = n); var w = t.vertexNormals, T = t.cellNormals, k = void 0 === t.vertexNormalsEpsilon ? 1e-6 : t.vertexNormalsEpsilon, M = void 0 === t.faceNormalsEpsilon ? 1e-6 : t.faceNormalsEpsilon; t.useFacetNormals && !T && (T = s.faceNormals(r, n, M)), T || w || (w = s.vertexNormals(r, n, k)); var S = t.vertexColors, E = t.cellColors, L = t.meshColor || [1, 1, 1, 1], C = t.vertexUVs, P = t.vertexIntensity, I = t.cellUVs, O = t.cellIntensity, z = 1 / 0, D = -1 / 0; if (!C && !I) if (P) if (t.vertexIntensityBounds) (z = +t.vertexIntensityBounds[0]), (D = +t.vertexIntensityBounds[1]); else for (var R = 0; R < P.length; ++R) { var F = P[R]; (z = Math.min(z, F)), (D = Math.max(D, F)); } else if (O) if (t.cellIntensityBounds) (z = +t.cellIntensityBounds[0]), (D = +t.cellIntensityBounds[1]); else for (R = 0; R < O.length; ++R) { F = O[R]; (z = Math.min(z, F)), (D = Math.max(D, F)); } else for (R = 0; R < n.length; ++R) { F = n[R][2]; (z = Math.min(z, F)), (D = Math.max(D, F)); } (this.intensity = P || O || (function (t) { for ( var e = t.length, r = new Array(e), n = 0; n < e; ++n ) r[n] = t[n][2]; return r; })(n)), (this.pickVertex = !(O || E)); var B = t.pointSizes, N = t.pointSize || 1; this.bounds = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ]; for (R = 0; R < n.length; ++R) for (var j = n[R], U = 0; U < 3; ++U) !isNaN(j[U]) && isFinite(j[U]) && ((this.bounds[0][U] = Math.min( this.bounds[0][U], j[U], )), (this.bounds[1][U] = Math.max( this.bounds[1][U], j[U], ))); var V = 0, H = 0, q = 0; t: for (R = 0; R < r.length; ++R) { var G = r[R]; switch (G.length) { case 1: for ( j = n[(W = G[0])], U = 0; U < 3; ++U ) if ( isNaN(j[U]) || !isFinite(j[U]) ) continue t; v.push(j[0], j[1], j[2]), (Z = S ? S[W] : E ? E[R] : L), this.opacityscale && P ? a.push( Z[0], Z[1], Z[2], this.opacity * A( (P[W] - z) / (D - z), this.opacityscale, ), ) : 3 === Z.length ? y.push( Z[0], Z[1], Z[2], this.opacity, ) : (y.push( Z[0], Z[1], Z[2], Z[3] * this.opacity, ), Z[3] < 1 && (this.hasAlpha = !0)), (X = C ? C[W] : P ? [(P[W] - z) / (D - z), 0] : I ? I[R] : O ? [ (O[R] - z) / (D - z), 0, ] : [ (j[2] - z) / (D - z), 0, ]), x.push(X[0], X[1]), B ? b.push(B[W]) : b.push(N), _.push(R), (q += 1); break; case 2: for (U = 0; U < 2; ++U) { j = n[(W = G[U])]; for (var Y = 0; Y < 3; ++Y) if ( isNaN(j[Y]) || !isFinite(j[Y]) ) continue t; } for (U = 0; U < 2; ++U) { j = n[(W = G[U])]; p.push(j[0], j[1], j[2]), (Z = S ? S[W] : E ? E[R] : L), this.opacityscale && P ? a.push( Z[0], Z[1], Z[2], this.opacity * A( (P[W] - z) / (D - z), this.opacityscale, ), ) : 3 === Z.length ? d.push( Z[0], Z[1], Z[2], this.opacity, ) : (d.push( Z[0], Z[1], Z[2], Z[3] * this.opacity, ), Z[3] < 1 && (this.hasAlpha = !0)), (X = C ? C[W] : P ? [(P[W] - z) / (D - z), 0] : I ? I[R] : O ? [ (O[R] - z) / (D - z), 0, ] : [ (j[2] - z) / (D - z), 0, ]), m.push(X[0], X[1]), g.push(R); } H += 1; break; case 3: for (U = 0; U < 3; ++U) for ( j = n[(W = G[U])], Y = 0; Y < 3; ++Y ) if ( isNaN(j[Y]) || !isFinite(j[Y]) ) continue t; for (U = 0; U < 3; ++U) { var W, Z, X, J; j = n[(W = G[2 - U])]; i.push(j[0], j[1], j[2]), (Z = S ? S[W] : E ? E[R] : L) ? this.opacityscale && P ? a.push( Z[0], Z[1], Z[2], this.opacity * A( (P[W] - z) / (D - z), this.opacityscale, ), ) : 3 === Z.length ? a.push( Z[0], Z[1], Z[2], this.opacity, ) : (a.push( Z[0], Z[1], Z[2], Z[3] * this.opacity, ), Z[3] < 1 && (this.hasAlpha = !0)) : a.push(0.5, 0.5, 0.5, 1), (X = C ? C[W] : P ? [(P[W] - z) / (D - z), 0] : I ? I[R] : O ? [ (O[R] - z) / (D - z), 0, ] : [ (j[2] - z) / (D - z), 0, ]), c.push(X[0], X[1]), (J = w ? w[W] : T[R]), l.push(J[0], J[1], J[2]), h.push(R); } V += 1; } } (this.pointCount = q), (this.edgeCount = H), (this.triangleCount = V), this.pointPositions.update(v), this.pointColors.update(y), this.pointUVs.update(x), this.pointSizes.update(b), this.pointIds.update( new Uint32Array(_), ), this.edgePositions.update(p), this.edgeColors.update(d), this.edgeUVs.update(m), this.edgeIds.update(new Uint32Array(g)), this.trianglePositions.update(i), this.triangleColors.update(a), this.triangleUVs.update(c), this.triangleNormals.update(l), this.triangleIds.update( new Uint32Array(h), ); } }), (k.drawTransparent = k.draw = function (t) { t = t || {}; for ( var e = this.gl, r = t.model || w, n = t.view || w, i = t.projection || w, a = [ [-1e6, -1e6, -1e6], [1e6, 1e6, 1e6], ], o = 0; o < 3; ++o ) (a[0][o] = Math.max( a[0][o], this.clipBounds[0][o], )), (a[1][o] = Math.min( a[1][o], this.clipBounds[1][o], )); var s = { model: r, view: n, projection: i, inverseModel: w.slice(), clipBounds: a, kambient: this.ambientLight, kdiffuse: this.diffuseLight, kspecular: this.specularLight, roughness: this.roughness, fresnel: this.fresnel, eyePosition: [0, 0, 0], lightPosition: [0, 0, 0], contourColor: this.contourColor, texture: 0, }; (s.inverseModel = c( s.inverseModel, s.model, )), e.disable(e.CULL_FACE), this.texture.bind(0); var u = new Array(16); l(u, s.view, s.model), l(u, s.projection, u), c(u, u); for (o = 0; o < 3; ++o) s.eyePosition[o] = u[12 + o] / u[15]; var f, h = u[15]; for (o = 0; o < 3; ++o) h += this.lightPosition[o] * u[4 * o + 3]; for (o = 0; o < 3; ++o) { for ( var p = u[12 + o], d = 0; d < 3; ++d ) p += u[4 * d + o] * this.lightPosition[d]; s.lightPosition[o] = p / h; } this.triangleCount > 0 && ((f = this.triShader).bind(), (f.uniforms = s), this.triangleVAO.bind(), e.drawArrays( e.TRIANGLES, 0, 3 * this.triangleCount, ), this.triangleVAO.unbind()); this.edgeCount > 0 && this.lineWidth > 0 && ((f = this.lineShader).bind(), (f.uniforms = s), this.edgeVAO.bind(), e.lineWidth( this.lineWidth * this.pixelRatio, ), e.drawArrays( e.LINES, 0, 2 * this.edgeCount, ), this.edgeVAO.unbind()); this.pointCount > 0 && ((f = this.pointShader).bind(), (f.uniforms = s), this.pointVAO.bind(), e.drawArrays( e.POINTS, 0, this.pointCount, ), this.pointVAO.unbind()); this.contourEnable && this.contourCount > 0 && this.contourLineWidth > 0 && ((f = this.contourShader).bind(), (f.uniforms = s), this.contourVAO.bind(), e.drawArrays( e.LINES, 0, this.contourCount, ), this.contourVAO.unbind()); }), (k.drawPick = function (t) { t = t || {}; for ( var e = this.gl, r = t.model || w, n = t.view || w, i = t.projection || w, a = [ [-1e6, -1e6, -1e6], [1e6, 1e6, 1e6], ], o = 0; o < 3; ++o ) (a[0][o] = Math.max( a[0][o], this.clipBounds[0][o], )), (a[1][o] = Math.min( a[1][o], this.clipBounds[1][o], )); (this._model = [].slice.call(r)), (this._view = [].slice.call(n)), (this._projection = [].slice.call(i)), (this._resolution = [ e.drawingBufferWidth, e.drawingBufferHeight, ]); var s, l = { model: r, view: n, projection: i, clipBounds: a, pickId: this.pickId / 255, }; ((s = this.pickShader).bind(), (s.uniforms = l), this.triangleCount > 0 && (this.triangleVAO.bind(), e.drawArrays( e.TRIANGLES, 0, 3 * this.triangleCount, ), this.triangleVAO.unbind()), this.edgeCount > 0 && (this.edgeVAO.bind(), e.lineWidth( this.lineWidth * this.pixelRatio, ), e.drawArrays( e.LINES, 0, 2 * this.edgeCount, ), this.edgeVAO.unbind()), this.pointCount > 0) && ((s = this.pointPickShader).bind(), (s.uniforms = l), this.pointVAO.bind(), e.drawArrays( e.POINTS, 0, this.pointCount, ), this.pointVAO.unbind()); }), (k.pick = function (t) { if (!t) return null; if (t.id !== this.pickId) return null; for ( var e = t.value[0] + 256 * t.value[1] + 65536 * t.value[2], r = this.cells[e], n = this.positions, i = new Array(r.length), a = 0; a < r.length; ++a ) i[a] = n[r[a]]; var o = t.coord[0], s = t.coord[1]; if (!this.pickVertex) { var l = this.positions[r[0]], c = this.positions[r[1]], u = this.positions[r[2]], f = [ (l[0] + c[0] + u[0]) / 3, (l[1] + c[1] + u[1]) / 3, (l[2] + c[2] + u[2]) / 3, ]; return { _cellCenter: !0, position: [o, s], index: e, cell: r, cellId: e, intensity: this.intensity[e], dataCoordinate: f, }; } var h = m( i, [ o * this.pixelRatio, this._resolution[1] - s * this.pixelRatio, ], this._model, this._view, this._projection, this._resolution, ); if (!h) return null; var p = h[2], d = 0; for (a = 0; a < r.length; ++a) d += p[a] * this.intensity[r[a]]; return { position: h[1], index: r[h[0]], cell: r, cellId: e, intensity: d, dataCoordinate: this.positions[r[h[0]]], }; }), (k.dispose = function () { this.texture.dispose(), this.triShader.dispose(), this.lineShader.dispose(), this.pointShader.dispose(), this.pickShader.dispose(), this.pointPickShader.dispose(), this.triangleVAO.dispose(), this.trianglePositions.dispose(), this.triangleColors.dispose(), this.triangleUVs.dispose(), this.triangleNormals.dispose(), this.triangleIds.dispose(), this.edgeVAO.dispose(), this.edgePositions.dispose(), this.edgeColors.dispose(), this.edgeUVs.dispose(), this.edgeIds.dispose(), this.pointVAO.dispose(), this.pointPositions.dispose(), this.pointColors.dispose(), this.pointUVs.dispose(), this.pointSizes.dispose(), this.pointIds.dispose(), this.contourVAO.dispose(), this.contourPositions.dispose(), this.contourShader.dispose(); }), (e.exports = function (t, e) { 1 === arguments.length && (t = (e = t).gl); var r = t.getExtension( "OES_standard_derivatives", ) || t.getExtension( "MOZ_OES_standard_derivatives", ) || t.getExtension( "WEBKIT_OES_standard_derivatives", ); if (!r) throw new Error( "derivatives not supported", ); var n = M(t), s = S(t), l = E(t), c = L(t), f = C(t), h = P(t), p = o( t, u( new Uint8Array([255, 255, 255, 255]), [1, 1, 4], ), ); p.generateMipmap(), (p.minFilter = t.LINEAR_MIPMAP_LINEAR), (p.magFilter = t.LINEAR); var d = i(t), m = i(t), g = i(t), v = i(t), y = i(t), x = a(t, [ { buffer: d, type: t.FLOAT, size: 3 }, { buffer: y, type: t.UNSIGNED_BYTE, size: 4, normalized: !0, }, { buffer: m, type: t.FLOAT, size: 4 }, { buffer: g, type: t.FLOAT, size: 2 }, { buffer: v, type: t.FLOAT, size: 3 }, ]), b = i(t), _ = i(t), w = i(t), k = i(t), A = a(t, [ { buffer: b, type: t.FLOAT, size: 3 }, { buffer: k, type: t.UNSIGNED_BYTE, size: 4, normalized: !0, }, { buffer: _, type: t.FLOAT, size: 4 }, { buffer: w, type: t.FLOAT, size: 2 }, ]), I = i(t), O = i(t), z = i(t), D = i(t), R = i(t), F = a(t, [ { buffer: I, type: t.FLOAT, size: 3 }, { buffer: R, type: t.UNSIGNED_BYTE, size: 4, normalized: !0, }, { buffer: O, type: t.FLOAT, size: 4 }, { buffer: z, type: t.FLOAT, size: 2 }, { buffer: D, type: t.FLOAT, size: 1 }, ]), B = i(t), N = a(t, [ { buffer: B, type: t.FLOAT, size: 3 }, ]), j = new T( t, p, n, s, l, c, f, h, d, y, m, g, v, x, b, k, _, w, A, I, R, O, z, D, F, B, N, ); return j.update(e), j; }); }, { "./lib/closest-point": 110, "./lib/shaders": 111, colormap: 53, "gl-buffer": 78, "gl-mat4/invert": 98, "gl-mat4/multiply": 100, "gl-shader": 132, "gl-texture2d": 146, "gl-vao": 150, ndarray: 259, normals: 261, "simplicial-complex-contour": 291, "typedarray-pool": 308, }, ], 113: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.gl, r = n(e, [0, 0, 0, 1, 1, 0, 1, 1]), s = i(e, a.boxVert, a.lineFrag); return new o(t, r, s); }; var n = t("gl-buffer"), i = t("gl-shader"), a = t("./shaders"); function o(t, e, r) { (this.plot = t), (this.vbo = e), (this.shader = r); } var s, l, c = o.prototype; (c.bind = function () { var t = this.shader; this.vbo.bind(), this.shader.bind(), t.attributes.coord.pointer(), (t.uniforms.screenBox = this.plot.screenBox); }), (c.drawBox = ((s = [0, 0]), (l = [0, 0]), function (t, e, r, n, i) { var a = this.plot, o = this.shader, c = a.gl; (s[0] = t), (s[1] = e), (l[0] = r), (l[1] = n), (o.uniforms.lo = s), (o.uniforms.hi = l), (o.uniforms.color = i), c.drawArrays(c.TRIANGLE_STRIP, 0, 4); })), (c.dispose = function () { this.vbo.dispose(), this.shader.dispose(); }); }, { "./shaders": 116, "gl-buffer": 78, "gl-shader": 132, }, ], 114: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.gl, r = n(e), a = i(e, o.gridVert, o.gridFrag), l = i(e, o.tickVert, o.gridFrag); return new s(t, r, a, l); }; var n = t("gl-buffer"), i = t("gl-shader"), a = t("binary-search-bounds"), o = t("./shaders"); function s(t, e, r, n) { (this.plot = t), (this.vbo = e), (this.shader = r), (this.tickShader = n), (this.ticks = [[], []]); } function l(t, e) { return t - e; } var c, u, f, h, p, d = s.prototype; (d.draw = ((c = [0, 0]), (u = [0, 0]), (f = [0, 0]), function () { for ( var t = this.plot, e = this.vbo, r = this.shader, n = this.ticks, i = t.gl, a = t._tickBounds, o = t.dataBox, s = t.viewBox, l = t.gridLineWidth, h = t.gridLineColor, p = t.gridLineEnable, d = t.pixelRatio, m = 0; m < 2; ++m ) { var g = a[m], v = a[m + 2] - g, y = 0.5 * (o[m + 2] + o[m]), x = o[m + 2] - o[m]; (u[m] = (2 * v) / x), (c[m] = (2 * (g - y)) / x); } r.bind(), e.bind(), r.attributes.dataCoord.pointer(), (r.uniforms.dataShift = c), (r.uniforms.dataScale = u); var b = 0; for (m = 0; m < 2; ++m) { (f[0] = f[1] = 0), (f[m] = 1), (r.uniforms.dataAxis = f), (r.uniforms.lineWidth = (l[m] / (s[m + 2] - s[m])) * d), (r.uniforms.color = h[m]); var _ = 6 * n[m].length; p[m] && _ && i.drawArrays(i.TRIANGLES, b, _), (b += _); } })), (d.drawTickMarks = (function () { var t = [0, 0], e = [0, 0], r = [1, 0], n = [0, 1], i = [0, 0], o = [0, 0]; return function () { for ( var s = this.plot, c = this.vbo, u = this.tickShader, f = this.ticks, h = s.gl, p = s._tickBounds, d = s.dataBox, m = s.viewBox, g = s.pixelRatio, v = s.screenBox, y = v[2] - v[0], x = v[3] - v[1], b = m[2] - m[0], _ = m[3] - m[1], w = 0; w < 2; ++w ) { var T = p[w], k = p[w + 2] - T, A = 0.5 * (d[w + 2] + d[w]), M = d[w + 2] - d[w]; (e[w] = (2 * k) / M), (t[w] = (2 * (T - A)) / M); } (e[0] *= b / y), (t[0] *= b / y), (e[1] *= _ / x), (t[1] *= _ / x), u.bind(), c.bind(), u.attributes.dataCoord.pointer(); var S = u.uniforms; (S.dataShift = t), (S.dataScale = e); var E = s.tickMarkLength, L = s.tickMarkWidth, C = s.tickMarkColor, P = 6 * f[0].length, I = Math.min( a.ge( f[0], (d[0] - p[0]) / (p[2] - p[0]), l, ), f[0].length, ), O = Math.min( a.gt( f[0], (d[2] - p[0]) / (p[2] - p[0]), l, ), f[0].length, ), z = 0 + 6 * I, D = 6 * Math.max(0, O - I), R = Math.min( a.ge( f[1], (d[1] - p[1]) / (p[3] - p[1]), l, ), f[1].length, ), F = Math.min( a.gt( f[1], (d[3] - p[1]) / (p[3] - p[1]), l, ), f[1].length, ), B = P + 6 * R, N = 6 * Math.max(0, F - R); (i[0] = (2 * (m[0] - E[1])) / y - 1), (i[1] = (m[3] + m[1]) / x - 1), (o[0] = (E[1] * g) / y), (o[1] = (L[1] * g) / x), N && ((S.color = C[1]), (S.tickScale = o), (S.dataAxis = n), (S.screenOffset = i), h.drawArrays(h.TRIANGLES, B, N)), (i[0] = (m[2] + m[0]) / y - 1), (i[1] = (2 * (m[1] - E[0])) / x - 1), (o[0] = (L[0] * g) / y), (o[1] = (E[0] * g) / x), D && ((S.color = C[0]), (S.tickScale = o), (S.dataAxis = r), (S.screenOffset = i), h.drawArrays(h.TRIANGLES, z, D)), (i[0] = (2 * (m[2] + E[3])) / y - 1), (i[1] = (m[3] + m[1]) / x - 1), (o[0] = (E[3] * g) / y), (o[1] = (L[3] * g) / x), N && ((S.color = C[3]), (S.tickScale = o), (S.dataAxis = n), (S.screenOffset = i), h.drawArrays(h.TRIANGLES, B, N)), (i[0] = (m[2] + m[0]) / y - 1), (i[1] = (2 * (m[3] + E[2])) / x - 1), (o[0] = (L[2] * g) / y), (o[1] = (E[2] * g) / x), D && ((S.color = C[2]), (S.tickScale = o), (S.dataAxis = r), (S.screenOffset = i), h.drawArrays(h.TRIANGLES, z, D)); }; })()), (d.update = ((h = [1, 1, -1, -1, 1, -1]), (p = [1, -1, 1, 1, -1, -1]), function (t) { for ( var e = t.ticks, r = t.bounds, n = new Float32Array( 18 * (e[0].length + e[1].length), ), i = (this.plot.zeroLineEnable, 0), a = [[], []], o = 0; o < 2; ++o ) for ( var s = a[o], l = e[o], c = r[o], u = r[o + 2], f = 0; f < l.length; ++f ) { var d = (l[f].x - c) / (u - c); s.push(d); for (var m = 0; m < 6; ++m) (n[i++] = d), (n[i++] = h[m]), (n[i++] = p[m]); } (this.ticks = a), this.vbo.update(n); })), (d.dispose = function () { this.vbo.dispose(), this.shader.dispose(), this.tickShader.dispose(); }); }, { "./shaders": 116, "binary-search-bounds": 31, "gl-buffer": 78, "gl-shader": 132, }, ], 115: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.gl, r = n(e, [-1, -1, -1, 1, 1, -1, 1, 1]), s = i(e, a.lineVert, a.lineFrag); return new o(t, r, s); }; var n = t("gl-buffer"), i = t("gl-shader"), a = t("./shaders"); function o(t, e, r) { (this.plot = t), (this.vbo = e), (this.shader = r); } var s, l, c = o.prototype; (c.bind = function () { var t = this.shader; this.vbo.bind(), this.shader.bind(), t.attributes.coord.pointer(), (t.uniforms.screenBox = this.plot.screenBox); }), (c.drawLine = ((s = [0, 0]), (l = [0, 0]), function (t, e, r, n, i, a) { var o = this.plot, c = this.shader, u = o.gl; (s[0] = t), (s[1] = e), (l[0] = r), (l[1] = n), (c.uniforms.start = s), (c.uniforms.end = l), (c.uniforms.width = i * o.pixelRatio), (c.uniforms.color = a), u.drawArrays(u.TRIANGLE_STRIP, 0, 4); })), (c.dispose = function () { this.vbo.dispose(), this.shader.dispose(); }); }, { "./shaders": 116, "gl-buffer": 78, "gl-shader": 132, }, ], 116: [ function (t, e, r) { "use strict"; var n = t("glslify"), i = n([ "precision lowp float;\n#define GLSLIFY 1\nuniform vec4 color;\nvoid main() {\n gl_FragColor = vec4(color.xyz * color.w, color.w);\n}\n", ]); e.exports = { lineVert: n([ "precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 coord;\n\nuniform vec4 screenBox;\nuniform vec2 start, end;\nuniform float width;\n\nvec2 perp(vec2 v) {\n return vec2(v.y, -v.x);\n}\n\nvec2 screen(vec2 v) {\n return 2.0 * (v - screenBox.xy) / (screenBox.zw - screenBox.xy) - 1.0;\n}\n\nvoid main() {\n vec2 delta = normalize(perp(start - end));\n vec2 offset = mix(start, end, 0.5 * (coord.y+1.0));\n gl_Position = vec4(screen(offset + 0.5 * width * delta * coord.x), 0, 1);\n}\n", ]), lineFrag: i, textVert: n([ "#define GLSLIFY 1\nattribute vec3 textCoordinate;\n\nuniform vec2 dataScale, dataShift, dataAxis, screenOffset, textScale;\nuniform float angle;\n\nvoid main() {\n float dataOffset = textCoordinate.z;\n vec2 glyphOffset = textCoordinate.xy;\n mat2 glyphMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));\n vec2 screenCoordinate = dataAxis * (dataScale * dataOffset + dataShift) +\n glyphMatrix * glyphOffset * textScale + screenOffset;\n gl_Position = vec4(screenCoordinate, 0, 1);\n}\n", ]), textFrag: i, gridVert: n([ "precision mediump float;\n#define GLSLIFY 1\n\nattribute vec3 dataCoord;\n\nuniform vec2 dataAxis, dataShift, dataScale;\nuniform float lineWidth;\n\nvoid main() {\n vec2 pos = dataAxis * (dataScale * dataCoord.x + dataShift);\n pos += 10.0 * dataCoord.y * vec2(dataAxis.y, -dataAxis.x) + dataCoord.z * lineWidth;\n gl_Position = vec4(pos, 0, 1);\n}\n", ]), gridFrag: i, boxVert: n([ "precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 coord;\n\nuniform vec4 screenBox;\nuniform vec2 lo, hi;\n\nvec2 screen(vec2 v) {\n return 2.0 * (v - screenBox.xy) / (screenBox.zw - screenBox.xy) - 1.0;\n}\n\nvoid main() {\n gl_Position = vec4(screen(mix(lo, hi, coord)), 0, 1);\n}\n", ]), tickVert: n([ "precision mediump float;\n#define GLSLIFY 1\n\nattribute vec3 dataCoord;\n\nuniform vec2 dataAxis, dataShift, dataScale, screenOffset, tickScale;\n\nvoid main() {\n vec2 pos = dataAxis * (dataScale * dataCoord.x + dataShift);\n gl_Position = vec4(pos + tickScale*dataCoord.yz + screenOffset, 0, 1);\n}\n", ]), }; }, { glslify: 231 }, ], 117: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.gl, r = n(e), a = i(e, s.textVert, s.textFrag); return new l(t, r, a); }; var n = t("gl-buffer"), i = t("gl-shader"), a = t("text-cache"), o = t("binary-search-bounds"), s = t("./shaders"); function l(t, e, r) { (this.plot = t), (this.vbo = e), (this.shader = r), (this.tickOffset = [[], []]), (this.tickX = [[], []]), (this.labelOffset = [0, 0]), (this.labelCount = [0, 0]); } var c, u, f, h, p, d, m = l.prototype; (m.drawTicks = ((c = [0, 0]), (u = [0, 0]), (f = [0, 0]), function (t) { var e = this.plot, r = this.shader, n = this.tickX[t], i = this.tickOffset[t], a = e.gl, s = e.viewBox, l = e.dataBox, h = e.screenBox, p = e.pixelRatio, d = e.tickEnable, m = e.tickPad, g = e.tickColor, v = e.tickAngle, y = e.labelEnable, x = e.labelPad, b = e.labelColor, _ = e.labelAngle, w = this.labelOffset[t], T = this.labelCount[t], k = o.lt(n, l[t]), A = o.le(n, l[t + 2]); (c[0] = c[1] = 0), (c[t] = 1), (u[t] = (s[2 + t] + s[t]) / (h[2 + t] - h[t]) - 1); var M = 2 / h[2 + (1 ^ t)] - h[1 ^ t]; (u[1 ^ t] = M * s[1 ^ t] - 1), d[t] && ((u[1 ^ t] -= M * p * m[t]), k < A && i[A] > i[k] && ((r.uniforms.dataAxis = c), (r.uniforms.screenOffset = u), (r.uniforms.color = g[t]), (r.uniforms.angle = v[t]), a.drawArrays( a.TRIANGLES, i[k], i[A] - i[k], ))), y[t] && T && ((u[1 ^ t] -= M * p * x[t]), (r.uniforms.dataAxis = f), (r.uniforms.screenOffset = u), (r.uniforms.color = b[t]), (r.uniforms.angle = _[t]), a.drawArrays(a.TRIANGLES, w, T)), (u[1 ^ t] = M * s[2 + (1 ^ t)] - 1), d[t + 2] && ((u[1 ^ t] += M * p * m[t + 2]), k < A && i[A] > i[k] && ((r.uniforms.dataAxis = c), (r.uniforms.screenOffset = u), (r.uniforms.color = g[t + 2]), (r.uniforms.angle = v[t + 2]), a.drawArrays( a.TRIANGLES, i[k], i[A] - i[k], ))), y[t + 2] && T && ((u[1 ^ t] += M * p * x[t + 2]), (r.uniforms.dataAxis = f), (r.uniforms.screenOffset = u), (r.uniforms.color = b[t + 2]), (r.uniforms.angle = _[t + 2]), a.drawArrays(a.TRIANGLES, w, T)); })), (m.drawTitle = (function () { var t = [0, 0], e = [0, 0]; return function () { var r = this.plot, n = this.shader, i = r.gl, a = r.screenBox, o = r.titleCenter, s = r.titleAngle, l = r.titleColor, c = r.pixelRatio; if (this.titleCount) { for (var u = 0; u < 2; ++u) e[u] = (2 * (o[u] * c - a[u])) / (a[2 + u] - a[u]) - 1; n.bind(), (n.uniforms.dataAxis = t), (n.uniforms.screenOffset = e), (n.uniforms.angle = s), (n.uniforms.color = l), i.drawArrays( i.TRIANGLES, this.titleOffset, this.titleCount, ); } }; })()), (m.bind = ((h = [0, 0]), (p = [0, 0]), (d = [0, 0]), function () { var t = this.plot, e = this.shader, r = t._tickBounds, n = t.dataBox, i = t.screenBox, a = t.viewBox; e.bind(); for (var o = 0; o < 2; ++o) { var s = r[o], l = r[o + 2] - s, c = 0.5 * (n[o + 2] + n[o]), u = n[o + 2] - n[o], f = a[o], m = a[o + 2] - f, g = i[o], v = i[o + 2] - g; (p[o] = (((2 * l) / u) * m) / v), (h[o] = (((2 * (s - c)) / u) * m) / v); } (d[1] = (2 * t.pixelRatio) / (i[3] - i[1])), (d[0] = (d[1] * (i[3] - i[1])) / (i[2] - i[0])), (e.uniforms.dataScale = p), (e.uniforms.dataShift = h), (e.uniforms.textScale = d), this.vbo.bind(), e.attributes.textCoordinate.pointer(); })), (m.update = function (t) { var e, r, n, i, o, s = [], l = t.ticks, c = t.bounds; for (o = 0; o < 2; ++o) { var u = [Math.floor(s.length / 3)], f = [-1 / 0], h = l[o]; for (e = 0; e < h.length; ++e) { var p = h[e], d = p.x, m = p.text, g = p.font || "sans-serif"; i = p.fontSize || 12; for ( var v = 1 / (c[o + 2] - c[o]), y = c[o], x = m.split("\n"), b = 0; b < x.length; b++ ) for ( n = a(g, x[b]).data, r = 0; r < n.length; r += 2 ) s.push( n[r] * i, -n[r + 1] * i - b * i * 1.2, (d - y) * v, ); u.push(Math.floor(s.length / 3)), f.push(d); } (this.tickOffset[o] = u), (this.tickX[o] = f); } for (o = 0; o < 2; ++o) { for ( this.labelOffset[o] = Math.floor( s.length / 3, ), n = a(t.labelFont[o], t.labels[o], { textAlign: "center", }).data, i = t.labelSize[o], e = 0; e < n.length; e += 2 ) s.push(n[e] * i, -n[e + 1] * i, 0); this.labelCount[o] = Math.floor(s.length / 3) - this.labelOffset[o]; } for ( this.titleOffset = Math.floor( s.length / 3, ), n = a(t.titleFont, t.title).data, i = t.titleSize, e = 0; e < n.length; e += 2 ) s.push(n[e] * i, -n[e + 1] * i, 0); (this.titleCount = Math.floor(s.length / 3) - this.titleOffset), this.vbo.update(s); }), (m.dispose = function () { this.vbo.dispose(), this.shader.dispose(); }); }, { "./shaders": 116, "binary-search-bounds": 31, "gl-buffer": 78, "gl-shader": 132, "text-cache": 303, }, ], 118: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.gl, r = n(e, [ e.drawingBufferWidth, e.drawingBufferHeight, ]), c = new l(e, r); return ( (c.grid = i(c)), (c.text = a(c)), (c.line = o(c)), (c.box = s(c)), c.update(t), c ); }; var n = t("gl-select-static"), i = t("./lib/grid"), a = t("./lib/text"), o = t("./lib/line"), s = t("./lib/box"); function l(t, e) { (this.gl = t), (this.pickBuffer = e), (this.screenBox = [ 0, 0, t.drawingBufferWidth, t.drawingBufferHeight, ]), (this.viewBox = [0, 0, 0, 0]), (this.dataBox = [-10, -10, 10, 10]), (this.gridLineEnable = [!0, !0]), (this.gridLineWidth = [1, 1]), (this.gridLineColor = [ [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.pixelRatio = 1), (this.tickMarkLength = [0, 0, 0, 0]), (this.tickMarkWidth = [0, 0, 0, 0]), (this.tickMarkColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.tickPad = [15, 15, 15, 15]), (this.tickAngle = [0, 0, 0, 0]), (this.tickEnable = [!0, !0, !0, !0]), (this.tickColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.labelPad = [15, 15, 15, 15]), (this.labelAngle = [ 0, Math.PI / 2, 0, (3 * Math.PI) / 2, ]), (this.labelEnable = [!0, !0, !0, !0]), (this.labelColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.titleCenter = [0, 0]), (this.titleEnable = !0), (this.titleAngle = 0), (this.titleColor = [0, 0, 0, 1]), (this.borderColor = [0, 0, 0, 0]), (this.backgroundColor = [0, 0, 0, 0]), (this.zeroLineEnable = [!0, !0]), (this.zeroLineWidth = [4, 4]), (this.zeroLineColor = [ [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.borderLineEnable = [!0, !0, !0, !0]), (this.borderLineWidth = [2, 2, 2, 2]), (this.borderLineColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.grid = null), (this.text = null), (this.line = null), (this.box = null), (this.objects = []), (this.overlays = []), (this._tickBounds = [ 1 / 0, 1 / 0, -1 / 0, -1 / 0, ]), (this.static = !1), (this.dirty = !1), (this.pickDirty = !1), (this.pickDelay = 120), (this.pickRadius = 10), (this._pickTimeout = null), (this._drawPick = this.drawPick.bind(this)), (this._depthCounter = 0); } var c = l.prototype; function u(t) { for ( var e = t.slice(), r = 0; r < e.length; ++r ) e[r] = e[r].slice(); return e; } function f(t, e) { return t.x - e.x; } (c.setDirty = function () { this.dirty = this.pickDirty = !0; }), (c.setOverlayDirty = function () { this.dirty = !0; }), (c.nextDepthValue = function () { return this._depthCounter++ / 65536; }), (c.draw = function () { var t = this.gl, e = this.screenBox, r = this.viewBox, n = this.dataBox, i = this.pixelRatio, a = this.grid, o = this.line, s = this.text, l = this.objects; if ( ((this._depthCounter = 0), this.pickDirty && (this._pickTimeout && clearTimeout(this._pickTimeout), (this.pickDirty = !1), (this._pickTimeout = setTimeout( this._drawPick, this.pickDelay, ))), this.dirty) ) { if ( ((this.dirty = !1), t.bindFramebuffer(t.FRAMEBUFFER, null), t.enable(t.SCISSOR_TEST), t.disable(t.DEPTH_TEST), t.depthFunc(t.LESS), t.depthMask(!1), t.enable(t.BLEND), t.blendEquation(t.FUNC_ADD, t.FUNC_ADD), t.blendFunc( t.ONE, t.ONE_MINUS_SRC_ALPHA, ), this.borderColor) ) { t.scissor( e[0], e[1], e[2] - e[0], e[3] - e[1], ); var c = this.borderColor; t.clearColor( c[0] * c[3], c[1] * c[3], c[2] * c[3], c[3], ), t.clear( t.COLOR_BUFFER_BIT | t.DEPTH_BUFFER_BIT, ); } t.scissor( r[0], r[1], r[2] - r[0], r[3] - r[1], ), t.viewport( r[0], r[1], r[2] - r[0], r[3] - r[1], ); var u = this.backgroundColor; t.clearColor( u[0] * u[3], u[1] * u[3], u[2] * u[3], u[3], ), t.clear(t.COLOR_BUFFER_BIT), a.draw(); var f = this.zeroLineEnable, h = this.zeroLineColor, p = this.zeroLineWidth; if (f[0] || f[1]) { o.bind(); for (var d = 0; d < 2; ++d) if ( f[d] && n[d] <= 0 && n[d + 2] >= 0 ) { var m = e[d] - (n[d] * (e[d + 2] - e[d])) / (n[d + 2] - n[d]); 0 === d ? o.drawLine( m, e[1], m, e[3], p[d], h[d], ) : o.drawLine( e[0], m, e[2], m, p[d], h[d], ); } } for (d = 0; d < l.length; ++d) l[d].draw(); t.viewport( e[0], e[1], e[2] - e[0], e[3] - e[1], ), t.scissor( e[0], e[1], e[2] - e[0], e[3] - e[1], ), this.grid.drawTickMarks(), o.bind(); var g = this.borderLineEnable, v = this.borderLineWidth, y = this.borderLineColor; for ( g[1] && o.drawLine( r[0], r[1] - 0.5 * v[1] * i, r[0], r[3] + 0.5 * v[3] * i, v[1], y[1], ), g[0] && o.drawLine( r[0] - 0.5 * v[0] * i, r[1], r[2] + 0.5 * v[2] * i, r[1], v[0], y[0], ), g[3] && o.drawLine( r[2], r[1] - 0.5 * v[1] * i, r[2], r[3] + 0.5 * v[3] * i, v[3], y[3], ), g[2] && o.drawLine( r[0] - 0.5 * v[0] * i, r[3], r[2] + 0.5 * v[2] * i, r[3], v[2], y[2], ), s.bind(), d = 0; d < 2; ++d ) s.drawTicks(d); this.titleEnable && s.drawTitle(); var x = this.overlays; for (d = 0; d < x.length; ++d) x[d].draw(); t.disable(t.SCISSOR_TEST), t.disable(t.BLEND), t.depthMask(!0); } }), (c.drawPick = function () { if (!this.static) { var t = this.pickBuffer; this.gl, (this._pickTimeout = null), t.begin(); for ( var e = 1, r = this.objects, n = 0; n < r.length; ++n ) e = r[n].drawPick(e); t.end(); } }), (c.pick = function (t, e) { if (!this.static) { var r = this.pixelRatio, n = this.pickPixelRatio, i = this.viewBox, a = 0 | Math.round((t - i[0] / r) * n), o = 0 | Math.round((e - i[1] / r) * n), s = this.pickBuffer.query( a, o, this.pickRadius, ); if (!s) return null; for ( var l = s.id + (s.value[0] << 8) + (s.value[1] << 16) + (s.value[2] << 24), c = this.objects, u = 0; u < c.length; ++u ) { var f = c[u].pick(a, o, l); if (f) return f; } return null; } }), (c.setScreenBox = function (t) { var e = this.screenBox, r = this.pixelRatio; (e[0] = 0 | Math.round(t[0] * r)), (e[1] = 0 | Math.round(t[1] * r)), (e[2] = 0 | Math.round(t[2] * r)), (e[3] = 0 | Math.round(t[3] * r)), this.setDirty(); }), (c.setDataBox = function (t) { var e = this.dataBox; (e[0] !== t[0] || e[1] !== t[1] || e[2] !== t[2] || e[3] !== t[3]) && ((e[0] = t[0]), (e[1] = t[1]), (e[2] = t[2]), (e[3] = t[3]), this.setDirty()); }), (c.setViewBox = function (t) { var e = this.pixelRatio, r = this.viewBox; (r[0] = 0 | Math.round(t[0] * e)), (r[1] = 0 | Math.round(t[1] * e)), (r[2] = 0 | Math.round(t[2] * e)), (r[3] = 0 | Math.round(t[3] * e)); var n = this.pickPixelRatio; (this.pickBuffer.shape = [ 0 | Math.round((t[2] - t[0]) * n), 0 | Math.round((t[3] - t[1]) * n), ]), this.setDirty(); }), (c.update = function (t) { t = t || {}; var e = this.gl; this.pixelRatio = t.pixelRatio || 1; var r = this.pixelRatio; (this.pickPixelRatio = Math.max(r, 1)), this.setScreenBox( t.screenBox || [ 0, 0, e.drawingBufferWidth / r, e.drawingBufferHeight / r, ], ); this.screenBox; this.setViewBox( t.viewBox || [ (0.125 * (this.screenBox[2] - this.screenBox[0])) / r, (0.125 * (this.screenBox[3] - this.screenBox[1])) / r, (0.875 * (this.screenBox[2] - this.screenBox[0])) / r, (0.875 * (this.screenBox[3] - this.screenBox[1])) / r, ], ); var n = this.viewBox, i = (n[2] - n[0]) / (n[3] - n[1]); this.setDataBox( t.dataBox || [-10, -10 / i, 10, 10 / i], ), (this.borderColor = !1 !== t.borderColor && ( t.borderColor || [0, 0, 0, 0] ).slice()), (this.backgroundColor = ( t.backgroundColor || [0, 0, 0, 0] ).slice()), (this.gridLineEnable = ( t.gridLineEnable || [!0, !0] ).slice()), (this.gridLineWidth = ( t.gridLineWidth || [1, 1] ).slice()), (this.gridLineColor = u( t.gridLineColor || [ [0.5, 0.5, 0.5, 1], [0.5, 0.5, 0.5, 1], ], )), (this.zeroLineEnable = ( t.zeroLineEnable || [!0, !0] ).slice()), (this.zeroLineWidth = ( t.zeroLineWidth || [4, 4] ).slice()), (this.zeroLineColor = u( t.zeroLineColor || [ [0, 0, 0, 1], [0, 0, 0, 1], ], )), (this.tickMarkLength = ( t.tickMarkLength || [0, 0, 0, 0] ).slice()), (this.tickMarkWidth = ( t.tickMarkWidth || [0, 0, 0, 0] ).slice()), (this.tickMarkColor = u( t.tickMarkColor || [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ], )), (this.titleCenter = ( t.titleCenter || [ (0.5 * (n[0] + n[2])) / r, (n[3] + 120) / r, ] ).slice()), (this.titleEnable = !("titleEnable" in t) || !!t.titleEnable), (this.titleAngle = t.titleAngle || 0), (this.titleColor = ( t.titleColor || [0, 0, 0, 1] ).slice()), (this.labelPad = ( t.labelPad || [15, 15, 15, 15] ).slice()), (this.labelAngle = ( t.labelAngle || [ 0, Math.PI / 2, 0, (3 * Math.PI) / 2, ] ).slice()), (this.labelEnable = ( t.labelEnable || [!0, !0, !0, !0] ).slice()), (this.labelColor = u( t.labelColor || [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ], )), (this.tickPad = ( t.tickPad || [15, 15, 15, 15] ).slice()), (this.tickAngle = ( t.tickAngle || [0, 0, 0, 0] ).slice()), (this.tickEnable = ( t.tickEnable || [!0, !0, !0, !0] ).slice()), (this.tickColor = u( t.tickColor || [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ], )), (this.borderLineEnable = ( t.borderLineEnable || [!0, !0, !0, !0] ).slice()), (this.borderLineWidth = ( t.borderLineWidth || [2, 2, 2, 2] ).slice()), (this.borderLineColor = u( t.borderLineColor || [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ], )); var a = t.ticks || [[], []], o = this._tickBounds; (o[0] = o[1] = 1 / 0), (o[2] = o[3] = -1 / 0); for (var s = 0; s < 2; ++s) { var l = a[s].slice(0); 0 !== l.length && (l.sort(f), (o[s] = Math.min(o[s], l[0].x)), (o[s + 2] = Math.max( o[s + 2], l[l.length - 1].x, ))); } this.grid.update({ bounds: o, ticks: a }), this.text.update({ bounds: o, ticks: a, labels: t.labels || ["x", "y"], labelSize: t.labelSize || [12, 12], labelFont: t.labelFont || [ "sans-serif", "sans-serif", ], title: t.title || "", titleSize: t.titleSize || 18, titleFont: t.titleFont || "sans-serif", }), (this.static = !!t.static), this.setDirty(); }), (c.dispose = function () { this.box.dispose(), this.grid.dispose(), this.text.dispose(), this.line.dispose(); for ( var t = this.objects.length - 1; t >= 0; --t ) this.objects[t].dispose(); this.objects.length = 0; for ( t = this.overlays.length - 1; t >= 0; --t ) this.overlays[t].dispose(); (this.overlays.length = 0), (this.gl = null); }), (c.addObject = function (t) { this.objects.indexOf(t) < 0 && (this.objects.push(t), this.setDirty()); }), (c.removeObject = function (t) { for ( var e = this.objects, r = 0; r < e.length; ++r ) if (e[r] === t) { e.splice(r, 1), this.setDirty(); break; } }), (c.addOverlay = function (t) { this.overlays.indexOf(t) < 0 && (this.overlays.push(t), this.setOverlayDirty()); }), (c.removeOverlay = function (t) { for ( var e = this.overlays, r = 0; r < e.length; ++r ) if (e[r] === t) { e.splice(r, 1), this.setOverlayDirty(); break; } }); }, { "./lib/box": 113, "./lib/grid": 114, "./lib/line": 115, "./lib/text": 117, "gl-select-static": 131, }, ], 119: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { (t = t || document.body), (e = e || {}); var r = [0.01, 1 / 0]; "distanceLimits" in e && ((r[0] = e.distanceLimits[0]), (r[1] = e.distanceLimits[1])); "zoomMin" in e && (r[0] = e.zoomMin); "zoomMax" in e && (r[1] = e.zoomMax); var c = i({ center: e.center || [0, 0, 0], up: e.up || [0, 1, 0], eye: e.eye || [0, 0, 10], mode: e.mode || "orbit", distanceLimits: r, }), u = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], f = 0, h = t.clientWidth, p = t.clientHeight, d = { keyBindingMode: "rotate", enableWheel: !0, view: c, element: t, delay: e.delay || 16, rotateSpeed: e.rotateSpeed || 1, zoomSpeed: e.zoomSpeed || 1, translateSpeed: e.translateSpeed || 1, flipX: !!e.flipX, flipY: !!e.flipY, modes: c.modes, _ortho: e._ortho || (e.projection && "orthographic" === e.projection.type) || !1, tick: function () { var e = n(), r = this.delay, i = e - 2 * r; c.idle(e - r), c.recalcMatrix(i), c.flush(e - (100 + 2 * r)); for ( var a = !0, o = c.computedMatrix, s = 0; s < 16; ++s ) (a = a && u[s] === o[s]), (u[s] = o[s]); var l = t.clientWidth === h && t.clientHeight === p; return ( (h = t.clientWidth), (p = t.clientHeight), a ? !l : ((f = Math.exp( c.computedRadius[0], )), !0) ); }, lookAt: function (t, e, r) { c.lookAt(c.lastT(), t, e, r); }, rotate: function (t, e, r) { c.rotate(c.lastT(), t, e, r); }, pan: function (t, e, r) { c.pan(c.lastT(), t, e, r); }, translate: function (t, e, r) { c.translate(c.lastT(), t, e, r); }, }; return ( Object.defineProperties(d, { matrix: { get: function () { return c.computedMatrix; }, set: function (t) { return ( c.setMatrix(c.lastT(), t), c.computedMatrix ); }, enumerable: !0, }, mode: { get: function () { return c.getMode(); }, set: function (t) { var e = c.computedUp.slice(), r = c.computedEye.slice(), i = c.computedCenter.slice(); if ( (c.setMode(t), "turntable" === t) ) { var a = n(); c._active.lookAt(a, r, i, e), c._active.lookAt( a + 500, r, i, [0, 0, 1], ), c._active.flush(a); } return c.getMode(); }, enumerable: !0, }, center: { get: function () { return c.computedCenter; }, set: function (t) { return ( c.lookAt(c.lastT(), null, t), c.computedCenter ); }, enumerable: !0, }, eye: { get: function () { return c.computedEye; }, set: function (t) { return ( c.lookAt(c.lastT(), t), c.computedEye ); }, enumerable: !0, }, up: { get: function () { return c.computedUp; }, set: function (t) { return ( c.lookAt(c.lastT(), null, null, t), c.computedUp ); }, enumerable: !0, }, distance: { get: function () { return f; }, set: function (t) { return c.setDistance(c.lastT(), t), t; }, enumerable: !0, }, distanceLimits: { get: function () { return c.getDistanceLimits(r); }, set: function (t) { return c.setDistanceLimits(t), t; }, enumerable: !0, }, }), t.addEventListener( "contextmenu", function (t) { return t.preventDefault(), !1; }, ), (d._lastX = -1), (d._lastY = -1), (d._lastMods = { shift: !1, control: !1, alt: !1, meta: !1, }), (d.enableMouseListeners = function () { function e(e, r, i, a) { var o = d.keyBindingMode; if (!1 !== o) { var s = "rotate" === o, l = "pan" === o, u = "zoom" === o, h = !!a.control, p = !!a.alt, m = !!a.shift, g = !!(1 & e), v = !!(2 & e), y = !!(4 & e), x = 1 / t.clientHeight, b = x * (r - d._lastX), _ = x * (i - d._lastY), w = d.flipX ? 1 : -1, T = d.flipY ? 1 : -1, k = Math.PI * d.rotateSpeed, A = n(); if ( -1 !== d._lastX && -1 !== d._lastY && (((s && g && !h && !p && !m) || (g && !h && !p && m)) && c.rotate( A, w * k * b, -T * k * _, 0, ), ((l && g && !h && !p && !m) || v || (g && h && !p && !m)) && c.pan( A, -d.translateSpeed * b * f, d.translateSpeed * _ * f, 0, ), (u && g && !h && !p && !m) || y || (g && !h && p && !m)) ) { var M = ((-d.zoomSpeed * _) / window.innerHeight) * (A - c.lastT()) * 100; c.pan( A, 0, 0, f * (Math.exp(M) - 1), ); } return ( (d._lastX = r), (d._lastY = i), (d._lastMods = a), !0 ); } } (d.mouseListener = a(t, e)), t.addEventListener( "touchstart", function (r) { var n = s(r.changedTouches[0], t); e(0, n[0], n[1], d._lastMods), e(1, n[0], n[1], d._lastMods); }, !!l && { passive: !0 }, ), t.addEventListener( "touchmove", function (r) { var n = s(r.changedTouches[0], t); e(1, n[0], n[1], d._lastMods), r.preventDefault(); }, !!l && { passive: !1 }, ), t.addEventListener( "touchend", function (t) { e( 0, d._lastX, d._lastY, d._lastMods, ); }, !!l && { passive: !0 }, ), (d.wheelListener = o( t, function (t, e) { if ( !1 !== d.keyBindingMode && d.enableWheel ) { var r = d.flipX ? 1 : -1, i = d.flipY ? 1 : -1, a = n(); if (Math.abs(t) > Math.abs(e)) c.rotate( a, 0, 0, (-t * r * Math.PI * d.rotateSpeed) / window.innerWidth, ); else if (!d._ortho) { var o = (((-d.zoomSpeed * i * e) / window.innerHeight) * (a - c.lastT())) / 20; c.pan( a, 0, 0, f * (Math.exp(o) - 1), ); } } }, !0, )); }), d.enableMouseListeners(), d ); }; var n = t("right-now"), i = t("3d-view"), a = t("mouse-change"), o = t("mouse-wheel"), s = t("mouse-event-offset"), l = t("has-passive-events"); }, { "3d-view": 7, "has-passive-events": 232, "mouse-change": 247, "mouse-event-offset": 248, "mouse-wheel": 250, "right-now": 278, }, ], 120: [ function (t, e, r) { var n = t("glslify"), i = t("gl-shader"), a = n([ "precision mediump float;\n#define GLSLIFY 1\nattribute vec2 position;\nvarying vec2 uv;\nvoid main() {\n uv = position;\n gl_Position = vec4(position, 0, 1);\n}", ]), o = n([ "precision mediump float;\n#define GLSLIFY 1\n\nuniform sampler2D accumBuffer;\nvarying vec2 uv;\n\nvoid main() {\n vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0));\n gl_FragColor = min(vec4(1,1,1,1), accum);\n}", ]); e.exports = function (t) { return i(t, a, o, null, [ { name: "position", type: "vec2" }, ]); }; }, { "gl-shader": 132, glslify: 231 }, ], 121: [ function (t, e, r) { "use strict"; var n = t("./camera.js"), i = t("gl-axes3d"), a = t("gl-axes3d/properties"), o = t("gl-spikes3d"), s = t("gl-select-static"), l = t("gl-fbo"), c = t("a-big-triangle"), u = t("mouse-change"), f = t("gl-mat4/perspective"), h = t("gl-mat4/ortho"), p = t("./lib/shader"), d = t("is-mobile")({ tablet: !0, featureDetect: !0, }); function m() { (this.mouse = [-1, -1]), (this.screen = null), (this.distance = 1 / 0), (this.index = null), (this.dataCoordinate = null), (this.dataPosition = null), (this.object = null), (this.data = null); } function g(t) { var e = Math.round( Math.log(Math.abs(t)) / Math.log(10), ); if (e < 0) { var r = Math.round(Math.pow(10, -e)); return Math.ceil(t * r) / r; } if (e > 0) { r = Math.round(Math.pow(10, e)); return Math.ceil(t / r) * r; } return Math.ceil(t); } function v(t) { return "boolean" != typeof t || t; } e.exports = { createScene: function (t) { (t = t || {}).camera = t.camera || {}; var e = t.canvas; if (!e) { if ( ((e = document.createElement("canvas")), t.container) ) t.container.appendChild(e); else document.body.appendChild(e); } var r = t.gl; r || (t.glOptions && (d = !!t.glOptions.preserveDrawingBuffer), (r = (function (t, e) { var r = null; try { (r = t.getContext("webgl", e)) || (r = t.getContext( "experimental-webgl", e, )); } catch (t) { return null; } return r; })( e, t.glOptions || { premultipliedAlpha: !0, antialias: !0, preserveDrawingBuffer: d, }, ))); if (!r) throw new Error("webgl not supported"); var y = t.bounds || [ [-10, -10, -10], [10, 10, 10], ], x = new m(), b = l( r, r.drawingBufferWidth, r.drawingBufferHeight, { preferFloat: !d }, ), _ = p(r), w = (t.cameraObject && !0 === t.cameraObject._ortho) || (t.camera.projection && "orthographic" === t.camera.projection.type) || !1, T = { eye: t.camera.eye || [2, 0, 0], center: t.camera.center || [0, 0, 0], up: t.camera.up || [0, 1, 0], zoomMin: t.camera.zoomMax || 0.1, zoomMax: t.camera.zoomMin || 100, mode: t.camera.mode || "turntable", _ortho: w, }, k = t.axes || {}, A = i(r, k); A.enable = !k.disable; var M = t.spikes || {}, S = o(r, M), E = [], L = [], C = [], P = [], I = !0, O = !0, z = new Array(16), D = new Array(16), R = { view: null, projection: z, model: D, _ortho: !1, }, F = ((O = !0), [ r.drawingBufferWidth, r.drawingBufferHeight, ]), B = t.cameraObject || n(e, T), N = { gl: r, contextLost: !1, pixelRatio: t.pixelRatio || 1, canvas: e, selection: x, camera: B, axes: A, axesPixels: null, spikes: S, bounds: y, objects: E, shape: F, aspect: t.aspectRatio || [1, 1, 1], pickRadius: t.pickRadius || 10, zNear: t.zNear || 0.01, zFar: t.zFar || 1e3, fovy: t.fovy || Math.PI / 4, clearColor: t.clearColor || [ 0, 0, 0, 0, ], autoResize: v(t.autoResize), autoBounds: v(t.autoBounds), autoScale: !!t.autoScale, autoCenter: v(t.autoCenter), clipToBounds: v(t.clipToBounds), snapToData: !!t.snapToData, onselect: t.onselect || null, onrender: t.onrender || null, onclick: t.onclick || null, cameraParams: R, oncontextloss: null, mouseListener: null, _stopped: !1, getAspectratio: function () { return { x: this.aspect[0], y: this.aspect[1], z: this.aspect[2], }; }, setAspectratio: function (t) { (this.aspect[0] = t.x), (this.aspect[1] = t.y), (this.aspect[2] = t.z), (O = !0); }, setBounds: function (t, e) { (this.bounds[0][t] = e.min), (this.bounds[1][t] = e.max); }, setClearColor: function (t) { this.clearColor = t; }, clearRGBA: function () { this.gl.clearColor( this.clearColor[0], this.clearColor[1], this.clearColor[2], this.clearColor[3], ), this.gl.clear( this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT, ); }, }, j = [ (r.drawingBufferWidth / N.pixelRatio) | 0, (r.drawingBufferHeight / N.pixelRatio) | 0, ]; function U() { if (!N._stopped && N.autoResize) { var t = e.parentNode, r = 1, n = 1; t && t !== document.body ? ((r = t.clientWidth), (n = t.clientHeight)) : ((r = window.innerWidth), (n = window.innerHeight)); var i = 0 | Math.ceil(r * N.pixelRatio), a = 0 | Math.ceil(n * N.pixelRatio); if (i !== e.width || a !== e.height) { (e.width = i), (e.height = a); var o = e.style; (o.position = o.position || "absolute"), (o.left = "0px"), (o.top = "0px"), (o.width = r + "px"), (o.height = n + "px"), (I = !0); } } } N.autoResize && U(); function V() { for ( var t = E.length, e = P.length, n = 0; n < e; ++n ) C[n] = 0; t: for (n = 0; n < t; ++n) { var i = E[n], a = i.pickSlots; if (a) { for (var o = 0; o < e; ++o) if (C[o] + a < 255) { (L[n] = o), i.setPickBase(C[o] + 1), (C[o] += a); continue t; } var l = s(r, F); (L[n] = e), P.push(l), C.push(a), i.setPickBase(1), (e += 1); } else L[n] = -1; } for (; e > 0 && 0 === C[e - 1]; ) C.pop(), P.pop().dispose(); } function H() { if (N.contextLost) return !0; r.isContextLost() && ((N.contextLost = !0), (N.mouseListener.enabled = !1), (N.selection.object = null), N.oncontextloss && N.oncontextloss()); } window.addEventListener("resize", U), (N.update = function (t) { N._stopped || ((t = t || {}), (I = !0), (O = !0)); }), (N.add = function (t) { N._stopped || ((t.axes = A), E.push(t), L.push(-1), (I = !0), (O = !0), V()); }), (N.remove = function (t) { if (!N._stopped) { var e = E.indexOf(t); e < 0 || (E.splice(e, 1), L.pop(), (I = !0), (O = !0), V()); } }), (N.dispose = function () { if ( !N._stopped && ((N._stopped = !0), window.removeEventListener( "resize", U, ), e.removeEventListener( "webglcontextlost", H, ), (N.mouseListener.enabled = !1), !N.contextLost) ) { A.dispose(), S.dispose(); for (var t = 0; t < E.length; ++t) E[t].dispose(); b.dispose(); for (t = 0; t < P.length; ++t) P[t].dispose(); _.dispose(), (r = null), (A = null), (S = null), (E = []); } }), (N._mouseRotating = !1), (N._prevButtons = 0), (N.enableMouseListeners = function () { N.mouseListener = u( e, function (t, e, r) { if (!N._stopped) { var n = P.length, i = E.length, a = x.object; (x.distance = 1 / 0), (x.mouse[0] = e), (x.mouse[1] = r), (x.object = null), (x.screen = null), (x.dataCoordinate = x.dataPosition = null); var o = !1; if (t && N._prevButtons) N._mouseRotating = !0; else { N._mouseRotating && (O = !0), (N._mouseRotating = !1); for (var s = 0; s < n; ++s) { var l = P[s].query( e, j[1] - r - 1, N.pickRadius, ); if (l) { if (l.distance > x.distance) continue; for ( var c = 0; c < i; ++c ) { var u = E[c]; if (L[c] === s) { var f = u.pick(l); f && ((x.buttons = t), (x.screen = l.coord), (x.distance = l.distance), (x.object = u), (x.index = f.distance), (x.dataPosition = f.position), (x.dataCoordinate = f.dataCoordinate), (x.data = f), (o = !0)); } } } } } a && a !== x.object && (a.highlight && a.highlight(null), (I = !0)), x.object && (x.object.highlight && x.object.highlight(x.data), (I = !0)), (o = o || x.object !== a) && N.onselect && N.onselect(x), 1 & t && !(1 & N._prevButtons) && N.onclick && N.onclick(x), (N._prevButtons = t); } }, ); }), e.addEventListener("webglcontextlost", H); var q = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ], G = [q[0].slice(), q[1].slice()]; function Y() { if (!H()) { U(); var t = N.camera.tick(); (R.view = N.camera.matrix), (I = I || t), (O = O || t), (A.pixelRatio = N.pixelRatio), (S.pixelRatio = N.pixelRatio); var e = E.length, n = q[0], i = q[1]; (n[0] = n[1] = n[2] = 1 / 0), (i[0] = i[1] = i[2] = -1 / 0); for (var o = 0; o < e; ++o) { ((C = E[o]).pixelRatio = N.pixelRatio), (C.axes = N.axes), (I = I || !!C.dirty), (O = O || !!C.dirty); var s = C.bounds; if (s) for ( var l = s[0], u = s[1], p = 0; p < 3; ++p ) (n[p] = Math.min(n[p], l[p])), (i[p] = Math.max(i[p], u[p])); } var d = N.bounds; if (N.autoBounds) for (p = 0; p < 3; ++p) { if (i[p] < n[p]) (n[p] = -1), (i[p] = 1); else { n[p] === i[p] && ((n[p] -= 1), (i[p] += 1)); var m = 0.05 * (i[p] - n[p]); (n[p] = n[p] - m), (i[p] = i[p] + m); } (d[0][p] = n[p]), (d[1][p] = i[p]); } var v = !1; for (p = 0; p < 3; ++p) (v = v || G[0][p] !== d[0][p] || G[1][p] !== d[1][p]), (G[0][p] = d[0][p]), (G[1][p] = d[1][p]); if (((O = O || v), (I = I || v))) { if (v) { var y = [0, 0, 0]; for (o = 0; o < 3; ++o) y[o] = g( (d[1][o] - d[0][o]) / 10, ); A.autoTicks ? A.update({ bounds: d, tickSpacing: y, }) : A.update({ bounds: d }); } var T = r.drawingBufferWidth, k = r.drawingBufferHeight; (F[0] = T), (F[1] = k), (j[0] = 0 | Math.max(T / N.pixelRatio, 1)), (j[1] = 0 | Math.max(k / N.pixelRatio, 1)), (function (t, e) { var r = t.bounds, n = t.cameraParams, i = n.projection, a = n.model, o = t.gl.drawingBufferWidth, s = t.gl.drawingBufferHeight, l = t.zNear, c = t.zFar, u = t.fovy, p = o / s; e ? (h(i, -p, p, -1, 1, l, c), (n._ortho = !0)) : (f(i, u, p, l, c), (n._ortho = !1)); for (var d = 0; d < 16; ++d) a[d] = 0; a[15] = 1; var m = 0; for (d = 0; d < 3; ++d) m = Math.max( m, r[1][d] - r[0][d], ); for (d = 0; d < 3; ++d) t.autoScale ? (a[5 * d] = t.aspect[d] / (r[1][d] - r[0][d])) : (a[5 * d] = 1 / m), t.autoCenter && (a[12 + d] = 0.5 * -a[5 * d] * (r[0][d] + r[1][d])); })(N, w); for (o = 0; o < e; ++o) { ((C = E[o]).axesBounds = d), N.clipToBounds && (C.clipBounds = d); } x.object && (N.snapToData ? (S.position = x.dataCoordinate) : (S.position = x.dataPosition), (S.bounds = d)), O && ((O = !1), (function () { if (!H()) { r.colorMask(!0, !0, !0, !0), r.depthMask(!0), r.disable(r.BLEND), r.enable(r.DEPTH_TEST), r.depthFunc(r.LEQUAL); for ( var t = E.length, e = P.length, n = 0; n < e; ++n ) { var i = P[n]; (i.shape = j), i.begin(); for (var a = 0; a < t; ++a) if (L[a] === n) { var o = E[a]; o.drawPick && ((o.pixelRatio = 1), o.drawPick(R)); } i.end(); } } })()), (N.axesPixels = a(N.axes, R, T, k)), N.onrender && N.onrender(), r.bindFramebuffer( r.FRAMEBUFFER, null, ), r.viewport(0, 0, T, k), N.clearRGBA(), r.depthMask(!0), r.colorMask(!0, !0, !0, !0), r.enable(r.DEPTH_TEST), r.depthFunc(r.LEQUAL), r.disable(r.BLEND), r.disable(r.CULL_FACE); var M = !1; A.enable && ((M = M || A.isTransparent()), A.draw(R)), (S.axes = A), x.object && S.draw(R), r.disable(r.CULL_FACE); for (o = 0; o < e; ++o) { ((C = E[o]).axes = A), (C.pixelRatio = N.pixelRatio), C.isOpaque && C.isOpaque() && C.draw(R), C.isTransparent && C.isTransparent() && (M = !0); } if (M) { (b.shape = F), b.bind(), r.clear(r.DEPTH_BUFFER_BIT), r.colorMask(!1, !1, !1, !1), r.depthMask(!0), r.depthFunc(r.LESS), A.enable && A.isTransparent() && A.drawTransparent(R); for (o = 0; o < e; ++o) { (C = E[o]).isOpaque && C.isOpaque() && C.draw(R); } r.enable(r.BLEND), r.blendEquation(r.FUNC_ADD), r.blendFunc( r.ONE, r.ONE_MINUS_SRC_ALPHA, ), r.colorMask(!0, !0, !0, !0), r.depthMask(!1), r.clearColor(0, 0, 0, 0), r.clear(r.COLOR_BUFFER_BIT), A.isTransparent() && A.drawTransparent(R); for (o = 0; o < e; ++o) { var C; (C = E[o]).isTransparent && C.isTransparent() && C.drawTransparent(R); } r.bindFramebuffer( r.FRAMEBUFFER, null, ), r.blendFunc( r.ONE, r.ONE_MINUS_SRC_ALPHA, ), r.disable(r.DEPTH_TEST), _.bind(), b.color[0].bind(0), (_.uniforms.accumBuffer = 0), c(r), r.disable(r.BLEND); } I = !1; for (o = 0; o < e; ++o) E[o].dirty = !1; } } } return ( N.enableMouseListeners(), (function t() { if (N._stopped || N.contextLost) return; Y(), requestAnimationFrame(t); })(), (N.redraw = function () { N._stopped || ((I = !0), Y()); }), N ); }, createCamera: n, }; }, { "./camera.js": 119, "./lib/shader": 120, "a-big-triangle": 8, "gl-axes3d": 70, "gl-axes3d/properties": 77, "gl-fbo": 86, "gl-mat4/ortho": 101, "gl-mat4/perspective": 102, "gl-select-static": 131, "gl-spikes3d": 141, "is-mobile": 238, "mouse-change": 247, }, ], 122: [ function (t, e, r) { var n = t("glslify"); (r.pointVertex = n([ "precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 position;\n\nuniform mat3 matrix;\nuniform float pointSize;\nuniform float pointCloud;\n\nhighp float rand(vec2 co) {\n highp float a = 12.9898;\n highp float b = 78.233;\n highp float c = 43758.5453;\n highp float d = dot(co.xy, vec2(a, b));\n highp float e = mod(d, 3.14);\n return fract(sin(e) * c);\n}\n\nvoid main() {\n vec3 hgPosition = matrix * vec3(position, 1);\n gl_Position = vec4(hgPosition.xy, 0, hgPosition.z);\n // if we don't jitter the point size a bit, overall point cloud\n // saturation 'jumps' on zooming, which is disturbing and confusing\n gl_PointSize = pointSize * ((19.5 + rand(position)) / 20.0);\n if(pointCloud != 0.0) { // pointCloud is truthy\n // get the same square surface as circle would be\n gl_PointSize *= 0.886;\n }\n}", ])), (r.pointFragment = n([ "precision mediump float;\n#define GLSLIFY 1\n\nuniform vec4 color, borderColor;\nuniform float centerFraction;\nuniform float pointCloud;\n\nvoid main() {\n float radius;\n vec4 baseColor;\n if(pointCloud != 0.0) { // pointCloud is truthy\n if(centerFraction == 1.0) {\n gl_FragColor = color;\n } else {\n gl_FragColor = mix(borderColor, color, centerFraction);\n }\n } else {\n radius = length(2.0 * gl_PointCoord.xy - 1.0);\n if(radius > 1.0) {\n discard;\n }\n baseColor = mix(borderColor, color, step(radius, centerFraction));\n gl_FragColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\n }\n}\n", ])), (r.pickVertex = n([ "precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 position;\nattribute vec4 pickId;\n\nuniform mat3 matrix;\nuniform float pointSize;\nuniform vec4 pickOffset;\n\nvarying vec4 fragId;\n\nvoid main() {\n vec3 hgPosition = matrix * vec3(position, 1);\n gl_Position = vec4(hgPosition.xy, 0, hgPosition.z);\n gl_PointSize = pointSize;\n\n vec4 id = pickId + pickOffset;\n id.y += floor(id.x / 256.0);\n id.x -= floor(id.x / 256.0) * 256.0;\n\n id.z += floor(id.y / 256.0);\n id.y -= floor(id.y / 256.0) * 256.0;\n\n id.w += floor(id.z / 256.0);\n id.z -= floor(id.z / 256.0) * 256.0;\n\n fragId = id;\n}\n", ])), (r.pickFragment = n([ "precision mediump float;\n#define GLSLIFY 1\n\nvarying vec4 fragId;\n\nvoid main() {\n float radius = length(2.0 * gl_PointCoord.xy - 1.0);\n if(radius > 1.0) {\n discard;\n }\n gl_FragColor = fragId / 255.0;\n}\n", ])); }, { glslify: 231 }, ], 123: [ function (t, e, r) { "use strict"; var n = t("gl-shader"), i = t("gl-buffer"), a = t("typedarray-pool"), o = t("./lib/shader"); function s(t, e, r, n, i) { (this.plot = t), (this.offsetBuffer = e), (this.pickBuffer = r), (this.shader = n), (this.pickShader = i), (this.sizeMin = 0.5), (this.sizeMinCap = 2), (this.sizeMax = 20), (this.areaRatio = 1), (this.pointCount = 0), (this.color = [1, 0, 0, 1]), (this.borderColor = [0, 0, 0, 1]), (this.blend = !1), (this.pickOffset = 0), (this.points = null); } e.exports = function (t, e) { var r = t.gl, a = i(r), l = i(r), c = n(r, o.pointVertex, o.pointFragment), u = n(r, o.pickVertex, o.pickFragment), f = new s(t, a, l, c, u); return f.update(e), t.addObject(f), f; }; var l, c, u = s.prototype; (u.dispose = function () { this.shader.dispose(), this.pickShader.dispose(), this.offsetBuffer.dispose(), this.pickBuffer.dispose(), this.plot.removeObject(this); }), (u.update = function (t) { var e; function r(e, r) { return e in t ? t[e] : r; } (t = t || {}), (this.sizeMin = r("sizeMin", 0.5)), (this.sizeMax = r("sizeMax", 20)), (this.color = r( "color", [1, 0, 0, 1], ).slice()), (this.areaRatio = r("areaRatio", 1)), (this.borderColor = r( "borderColor", [0, 0, 0, 1], ).slice()), (this.blend = r("blend", !1)); var n = t.positions.length >>> 1, i = t.positions instanceof Float32Array, o = t.idToIndex instanceof Int32Array && t.idToIndex.length >= n, s = t.positions, l = i ? s : a.mallocFloat32(s.length), c = o ? t.idToIndex : a.mallocInt32(n); if ((i || l.set(s), !o)) for (l.set(s), e = 0; e < n; e++) c[e] = e; (this.points = s), this.offsetBuffer.update(l), this.pickBuffer.update(c), i || a.free(l), o || a.free(c), (this.pointCount = n), (this.pickOffset = 0); }), (u.unifiedDraw = ((l = [1, 0, 0, 0, 1, 0, 0, 0, 1]), (c = [0, 0, 0, 0]), function (t) { var e = void 0 !== t, r = e ? this.pickShader : this.shader, n = this.plot.gl, i = this.plot.dataBox; if (0 === this.pointCount) return t; var a = i[2] - i[0], o = i[3] - i[1], s = (function (t, e) { var r, n = 0, i = t.length >>> 1; for (r = 0; r < i; r++) { var a = t[2 * r], o = t[2 * r + 1]; a >= e[0] && a <= e[2] && o >= e[1] && o <= e[3] && n++; } return n; })(this.points, i), u = this.plot.pickPixelRatio * Math.max( Math.min( this.sizeMinCap, this.sizeMin, ), Math.min( this.sizeMax, this.sizeMax / Math.pow(s, 0.33333), ), ); (l[0] = 2 / a), (l[4] = 2 / o), (l[6] = (-2 * i[0]) / a - 1), (l[7] = (-2 * i[1]) / o - 1), this.offsetBuffer.bind(), r.bind(), r.attributes.position.pointer(), (r.uniforms.matrix = l), (r.uniforms.color = this.color), (r.uniforms.borderColor = this.borderColor), (r.uniforms.pointCloud = u < 5), (r.uniforms.pointSize = u), (r.uniforms.centerFraction = Math.min( 1, Math.max( 0, Math.sqrt(1 - this.areaRatio), ), )), e && ((c[0] = 255 & t), (c[1] = (t >> 8) & 255), (c[2] = (t >> 16) & 255), (c[3] = (t >> 24) & 255), this.pickBuffer.bind(), r.attributes.pickId.pointer( n.UNSIGNED_BYTE, ), (r.uniforms.pickOffset = c), (this.pickOffset = t)); var f = n.getParameter(n.BLEND), h = n.getParameter(n.DITHER); return ( f && !this.blend && n.disable(n.BLEND), h && n.disable(n.DITHER), n.drawArrays( n.POINTS, 0, this.pointCount, ), f && !this.blend && n.enable(n.BLEND), h && n.enable(n.DITHER), t + this.pointCount ); })), (u.draw = u.unifiedDraw), (u.drawPick = u.unifiedDraw), (u.pick = function (t, e, r) { var n = this.pickOffset, i = this.pointCount; if (r < n || r >= n + i) return null; var a = r - n, o = this.points; return { object: this, pointId: a, dataCoord: [o[2 * a], o[2 * a + 1]], }; }); }, { "./lib/shader": 122, "gl-buffer": 78, "gl-shader": 132, "typedarray-pool": 308, }, ], 124: [ function (t, e, r) { e.exports = function (t, e, r, n) { var i, a, o, s, l, c = e[0], u = e[1], f = e[2], h = e[3], p = r[0], d = r[1], m = r[2], g = r[3]; (a = c * p + u * d + f * m + h * g) < 0 && ((a = -a), (p = -p), (d = -d), (m = -m), (g = -g)); 1 - a > 1e-6 ? ((i = Math.acos(a)), (o = Math.sin(i)), (s = Math.sin((1 - n) * i) / o), (l = Math.sin(n * i) / o)) : ((s = 1 - n), (l = n)); return ( (t[0] = s * c + l * p), (t[1] = s * u + l * d), (t[2] = s * f + l * m), (t[3] = s * h + l * g), t ); }; }, {}, ], 125: [ function (t, e, r) { "use strict"; e.exports = function (t) { return t || 0 === t ? t.toString() : ""; }; }, {}, ], 126: [ function (t, e, r) { "use strict"; var n = t("vectorize-text"); e.exports = function (t, e, r) { var a = i[e]; a || (a = i[e] = {}); if (t in a) return a[t]; var o = { textAlign: "center", textBaseline: "middle", lineHeight: 1, font: e, lineSpacing: 1.25, styletags: { breaklines: !0, bolds: !0, italics: !0, subscripts: !0, superscripts: !0, }, triangles: !0, }, s = n(t, o); o.triangles = !1; var l, c, u = n(t, o); if (r && 1 !== r) { for (l = 0; l < s.positions.length; ++l) for ( c = 0; c < s.positions[l].length; ++c ) s.positions[l][c] /= r; for (l = 0; l < u.positions.length; ++l) for ( c = 0; c < u.positions[l].length; ++c ) u.positions[l][c] /= r; } var f = [ [1 / 0, 1 / 0], [-1 / 0, -1 / 0], ], h = u.positions.length; for (l = 0; l < h; ++l) { var p = u.positions[l]; for (c = 0; c < 2; ++c) (f[0][c] = Math.min(f[0][c], p[c])), (f[1][c] = Math.max(f[1][c], p[c])); } return (a[t] = [s, u, f]); }; var i = {}; }, { "vectorize-text": 311 }, ], 127: [ function (t, e, r) { var n = t("gl-shader"), i = t("glslify"), a = i([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 glyph;\nattribute vec4 id;\n\nuniform vec4 highlightId;\nuniform float highlightScale;\nuniform mat4 model, view, projection;\nuniform vec3 clipBounds[2];\n\nvarying vec4 interpColor;\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0,0,0,0);\n } else {\n float scale = 1.0;\n if(distance(highlightId, id) < 0.0001) {\n scale = highlightScale;\n }\n\n vec4 worldPosition = model * vec4(position, 1);\n vec4 viewPosition = view * worldPosition;\n viewPosition = viewPosition / viewPosition.w;\n vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0));\n\n gl_Position = clipPosition;\n interpColor = color;\n pickId = id;\n dataCoordinate = position;\n }\n}", ]), o = i([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 glyph;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform vec2 screenSize;\nuniform vec3 clipBounds[2];\nuniform float highlightScale, pixelRatio;\nuniform vec4 highlightId;\n\nvarying vec4 interpColor;\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0,0,0,0);\n } else {\n float scale = pixelRatio;\n if(distance(highlightId.bgr, id.bgr) < 0.001) {\n scale *= highlightScale;\n }\n\n vec4 worldPosition = model * vec4(position, 1.0);\n vec4 viewPosition = view * worldPosition;\n vec4 clipPosition = projection * viewPosition;\n clipPosition /= clipPosition.w;\n\n gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0);\n interpColor = color;\n pickId = id;\n dataCoordinate = position;\n }\n}", ]), s = i([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 glyph;\nattribute vec4 id;\n\nuniform float highlightScale;\nuniform vec4 highlightId;\nuniform vec3 axes[2];\nuniform mat4 model, view, projection;\nuniform vec2 screenSize;\nuniform vec3 clipBounds[2];\nuniform float scale, pixelRatio;\n\nvarying vec4 interpColor;\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0,0,0,0);\n } else {\n float lscale = pixelRatio * scale;\n if(distance(highlightId, id) < 0.0001) {\n lscale *= highlightScale;\n }\n\n vec4 clipCenter = projection * view * model * vec4(position, 1);\n vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y;\n vec4 clipPosition = projection * view * model * vec4(dataPosition, 1);\n\n gl_Position = clipPosition;\n interpColor = color;\n pickId = id;\n dataCoordinate = dataPosition;\n }\n}\n", ]), l = i([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 fragClipBounds[2];\nuniform float opacity;\n\nvarying vec4 interpColor;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (\n outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) ||\n interpColor.a * opacity == 0.\n ) discard;\n gl_FragColor = interpColor * opacity;\n}\n", ]), c = i([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 fragClipBounds[2];\nuniform float pickGroup;\n\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard;\n\n gl_FragColor = vec4(pickGroup, pickId.bgr);\n}", ]), u = [ { name: "position", type: "vec3" }, { name: "color", type: "vec4" }, { name: "glyph", type: "vec2" }, { name: "id", type: "vec4" }, ], f = { vertex: a, fragment: l, attributes: u }, h = { vertex: o, fragment: l, attributes: u }, p = { vertex: s, fragment: l, attributes: u }, d = { vertex: a, fragment: c, attributes: u }, m = { vertex: o, fragment: c, attributes: u }, g = { vertex: s, fragment: c, attributes: u }; function v(t, e) { var r = n(t, e), i = r.attributes; return ( (i.position.location = 0), (i.color.location = 1), (i.glyph.location = 2), (i.id.location = 3), r ); } (r.createPerspective = function (t) { return v(t, f); }), (r.createOrtho = function (t) { return v(t, h); }), (r.createProject = function (t) { return v(t, p); }), (r.createPickPerspective = function (t) { return v(t, d); }), (r.createPickOrtho = function (t) { return v(t, m); }), (r.createPickProject = function (t) { return v(t, g); }); }, { "gl-shader": 132, glslify: 231 }, ], 128: [ function (t, e, r) { "use strict"; var n = t("is-string-blank"), i = t("gl-buffer"), a = t("gl-vao"), o = t("typedarray-pool"), s = t("gl-mat4/multiply"), l = t("./lib/shaders"), c = t("./lib/glyphs"), u = t("./lib/get-simple-string"), f = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ]; function h(t, e) { var r = t[0], n = t[1], i = t[2], a = t[3]; return ( (t[0] = e[0] * r + e[4] * n + e[8] * i + e[12] * a), (t[1] = e[1] * r + e[5] * n + e[9] * i + e[13] * a), (t[2] = e[2] * r + e[6] * n + e[10] * i + e[14] * a), (t[3] = e[3] * r + e[7] * n + e[11] * i + e[15] * a), t ); } function p(t, e, r, n) { return h(n, n), h(n, n), h(n, n); } function d(t, e) { (this.index = t), (this.dataCoordinate = this.position = e); } function m(t) { return !0 === t || t > 1 ? 1 : t; } function g(t, e, r, n, i, a, o, s, l, c, u, f) { (this.gl = t), (this.pixelRatio = 1), (this.shader = e), (this.orthoShader = r), (this.projectShader = n), (this.pointBuffer = i), (this.colorBuffer = a), (this.glyphBuffer = o), (this.idBuffer = s), (this.vao = l), (this.vertexCount = 0), (this.lineVertexCount = 0), (this.opacity = 1), (this.hasAlpha = !1), (this.lineWidth = 0), (this.projectScale = [2 / 3, 2 / 3, 2 / 3]), (this.projectOpacity = [1, 1, 1]), (this.projectHasAlpha = !1), (this.pickId = 0), (this.pickPerspectiveShader = c), (this.pickOrthoShader = u), (this.pickProjectShader = f), (this.points = []), (this._selectResult = new d(0, [0, 0, 0])), (this.useOrtho = !0), (this.bounds = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ]), (this.axesProject = [!0, !0, !0]), (this.axesBounds = [ [-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0], ]), (this.highlightId = [1, 1, 1, 1]), (this.highlightScale = 2), (this.clipBounds = [ [-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0], ]), (this.dirty = !0); } e.exports = function (t) { var e = t.gl, r = l.createPerspective(e), n = l.createOrtho(e), o = l.createProject(e), s = l.createPickPerspective(e), c = l.createPickOrtho(e), u = l.createPickProject(e), f = i(e), h = i(e), p = i(e), d = i(e), m = a(e, [ { buffer: f, size: 3, type: e.FLOAT }, { buffer: h, size: 4, type: e.FLOAT }, { buffer: p, size: 2, type: e.FLOAT }, { buffer: d, size: 4, type: e.UNSIGNED_BYTE, normalized: !0, }, ]), v = new g( e, r, n, o, f, h, p, d, m, s, c, u, ); return v.update(t), v; }; var v = g.prototype; (v.pickSlots = 1), (v.setPickBase = function (t) { this.pickId = t; }), (v.isTransparent = function () { if (this.hasAlpha) return !0; for (var t = 0; t < 3; ++t) if ( this.axesProject[t] && this.projectHasAlpha ) return !0; return !1; }), (v.isOpaque = function () { if (!this.hasAlpha) return !0; for (var t = 0; t < 3; ++t) if ( this.axesProject[t] && !this.projectHasAlpha ) return !0; return !1; }); var y = [0, 0], x = [0, 0, 0], b = [0, 0, 0], _ = [0, 0, 0, 1], w = [0, 0, 0, 1], T = f.slice(), k = [0, 0, 0], A = [ [0, 0, 0], [0, 0, 0], ]; function M(t) { return (t[0] = t[1] = t[2] = 0), t; } function S(t, e) { return ( (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), (t[3] = 1), t ); } function E(t, e, r, n) { return ( (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), (t[r] = n), t ); } function L(t, e, r, n) { var i, a = e.axesProject, o = e.gl, l = t.uniforms, c = r.model || f, u = r.view || f, h = r.projection || f, d = e.axesBounds, m = (function (t) { for (var e = A, r = 0; r < 2; ++r) for (var n = 0; n < 3; ++n) e[r][n] = Math.max( Math.min(t[r][n], 1e8), -1e8, ); return e; })(e.clipBounds); (i = e.axes && e.axes.lastCubeProps ? e.axes.lastCubeProps.axis : [1, 1, 1]), (y[0] = 2 / o.drawingBufferWidth), (y[1] = 2 / o.drawingBufferHeight), t.bind(), (l.view = u), (l.projection = h), (l.screenSize = y), (l.highlightId = e.highlightId), (l.highlightScale = e.highlightScale), (l.clipBounds = m), (l.pickGroup = e.pickId / 255), (l.pixelRatio = n); for (var g = 0; g < 3; ++g) if (a[g]) { (l.scale = e.projectScale[g]), (l.opacity = e.projectOpacity[g]); for (var v = T, L = 0; L < 16; ++L) v[L] = 0; for (L = 0; L < 4; ++L) v[5 * L] = 1; (v[5 * g] = 0), i[g] < 0 ? (v[12 + g] = d[0][g]) : (v[12 + g] = d[1][g]), s(v, c, v), (l.model = v); var C = (g + 1) % 3, P = (g + 2) % 3, I = M(x), O = M(b); (I[C] = 1), (O[P] = 1); var z = p(0, 0, 0, S(_, I)), D = p(0, 0, 0, S(w, O)); if (Math.abs(z[1]) > Math.abs(D[1])) { var R = z; (z = D), (D = R), (R = I), (I = O), (O = R); var F = C; (C = P), (P = F); } z[0] < 0 && (I[C] = -1), D[1] > 0 && (O[P] = -1); var B = 0, N = 0; for (L = 0; L < 4; ++L) (B += Math.pow(c[4 * C + L], 2)), (N += Math.pow(c[4 * P + L], 2)); (I[C] /= Math.sqrt(B)), (O[P] /= Math.sqrt(N)), (l.axes[0] = I), (l.axes[1] = O), (l.fragClipBounds[0] = E( k, m[0], g, -1e8, )), (l.fragClipBounds[1] = E( k, m[1], g, 1e8, )), e.vao.bind(), e.vao.draw(o.TRIANGLES, e.vertexCount), e.lineWidth > 0 && (o.lineWidth(e.lineWidth * n), e.vao.draw( o.LINES, e.lineVertexCount, e.vertexCount, )), e.vao.unbind(); } } var C = [ [-1e8, -1e8, -1e8], [1e8, 1e8, 1e8], ]; function P(t, e, r, n, i, a, o) { var s = r.gl; if ( ((a === r.projectHasAlpha || o) && L(e, r, n, i), a === r.hasAlpha || o) ) { t.bind(); var l = t.uniforms; (l.model = n.model || f), (l.view = n.view || f), (l.projection = n.projection || f), (y[0] = 2 / s.drawingBufferWidth), (y[1] = 2 / s.drawingBufferHeight), (l.screenSize = y), (l.highlightId = r.highlightId), (l.highlightScale = r.highlightScale), (l.fragClipBounds = C), (l.clipBounds = r.axes.bounds), (l.opacity = r.opacity), (l.pickGroup = r.pickId / 255), (l.pixelRatio = i), r.vao.bind(), r.vao.draw(s.TRIANGLES, r.vertexCount), r.lineWidth > 0 && (s.lineWidth(r.lineWidth * i), r.vao.draw( s.LINES, r.lineVertexCount, r.vertexCount, )), r.vao.unbind(); } } function I(t, e, r, i) { var a; (a = Array.isArray(t) ? e < t.length ? t[e] : void 0 : t), (a = u(a)); var o = !0; n(a) && ((a = "\u25bc"), (o = !1)); var s = c(a, r, i); return { mesh: s[0], lines: s[1], bounds: s[2], visible: o, }; } (v.draw = function (t) { P( this.useOrtho ? this.orthoShader : this.shader, this.projectShader, this, t, this.pixelRatio, !1, !1, ); }), (v.drawTransparent = function (t) { P( this.useOrtho ? this.orthoShader : this.shader, this.projectShader, this, t, this.pixelRatio, !0, !1, ); }), (v.drawPick = function (t) { P( this.useOrtho ? this.pickOrthoShader : this.pickPerspectiveShader, this.pickProjectShader, this, t, 1, !0, !0, ); }), (v.pick = function (t) { if (!t) return null; if (t.id !== this.pickId) return null; var e = t.value[2] + (t.value[1] << 8) + (t.value[0] << 16); if (e >= this.pointCount || e < 0) return null; var r = this.points[e], n = this._selectResult; n.index = e; for (var i = 0; i < 3; ++i) n.position[i] = n.dataCoordinate[i] = r[i]; return n; }), (v.highlight = function (t) { if (t) { var e = t.index, r = 255 & e, n = (e >> 8) & 255, i = (e >> 16) & 255; this.highlightId = [ r / 255, n / 255, i / 255, 0, ]; } else this.highlightId = [1, 1, 1, 1]; }), (v.update = function (t) { if ( ("perspective" in (t = t || {}) && (this.useOrtho = !t.perspective), "orthographic" in t && (this.useOrtho = !!t.orthographic), "lineWidth" in t && (this.lineWidth = t.lineWidth), "project" in t) ) if (Array.isArray(t.project)) this.axesProject = t.project; else { var e = !!t.project; this.axesProject = [e, e, e]; } if ("projectScale" in t) if (Array.isArray(t.projectScale)) this.projectScale = t.projectScale.slice(); else { var r = +t.projectScale; this.projectScale = [r, r, r]; } if ( ((this.projectHasAlpha = !1), "projectOpacity" in t) ) { if (Array.isArray(t.projectOpacity)) this.projectOpacity = t.projectOpacity.slice(); else { r = +t.projectOpacity; this.projectOpacity = [r, r, r]; } for (var n = 0; n < 3; ++n) (this.projectOpacity[n] = m( this.projectOpacity[n], )), this.projectOpacity[n] < 1 && (this.projectHasAlpha = !0); } (this.hasAlpha = !1), "opacity" in t && ((this.opacity = m(t.opacity)), this.opacity < 1 && (this.hasAlpha = !0)), (this.dirty = !0); var i, a, s = t.position, l = t.font || "normal", c = t.alignment || [0, 0]; if (2 === c.length) (i = c[0]), (a = c[1]); else { (i = []), (a = []); for (n = 0; n < c.length; ++n) (i[n] = c[n][0]), (a[n] = c[n][1]); } var u = [1 / 0, 1 / 0, 1 / 0], f = [-1 / 0, -1 / 0, -1 / 0], h = t.glyph, p = t.color, d = t.size, g = t.angle, v = t.lineColor, y = -1, x = 0, b = 0, _ = 0; if (s.length) { _ = s.length; t: for (n = 0; n < _; ++n) { for (var w = s[n], T = 0; T < 3; ++T) if (isNaN(w[T]) || !isFinite(w[T])) continue t; var k = (N = I( h, n, l, this.pixelRatio, )).mesh, A = N.lines, M = N.bounds; (x += 3 * k.cells.length), (b += 2 * A.edges.length); } } var S = x + b, E = o.mallocFloat(3 * S), L = o.mallocFloat(4 * S), C = o.mallocFloat(2 * S), P = o.mallocUint32(S); if (S > 0) { var O = 0, z = x, D = [0, 0, 0, 1], R = [0, 0, 0, 1], F = Array.isArray(p) && Array.isArray(p[0]), B = Array.isArray(v) && Array.isArray(v[0]); t: for (n = 0; n < _; ++n) { y += 1; for (w = s[n], T = 0; T < 3; ++T) { if (isNaN(w[T]) || !isFinite(w[T])) continue t; (f[T] = Math.max(f[T], w[T])), (u[T] = Math.min(u[T], w[T])); } (k = (N = I(h, n, l, this.pixelRatio)) .mesh), (A = N.lines), (M = N.bounds); var N, j = N.visible; if (j) if (Array.isArray(p)) { if ( 3 === (U = F ? n < p.length ? p[n] : [0, 0, 0, 0] : p).length ) { for (T = 0; T < 3; ++T) D[T] = U[T]; D[3] = 1; } else if (4 === U.length) { for (T = 0; T < 4; ++T) D[T] = U[T]; !this.hasAlpha && U[3] < 1 && (this.hasAlpha = !0); } } else (D[0] = D[1] = D[2] = 0), (D[3] = 1); else D = [1, 1, 1, 0]; if (j) if (Array.isArray(v)) { var U; if ( 3 === (U = B ? n < v.length ? v[n] : [0, 0, 0, 0] : v).length ) { for (T = 0; T < 3; ++T) R[T] = U[T]; R[T] = 1; } else if (4 === U.length) { for (T = 0; T < 4; ++T) R[T] = U[T]; !this.hasAlpha && U[3] < 1 && (this.hasAlpha = !0); } } else (R[0] = R[1] = R[2] = 0), (R[3] = 1); else R = [1, 1, 1, 0]; var V = 0.5; j ? Array.isArray(d) ? (V = n < d.length ? +d[n] : 12) : d ? (V = +d) : this.useOrtho && (V = 12) : (V = 0); var H = 0; Array.isArray(g) ? (H = n < g.length ? +g[n] : 0) : g && (H = +g); var q = Math.cos(H), G = Math.sin(H); for (w = s[n], T = 0; T < 3; ++T) (f[T] = Math.max(f[T], w[T])), (u[T] = Math.min(u[T], w[T])); var Y = i, W = a; Y = 0; Array.isArray(i) ? (Y = n < i.length ? i[n] : 0) : i && (Y = i); W = 0; Array.isArray(a) ? (W = n < a.length ? a[n] : 0) : a && (W = a); var Z = [ (Y *= Y > 0 ? 1 - M[0][0] : Y < 0 ? 1 + M[1][0] : 1), (W *= W > 0 ? 1 - M[0][1] : W < 0 ? 1 + M[1][1] : 1), ], X = k.cells || [], J = k.positions || []; for (T = 0; T < X.length; ++T) for ( var K = X[T], Q = 0; Q < 3; ++Q ) { for (var $ = 0; $ < 3; ++$) E[3 * O + $] = w[$]; for ($ = 0; $ < 4; ++$) L[4 * O + $] = D[$]; P[O] = y; var tt = J[K[Q]]; (C[2 * O] = V * (q * tt[0] - G * tt[1] + Z[0])), (C[2 * O + 1] = V * (G * tt[0] + q * tt[1] + Z[1])), (O += 1); } for ( X = A.edges, J = A.positions, T = 0; T < X.length; ++T ) for (K = X[T], Q = 0; Q < 2; ++Q) { for ($ = 0; $ < 3; ++$) E[3 * z + $] = w[$]; for ($ = 0; $ < 4; ++$) L[4 * z + $] = R[$]; P[z] = y; tt = J[K[Q]]; (C[2 * z] = V * (q * tt[0] - G * tt[1] + Z[0])), (C[2 * z + 1] = V * (G * tt[0] + q * tt[1] + Z[1])), (z += 1); } } } (this.bounds = [u, f]), (this.points = s), (this.pointCount = s.length), (this.vertexCount = x), (this.lineVertexCount = b), this.pointBuffer.update(E), this.colorBuffer.update(L), this.glyphBuffer.update(C), this.idBuffer.update(P), o.free(E), o.free(L), o.free(C), o.free(P); }), (v.dispose = function () { this.shader.dispose(), this.orthoShader.dispose(), this.pickPerspectiveShader.dispose(), this.pickOrthoShader.dispose(), this.vao.dispose(), this.pointBuffer.dispose(), this.colorBuffer.dispose(), this.glyphBuffer.dispose(), this.idBuffer.dispose(); }); }, { "./lib/get-simple-string": 125, "./lib/glyphs": 126, "./lib/shaders": 127, "gl-buffer": 78, "gl-mat4/multiply": 100, "gl-vao": 150, "is-string-blank": 239, "typedarray-pool": 308, }, ], 129: [ function (t, e, r) { "use strict"; var n = t("glslify"); (r.boxVertex = n([ "precision mediump float;\n#define GLSLIFY 1\n\nattribute vec2 vertex;\n\nuniform vec2 cornerA, cornerB;\n\nvoid main() {\n gl_Position = vec4(mix(cornerA, cornerB, vertex), 0, 1);\n}\n", ])), (r.boxFragment = n([ "precision mediump float;\n#define GLSLIFY 1\n\nuniform vec4 color;\n\nvoid main() {\n gl_FragColor = color;\n}\n", ])); }, { glslify: 231 }, ], 130: [ function (t, e, r) { "use strict"; var n = t("gl-shader"), i = t("gl-buffer"), a = t("./lib/shaders"); function o(t, e, r) { (this.plot = t), (this.boxBuffer = e), (this.boxShader = r), (this.enabled = !0), (this.selectBox = [ 1 / 0, 1 / 0, -1 / 0, -1 / 0, ]), (this.borderColor = [0, 0, 0, 1]), (this.innerFill = !1), (this.innerColor = [0, 0, 0, 0.25]), (this.outerFill = !0), (this.outerColor = [0, 0, 0, 0.5]), (this.borderWidth = 10); } e.exports = function (t, e) { var r = t.gl, s = i(r, [0, 0, 0, 1, 1, 0, 1, 1]), l = n(r, a.boxVertex, a.boxFragment), c = new o(t, s, l); return c.update(e), t.addOverlay(c), c; }; var s = o.prototype; (s.draw = function () { if (this.enabled) { var t = this.plot, e = this.selectBox, r = this.borderWidth, n = (this.innerFill, this.innerColor), i = (this.outerFill, this.outerColor), a = this.borderColor, o = t.box, s = t.screenBox, l = t.dataBox, c = t.viewBox, u = t.pixelRatio, f = ((e[0] - l[0]) * (c[2] - c[0])) / (l[2] - l[0]) + c[0], h = ((e[1] - l[1]) * (c[3] - c[1])) / (l[3] - l[1]) + c[1], p = ((e[2] - l[0]) * (c[2] - c[0])) / (l[2] - l[0]) + c[0], d = ((e[3] - l[1]) * (c[3] - c[1])) / (l[3] - l[1]) + c[1]; if ( ((f = Math.max(f, c[0])), (h = Math.max(h, c[1])), (p = Math.min(p, c[2])), (d = Math.min(d, c[3])), !(p < f || d < h)) ) { o.bind(); var m = s[2] - s[0], g = s[3] - s[1]; if ( (this.outerFill && (o.drawBox(0, 0, m, h, i), o.drawBox(0, h, f, d, i), o.drawBox(0, d, m, g, i), o.drawBox(p, h, m, d, i)), this.innerFill && o.drawBox(f, h, p, d, n), r > 0) ) { var v = r * u; o.drawBox( f - v, h - v, p + v, h + v, a, ), o.drawBox( f - v, d - v, p + v, d + v, a, ), o.drawBox( f - v, h - v, f + v, d + v, a, ), o.drawBox( p - v, h - v, p + v, d + v, a, ); } } } }), (s.update = function (t) { (t = t || {}), (this.innerFill = !!t.innerFill), (this.outerFill = !!t.outerFill), (this.innerColor = ( t.innerColor || [0, 0, 0, 0.5] ).slice()), (this.outerColor = ( t.outerColor || [0, 0, 0, 0.5] ).slice()), (this.borderColor = ( t.borderColor || [0, 0, 0, 1] ).slice()), (this.borderWidth = t.borderWidth || 0), (this.selectBox = ( t.selectBox || this.selectBox ).slice()); }), (s.dispose = function () { this.boxBuffer.dispose(), this.boxShader.dispose(), this.plot.removeOverlay(this); }); }, { "./lib/shaders": 129, "gl-buffer": 78, "gl-shader": 132, }, ], 131: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r = e[0], a = e[1], o = n(t, r, a, {}), s = i.mallocUint8(r * a * 4); return new l(t, o, s); }; var n = t("gl-fbo"), i = t("typedarray-pool"), a = t("ndarray"), o = t("bit-twiddle").nextPow2; function s(t, e, r, n, i) { (this.coord = [t, e]), (this.id = r), (this.value = n), (this.distance = i); } function l(t, e, r) { (this.gl = t), (this.fbo = e), (this.buffer = r), (this._readTimeout = null); var n = this; this._readCallback = function () { n.gl && (e.bind(), t.readPixels( 0, 0, e.shape[0], e.shape[1], t.RGBA, t.UNSIGNED_BYTE, n.buffer, ), (n._readTimeout = null)); }; } var c = l.prototype; Object.defineProperty(c, "shape", { get: function () { return this.gl ? this.fbo.shape.slice() : [0, 0]; }, set: function (t) { if (this.gl) { this.fbo.shape = t; var e = this.fbo.shape[0], r = this.fbo.shape[1]; if (r * e * 4 > this.buffer.length) { i.free(this.buffer); for ( var n = (this.buffer = i.mallocUint8( o(r * e * 4), )), a = 0; a < r * e * 4; ++a ) n[a] = 255; } return t; } }, }), (c.begin = function () { var t = this.gl; this.shape; t && (this.fbo.bind(), t.clearColor(1, 1, 1, 1), t.clear( t.COLOR_BUFFER_BIT | t.DEPTH_BUFFER_BIT, )); }), (c.end = function () { var t = this.gl; t && (t.bindFramebuffer(t.FRAMEBUFFER, null), this._readTimeout || clearTimeout(this._readTimeout), (this._readTimeout = setTimeout( this._readCallback, 1, ))); }), (c.query = function (t, e, r) { if (!this.gl) return null; var n = this.fbo.shape.slice(); (t |= 0), (e |= 0), "number" != typeof r && (r = 1); var i = 0 | Math.min(Math.max(t - r, 0), n[0]), o = 0 | Math.min(Math.max(t + r, 0), n[0]), l = 0 | Math.min(Math.max(e - r, 0), n[1]), c = 0 | Math.min(Math.max(e + r, 0), n[1]); if (o <= i || c <= l) return null; var u = [o - i, c - l], f = a( this.buffer, [u[0], u[1], 4], [4, 4 * n[0], 1], 4 * (i + n[0] * l), ), h = (function (t, e, r) { for ( var n = 1e8, i = -1, a = -1, o = t.shape[0], s = t.shape[1], l = 0; l < o; l++ ) for (var c = 0; c < s; c++) { var u = t.get(l, c, 0), f = t.get(l, c, 1), h = t.get(l, c, 2), p = t.get(l, c, 3); if ( u < 255 || f < 255 || h < 255 || p < 255 ) { var d = e - l, m = r - c, g = d * d + m * m; g < n && ((n = g), (i = l), (a = c)); } } return [i, a, n]; })(f.hi(u[0], u[1], 1), r, r), p = h[0], d = h[1]; return p < 0 || Math.pow(this.radius, 2) < h[2] ? null : new s( (p + i) | 0, (d + l) | 0, f.get(p, d, 0), [ f.get(p, d, 1), f.get(p, d, 2), f.get(p, d, 3), ], Math.sqrt(h[2]), ); }), (c.dispose = function () { this.gl && (this.fbo.dispose(), i.free(this.buffer), (this.gl = null), this._readTimeout && clearTimeout(this._readTimeout)); }); }, { "bit-twiddle": 32, "gl-fbo": 86, ndarray: 259, "typedarray-pool": 308, }, ], 132: [ function (t, e, r) { "use strict"; var n = t("./lib/create-uniforms"), i = t("./lib/create-attributes"), a = t("./lib/reflect"), o = t("./lib/shader-cache"), s = t("./lib/runtime-reflect"), l = t("./lib/GLError"); function c(t) { (this.gl = t), (this.gl.lastAttribCount = 0), (this._vref = this._fref = this._relink = this.vertShader = this.fragShader = this.program = this.attributes = this.uniforms = this.types = null); } var u = c.prototype; function f(t, e) { return t.name < e.name ? -1 : 1; } (u.bind = function () { var t; this.program || this._relink(); var e = this.gl.getProgramParameter( this.program, this.gl.ACTIVE_ATTRIBUTES, ), r = this.gl.lastAttribCount; if (e > r) for (t = r; t < e; t++) this.gl.enableVertexAttribArray(t); else if (r > e) for (t = e; t < r; t++) this.gl.disableVertexAttribArray(t); (this.gl.lastAttribCount = e), this.gl.useProgram(this.program); }), (u.dispose = function () { for ( var t = this.gl.lastAttribCount, e = 0; e < t; e++ ) this.gl.disableVertexAttribArray(e); (this.gl.lastAttribCount = 0), this._fref && this._fref.dispose(), this._vref && this._vref.dispose(), (this.attributes = this.types = this.vertShader = this.fragShader = this.program = this._relink = this._fref = this._vref = null); }), (u.update = function (t, e, r, c) { if (!e || 1 === arguments.length) { var u = t; (t = u.vertex), (e = u.fragment), (r = u.uniforms), (c = u.attributes); } var h = this, p = h.gl, d = h._vref; (h._vref = o.shader(p, p.VERTEX_SHADER, t)), d && d.dispose(), (h.vertShader = h._vref.shader); var m = this._fref; if ( ((h._fref = o.shader( p, p.FRAGMENT_SHADER, e, )), m && m.dispose(), (h.fragShader = h._fref.shader), !r || !c) ) { var g = p.createProgram(); if ( (p.attachShader(g, h.fragShader), p.attachShader(g, h.vertShader), p.linkProgram(g), !p.getProgramParameter( g, p.LINK_STATUS, )) ) { var v = p.getProgramInfoLog(g); throw new l( v, "Error linking program:" + v, ); } (r = r || s.uniforms(p, g)), (c = c || s.attributes(p, g)), p.deleteProgram(g); } (c = c.slice()).sort(f); var y, x = [], b = [], _ = []; for (y = 0; y < c.length; ++y) { var w = c[y]; if (w.type.indexOf("mat") >= 0) { for ( var T = 0 | w.type.charAt(w.type.length - 1), k = new Array(T), A = 0; A < T; ++A ) (k[A] = _.length), b.push(w.name + "[" + A + "]"), "number" == typeof w.location ? _.push(w.location + A) : Array.isArray(w.location) && w.location.length === T && "number" == typeof w.location[A] ? _.push(0 | w.location[A]) : _.push(-1); x.push({ name: w.name, type: w.type, locations: k, }); } else x.push({ name: w.name, type: w.type, locations: [_.length], }), b.push(w.name), "number" == typeof w.location ? _.push(0 | w.location) : _.push(-1); } var M = 0; for (y = 0; y < _.length; ++y) if (_[y] < 0) { for (; _.indexOf(M) >= 0; ) M += 1; _[y] = M; } var S = new Array(r.length); function E() { h.program = o.program( p, h._vref, h._fref, b, _, ); for (var t = 0; t < r.length; ++t) S[t] = p.getUniformLocation( h.program, r[t].name, ); } E(), (h._relink = E), (h.types = { uniforms: a(r), attributes: a(c), }), (h.attributes = i(p, h, x, _)), Object.defineProperty( h, "uniforms", n(p, h, r, S), ); }), (e.exports = function (t, e, r, n, i) { var a = new c(t); return a.update(e, r, n, i), a; }); }, { "./lib/GLError": 133, "./lib/create-attributes": 134, "./lib/create-uniforms": 135, "./lib/reflect": 136, "./lib/runtime-reflect": 137, "./lib/shader-cache": 138, }, ], 133: [ function (t, e, r) { function n(t, e, r) { (this.shortMessage = e || ""), (this.longMessage = r || ""), (this.rawError = t || ""), (this.message = "gl-shader: " + (e || t || "") + (r ? "\n" + r : "")), (this.stack = new Error().stack); } (n.prototype = new Error()), (n.prototype.name = "GLError"), (n.prototype.constructor = n), (e.exports = n); }, {}, ], 134: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, i) { for ( var a = {}, o = 0, c = r.length; o < c; ++o ) { var u = r[o], f = u.name, h = u.type, p = u.locations; switch (h) { case "bool": case "int": case "float": s(t, e, p[0], i, 1, a, f); break; default: if (h.indexOf("vec") >= 0) { if ( (d = h.charCodeAt(h.length - 1) - 48) < 2 || d > 4 ) throw new n( "", "Invalid data type for attribute " + f + ": " + h, ); s(t, e, p[0], i, d, a, f); } else { if (!(h.indexOf("mat") >= 0)) throw new n( "", "Unknown data type for attribute " + f + ": " + h, ); var d; if ( (d = h.charCodeAt(h.length - 1) - 48) < 2 || d > 4 ) throw new n( "", "Invalid data type for attribute " + f + ": " + h, ); l(t, e, p, i, d, a, f); } } } return a; }; var n = t("./GLError"); function i(t, e, r, n, i, a) { (this._gl = t), (this._wrapper = e), (this._index = r), (this._locations = n), (this._dimension = i), (this._constFunc = a); } var a = i.prototype; (a.pointer = function (t, e, r, n) { var i = this._gl, a = this._locations[this._index]; i.vertexAttribPointer( a, this._dimension, t || i.FLOAT, !!e, r || 0, n || 0, ), i.enableVertexAttribArray(a); }), (a.set = function (t, e, r, n) { return this._constFunc( this._locations[this._index], t, e, r, n, ); }), Object.defineProperty(a, "location", { get: function () { return this._locations[this._index]; }, set: function (t) { return ( t !== this._locations[this._index] && ((this._locations[this._index] = 0 | t), (this._wrapper.program = null)), 0 | t ); }, }); var o = [ function (t, e, r) { return void 0 === r.length ? t.vertexAttrib1f(e, r) : t.vertexAttrib1fv(e, r); }, function (t, e, r, n) { return void 0 === r.length ? t.vertexAttrib2f(e, r, n) : t.vertexAttrib2fv(e, r); }, function (t, e, r, n, i) { return void 0 === r.length ? t.vertexAttrib3f(e, r, n, i) : t.vertexAttrib3fv(e, r); }, function (t, e, r, n, i, a) { return void 0 === r.length ? t.vertexAttrib4f(e, r, n, i, a) : t.vertexAttrib4fv(e, r); }, ]; function s(t, e, r, n, a, s, l) { var c = o[a], u = new i(t, e, r, n, a, c); Object.defineProperty(s, l, { set: function (e) { return ( t.disableVertexAttribArray(n[r]), c(t, n[r], e), e ); }, get: function () { return u; }, enumerable: !0, }); } function l(t, e, r, n, i, a, o) { for ( var l = new Array(i), c = new Array(i), u = 0; u < i; ++u ) s(t, e, r[u], n, i, l, u), (c[u] = l[u]); Object.defineProperty(l, "location", { set: function (t) { if (Array.isArray(t)) for (var e = 0; e < i; ++e) c[e].location = t[e]; else for (e = 0; e < i; ++e) c[e].location = t + e; return t; }, get: function () { for ( var t = new Array(i), e = 0; e < i; ++e ) t[e] = n[r[e]]; return t; }, enumerable: !0, }), (l.pointer = function (e, a, o, s) { (e = e || t.FLOAT), (a = !!a), (o = o || i * i), (s = s || 0); for (var l = 0; l < i; ++l) { var c = n[r[l]]; t.vertexAttribPointer( c, i, e, a, o, s + l * i, ), t.enableVertexAttribArray(c); } }); var f = new Array(i), h = t["vertexAttrib" + i + "fv"]; Object.defineProperty(a, o, { set: function (e) { for (var a = 0; a < i; ++a) { var o = n[r[a]]; if ( (t.disableVertexAttribArray(o), Array.isArray(e[0])) ) h.call(t, o, e[a]); else { for (var s = 0; s < i; ++s) f[s] = e[i * a + s]; h.call(t, o, f); } } return e; }, get: function () { return l; }, enumerable: !0, }); } }, { "./GLError": 133 }, ], 135: [ function (t, e, r) { "use strict"; var n = t("./reflect"), i = t("./GLError"); function a(t) { return function () { return t; }; } function o(t, e) { for (var r = new Array(t), n = 0; n < t; ++n) r[n] = e; return r; } e.exports = function (t, e, r, s) { function l(e) { return function (n) { for ( var a = (function t(e, r) { if ("object" != typeof r) return [[e, r]]; var n = []; for (var i in r) { var a = r[i], o = e; parseInt(i) + "" === i ? (o += "[" + i + "]") : (o += "." + i), "object" == typeof a ? n.push.apply(n, t(o, a)) : n.push([o, a]); } return n; })("", e), o = 0; o < a.length; ++o ) { var l = a[o], c = l[0], u = l[1]; if (s[u]) { var f = n; if ( "string" == typeof c && (0 === c.indexOf(".") || 0 === c.indexOf("[")) ) { var h = c; if ( (0 === c.indexOf(".") && (h = c.slice(1)), h.indexOf("]") === h.length - 1) ) { var p = h.indexOf("["), d = h.slice(0, p), m = h.slice( p + 1, h.length - 1, ); f = d ? n[d][m] : n[m]; } else f = n[h]; } var g, v = r[u].type; switch (v) { case "bool": case "int": case "sampler2D": case "samplerCube": t.uniform1i(s[u], f); break; case "float": t.uniform1f(s[u], f); break; default: var y = v.indexOf("vec"); if ( !( 0 <= y && y <= 1 && v.length === 4 + y ) ) { if ( 0 === v.indexOf("mat") && 4 === v.length ) { if ( (g = v.charCodeAt( v.length - 1, ) - 48) < 2 || g > 4 ) throw new i( "", "Invalid uniform dimension type for matrix " + name + ": " + v, ); t["uniformMatrix" + g + "fv"]( s[u], !1, f, ); break; } throw new i( "", "Unknown uniform data type for " + name + ": " + v, ); } if ( (g = v.charCodeAt(v.length - 1) - 48) < 2 || g > 4 ) throw new i( "", "Invalid data type", ); switch (v.charAt(0)) { case "b": case "i": t["uniform" + g + "iv"]( s[u], f, ); break; case "v": t["uniform" + g + "fv"]( s[u], f, ); break; default: throw new i( "", "Unrecognized data type for vector " + name + ": " + v, ); } } } } }; } function c(t, e, n) { if ("object" == typeof n) { var c = u(n); Object.defineProperty(t, e, { get: a(c), set: l(n), enumerable: !0, configurable: !1, }); } else s[n] ? Object.defineProperty(t, e, { get: ((f = n), function (t, e, r) { return t.getUniform( e.program, r[f], ); }), set: l(n), enumerable: !0, configurable: !1, }) : (t[e] = (function (t) { switch (t) { case "bool": return !1; case "int": case "sampler2D": case "samplerCube": case "float": return 0; default: var e = t.indexOf("vec"); if ( 0 <= e && e <= 1 && t.length === 4 + e ) { if ( (r = t.charCodeAt( t.length - 1, ) - 48) < 2 || r > 4 ) throw new i( "", "Invalid data type", ); return "b" === t.charAt(0) ? o(r, !1) : o(r, 0); } if ( 0 === t.indexOf("mat") && 4 === t.length ) { var r; if ( (r = t.charCodeAt( t.length - 1, ) - 48) < 2 || r > 4 ) throw new i( "", "Invalid uniform dimension type for matrix " + name + ": " + t, ); return o(r * r, 0); } throw new i( "", "Unknown uniform data type for " + name + ": " + t, ); } })(r[n].type)); var f; } function u(t) { var e; if (Array.isArray(t)) { e = new Array(t.length); for (var r = 0; r < t.length; ++r) c(e, r, t[r]); } else for (var n in ((e = {}), t)) c(e, n, t[n]); return e; } var f = n(r, !0); return { get: a(u(f)), set: l(f), enumerable: !0, configurable: !0, }; }; }, { "./GLError": 133, "./reflect": 136 }, ], 136: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { for (var r = {}, n = 0; n < t.length; ++n) for ( var i = t[n].name.split("."), a = r, o = 0; o < i.length; ++o ) { var s = i[o].split("["); if (s.length > 1) { s[0] in a || (a[s[0]] = []), (a = a[s[0]]); for (var l = 1; l < s.length; ++l) { var c = parseInt(s[l]); l < s.length - 1 || o < i.length - 1 ? (c in a || (l < s.length - 1 ? (a[c] = []) : (a[c] = {})), (a = a[c])) : (a[c] = e ? n : t[n].type); } } else o < i.length - 1 ? (s[0] in a || (a[s[0]] = {}), (a = a[s[0]])) : (a[s[0]] = e ? n : t[n].type); } return r; }; }, {}, ], 137: [ function (t, e, r) { "use strict"; (r.uniforms = function (t, e) { for ( var r = t.getProgramParameter( e, t.ACTIVE_UNIFORMS, ), n = [], i = 0; i < r; ++i ) { var o = t.getActiveUniform(e, i); if (o) { var s = a(t, o.type); if (o.size > 1) for (var l = 0; l < o.size; ++l) n.push({ name: o.name.replace( "[0]", "[" + l + "]", ), type: s, }); else n.push({ name: o.name, type: s }); } } return n; }), (r.attributes = function (t, e) { for ( var r = t.getProgramParameter( e, t.ACTIVE_ATTRIBUTES, ), n = [], i = 0; i < r; ++i ) { var o = t.getActiveAttrib(e, i); o && n.push({ name: o.name, type: a(t, o.type), }); } return n; }); var n = { FLOAT: "float", FLOAT_VEC2: "vec2", FLOAT_VEC3: "vec3", FLOAT_VEC4: "vec4", INT: "int", INT_VEC2: "ivec2", INT_VEC3: "ivec3", INT_VEC4: "ivec4", BOOL: "bool", BOOL_VEC2: "bvec2", BOOL_VEC3: "bvec3", BOOL_VEC4: "bvec4", FLOAT_MAT2: "mat2", FLOAT_MAT3: "mat3", FLOAT_MAT4: "mat4", SAMPLER_2D: "sampler2D", SAMPLER_CUBE: "samplerCube", }, i = null; function a(t, e) { if (!i) { var r = Object.keys(n); i = {}; for (var a = 0; a < r.length; ++a) { var o = r[a]; i[t[o]] = n[o]; } } return i[e]; } }, {}, ], 138: [ function (t, e, r) { "use strict"; (r.shader = function (t, e, r) { return u(t).getShaderReference(e, r); }), (r.program = function (t, e, r, n, i) { return u(t).getProgram(e, r, n, i); }); var n = t("./GLError"), i = t("gl-format-compiler-error"), a = new ( "undefined" == typeof WeakMap ? t("weakmap-shim") : WeakMap )(), o = 0; function s(t, e, r, n, i, a, o) { (this.id = t), (this.src = e), (this.type = r), (this.shader = n), (this.count = a), (this.programs = []), (this.cache = o); } function l(t) { (this.gl = t), (this.shaders = [{}, {}]), (this.programs = {}); } s.prototype.dispose = function () { if (0 == --this.count) { for ( var t = this.cache, e = t.gl, r = this.programs, n = 0, i = r.length; n < i; ++n ) { var a = t.programs[r[n]]; a && (delete t.programs[n], e.deleteProgram(a)); } e.deleteShader(this.shader), delete t.shaders[ (this.type === e.FRAGMENT_SHADER) | 0 ][this.src]; } }; var c = l.prototype; function u(t) { var e = a.get(t); return e || ((e = new l(t)), a.set(t, e)), e; } (c.getShaderReference = function (t, e) { var r = this.gl, a = this.shaders[ (t === r.FRAGMENT_SHADER) | 0 ], l = a[e]; if (l && r.isShader(l.shader)) l.count += 1; else { var c = (function (t, e, r) { var a = t.createShader(e); if ( (t.shaderSource(a, r), t.compileShader(a), !t.getShaderParameter( a, t.COMPILE_STATUS, )) ) { var o = t.getShaderInfoLog(a); try { var s = i(o, r, e); } catch (t) { throw ( (console.warn( "Failed to format compiler error: " + t, ), new n( o, "Error compiling shader:\n" + o, )) ); } throw new n(o, s.short, s.long); } return a; })(r, t, e); l = a[e] = new s(o++, e, t, c, [], 1, this); } return l; }), (c.getProgram = function (t, e, r, i) { var a = [ t.id, e.id, r.join(":"), i.join(":"), ].join("@"), o = this.programs[a]; return ( (o && this.gl.isProgram(o)) || ((this.programs[a] = o = (function (t, e, r, i, a) { var o = t.createProgram(); t.attachShader(o, e), t.attachShader(o, r); for (var s = 0; s < i.length; ++s) t.bindAttribLocation( o, a[s], i[s], ); if ( (t.linkProgram(o), !t.getProgramParameter( o, t.LINK_STATUS, )) ) { var l = t.getProgramInfoLog(o); throw new n( l, "Error linking program: " + l, ); } return o; })( this.gl, t.shader, e.shader, r, i, )), t.programs.push(a), e.programs.push(a)), o ); }); }, { "./GLError": 133, "gl-format-compiler-error": 87, "weakmap-shim": 316, }, ], 139: [ function (t, e, r) { "use strict"; function n(t) { (this.plot = t), (this.enable = [!0, !0, !1, !1]), (this.width = [1, 1, 1, 1]), (this.color = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.center = [1 / 0, 1 / 0]); } e.exports = function (t, e) { var r = new n(t); return r.update(e), t.addOverlay(r), r; }; var i = n.prototype; (i.update = function (t) { (t = t || {}), (this.enable = ( t.enable || [!0, !0, !1, !1] ).slice()), (this.width = ( t.width || [1, 1, 1, 1] ).slice()), (this.color = ( t.color || [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ] ).map(function (t) { return t.slice(); })), (this.center = ( t.center || [1 / 0, 1 / 0] ).slice()), this.plot.setOverlayDirty(); }), (i.draw = function () { var t = this.enable, e = this.width, r = this.color, n = this.center, i = this.plot, a = i.line, o = i.dataBox, s = i.viewBox; if ( (a.bind(), o[0] <= n[0] && n[0] <= o[2] && o[1] <= n[1] && n[1] <= o[3]) ) { var l = s[0] + ((n[0] - o[0]) / (o[2] - o[0])) * (s[2] - s[0]), c = s[1] + ((n[1] - o[1]) / (o[3] - o[1])) * (s[3] - s[1]); t[0] && a.drawLine(l, c, s[0], c, e[0], r[0]), t[1] && a.drawLine(l, c, l, s[1], e[1], r[1]), t[2] && a.drawLine(l, c, s[2], c, e[2], r[2]), t[3] && a.drawLine(l, c, l, s[3], e[3], r[3]); } }), (i.dispose = function () { this.plot.removeOverlay(this); }); }, {}, ], 140: [ function (t, e, r) { "use strict"; var n = t("glslify"), i = t("gl-shader"), a = n([ "precision mediump float;\n#define GLSLIFY 1\n\nattribute vec3 position, color;\nattribute float weight;\n\nuniform mat4 model, view, projection;\nuniform vec3 coordinates[3];\nuniform vec4 colors[3];\nuniform vec2 screenShape;\nuniform float lineWidth;\n\nvarying vec4 fragColor;\n\nvoid main() {\n vec3 vertexPosition = mix(coordinates[0],\n mix(coordinates[2], coordinates[1], 0.5 * (position + 1.0)), abs(position));\n\n vec4 clipPos = projection * view * model * vec4(vertexPosition, 1.0);\n vec2 clipOffset = (projection * view * model * vec4(color, 0.0)).xy;\n vec2 delta = weight * clipOffset * screenShape;\n vec2 lineOffset = normalize(vec2(delta.y, -delta.x)) / screenShape;\n\n gl_Position = vec4(clipPos.xy + clipPos.w * 0.5 * lineWidth * lineOffset, clipPos.z, clipPos.w);\n fragColor = color.x * colors[0] + color.y * colors[1] + color.z * colors[2];\n}\n", ]), o = n([ "precision mediump float;\n#define GLSLIFY 1\n\nvarying vec4 fragColor;\n\nvoid main() {\n gl_FragColor = fragColor;\n}", ]); e.exports = function (t) { return i(t, a, o, null, [ { name: "position", type: "vec3" }, { name: "color", type: "vec3" }, { name: "weight", type: "float" }, ]); }; }, { "gl-shader": 132, glslify: 231 }, ], 141: [ function (t, e, r) { "use strict"; var n = t("gl-buffer"), i = t("gl-vao"), a = t("./shaders/index"); e.exports = function (t, e) { var r = []; function o(t, e, n, i, a, o) { var s = [t, e, n, 0, 0, 0, 1]; (s[i + 3] = 1), (s[i] = a), r.push.apply(r, s), (s[6] = -1), r.push.apply(r, s), (s[i] = o), r.push.apply(r, s), r.push.apply(r, s), (s[6] = 1), r.push.apply(r, s), (s[i] = a), r.push.apply(r, s); } o(0, 0, 0, 0, 0, 1), o(0, 0, 0, 1, 0, 1), o(0, 0, 0, 2, 0, 1), o(1, 0, 0, 1, -1, 1), o(1, 0, 0, 2, -1, 1), o(0, 1, 0, 0, -1, 1), o(0, 1, 0, 2, -1, 1), o(0, 0, 1, 0, -1, 1), o(0, 0, 1, 1, -1, 1); var l = n(t, r), c = i(t, [ { type: t.FLOAT, buffer: l, size: 3, offset: 0, stride: 28, }, { type: t.FLOAT, buffer: l, size: 3, offset: 12, stride: 28, }, { type: t.FLOAT, buffer: l, size: 1, offset: 24, stride: 28, }, ]), u = a(t); (u.attributes.position.location = 0), (u.attributes.color.location = 1), (u.attributes.weight.location = 2); var f = new s(t, l, c, u); return f.update(e), f; }; var o = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ]; function s(t, e, r, n) { (this.gl = t), (this.buffer = e), (this.vao = r), (this.shader = n), (this.pixelRatio = 1), (this.bounds = [ [-1e3, -1e3, -1e3], [1e3, 1e3, 1e3], ]), (this.position = [0, 0, 0]), (this.lineWidth = [2, 2, 2]), (this.colors = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.enabled = [!0, !0, !0]), (this.drawSides = [!0, !0, !0]), (this.axes = null); } var l = s.prototype, c = [0, 0, 0], u = [0, 0, 0], f = [0, 0]; (l.isTransparent = function () { return !1; }), (l.drawTransparent = function (t) {}), (l.draw = function (t) { var e = this.gl, r = this.vao, n = this.shader; r.bind(), n.bind(); var i, a = t.model || o, s = t.view || o, l = t.projection || o; this.axes && (i = this.axes.lastCubeProps.axis); for (var h = c, p = u, d = 0; d < 3; ++d) i && i[d] < 0 ? ((h[d] = this.bounds[0][d]), (p[d] = this.bounds[1][d])) : ((h[d] = this.bounds[1][d]), (p[d] = this.bounds[0][d])); (f[0] = e.drawingBufferWidth), (f[1] = e.drawingBufferHeight), (n.uniforms.model = a), (n.uniforms.view = s), (n.uniforms.projection = l), (n.uniforms.coordinates = [ this.position, h, p, ]), (n.uniforms.colors = this.colors), (n.uniforms.screenShape = f); for (d = 0; d < 3; ++d) (n.uniforms.lineWidth = this.lineWidth[d] * this.pixelRatio), this.enabled[d] && (r.draw(e.TRIANGLES, 6, 6 * d), this.drawSides[d] && r.draw( e.TRIANGLES, 12, 18 + 12 * d, )); r.unbind(); }), (l.update = function (t) { t && ("bounds" in t && (this.bounds = t.bounds), "position" in t && (this.position = t.position), "lineWidth" in t && (this.lineWidth = t.lineWidth), "colors" in t && (this.colors = t.colors), "enabled" in t && (this.enabled = t.enabled), "drawSides" in t && (this.drawSides = t.drawSides)); }), (l.dispose = function () { this.vao.dispose(), this.buffer.dispose(), this.shader.dispose(); }); }, { "./shaders/index": 140, "gl-buffer": 78, "gl-vao": 150, }, ], 142: [ function (t, e, r) { var n = t("glslify"), i = n([ "precision highp float;\n\nprecision highp float;\n#define GLSLIFY 1\n\nvec3 getOrthogonalVector(vec3 v) {\n // Return up-vector for only-z vector.\n // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\n // From the above if-statement we have ||a|| > 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the tube vertex and normal at the given index.\n//\n// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.\n//\n// Each tube segment is made up of a ring of vertices.\n// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.\n// The indexes of tube segments run from 0 to 8.\n//\nvec3 getTubePosition(vec3 d, float index, out vec3 normal) {\n float segmentCount = 8.0;\n\n float angle = 2.0 * 3.14159 * (index / segmentCount);\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d);\n vec3 y = v * sin(angle) * length(d);\n vec3 v3 = x + y;\n\n normal = normalize(v3);\n\n return v3;\n}\n\nattribute vec4 vector;\nattribute vec4 color, position;\nattribute vec2 uv;\n\nuniform float vectorScale, tubeScale;\nuniform mat4 model, view, projection, inverseModel;\nuniform vec3 eyePosition, lightPosition;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n // Scale the vector magnitude to stay constant with\n // model & view changes.\n vec3 normal;\n vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);\n vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n\n //Lighting geometry parameters\n vec4 cameraCoordinate = view * tubePosition;\n cameraCoordinate.xyz /= cameraCoordinate.w;\n f_lightDirection = lightPosition - cameraCoordinate.xyz;\n f_eyeDirection = eyePosition - cameraCoordinate.xyz;\n f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\n\n // vec4 m_position = model * vec4(tubePosition, 1.0);\n vec4 t_position = view * tubePosition;\n gl_Position = projection * t_position;\n\n f_color = color;\n f_data = tubePosition.xyz;\n f_position = position.xyz;\n f_uv = uv;\n}\n", ]), a = n([ "#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n#define GLSLIFY 1\n\nfloat beckmannDistribution(float x, float roughness) {\n float NdotH = max(x, 0.0001);\n float cos2Alpha = NdotH * NdotH;\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\n float roughness2 = roughness * roughness;\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\n return exp(tan2Alpha / roughness2) / denom;\n}\n\nfloat cookTorranceSpecular(\n vec3 lightDirection,\n vec3 viewDirection,\n vec3 surfaceNormal,\n float roughness,\n float fresnel) {\n\n float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\n float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\n\n //Half angle vector\n vec3 H = normalize(lightDirection + viewDirection);\n\n //Geometric term\n float NdotH = max(dot(surfaceNormal, H), 0.0);\n float VdotH = max(dot(viewDirection, H), 0.000001);\n float LdotH = max(dot(lightDirection, H), 0.000001);\n float G1 = (2.0 * NdotH * VdotN) / VdotH;\n float G2 = (2.0 * NdotH * LdotN) / LdotH;\n float G = min(1.0, min(G1, G2));\n \n //Distribution term\n float D = beckmannDistribution(NdotH, roughness);\n\n //Fresnel term\n float F = pow(1.0 - VdotN, fresnel);\n\n //Multiply terms and done\n return G * F * D / max(3.14159265 * VdotN, 0.000001);\n}\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\nuniform sampler2D texture;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n vec3 N = normalize(f_normal);\n vec3 L = normalize(f_lightDirection);\n vec3 V = normalize(f_eyeDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n vec4 surfaceColor = f_color * texture2D(texture, f_uv);\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = litColor * opacity;\n}\n", ]), o = n([ "precision highp float;\n\nprecision highp float;\n#define GLSLIFY 1\n\nvec3 getOrthogonalVector(vec3 v) {\n // Return up-vector for only-z vector.\n // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\n // From the above if-statement we have ||a|| > 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the tube vertex and normal at the given index.\n//\n// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.\n//\n// Each tube segment is made up of a ring of vertices.\n// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.\n// The indexes of tube segments run from 0 to 8.\n//\nvec3 getTubePosition(vec3 d, float index, out vec3 normal) {\n float segmentCount = 8.0;\n\n float angle = 2.0 * 3.14159 * (index / segmentCount);\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d);\n vec3 y = v * sin(angle) * length(d);\n vec3 v3 = x + y;\n\n normal = normalize(v3);\n\n return v3;\n}\n\nattribute vec4 vector;\nattribute vec4 position;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform float tubeScale;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n vec3 normal;\n vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);\n vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n\n gl_Position = projection * view * tubePosition;\n f_id = id;\n f_position = position.xyz;\n}\n", ]), s = n([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n\n gl_FragColor = vec4(pickId, f_id.xyz);\n}", ]); (r.meshShader = { vertex: i, fragment: a, attributes: [ { name: "position", type: "vec4" }, { name: "color", type: "vec4" }, { name: "uv", type: "vec2" }, { name: "vector", type: "vec4" }, ], }), (r.pickShader = { vertex: o, fragment: s, attributes: [ { name: "position", type: "vec4" }, { name: "id", type: "vec4" }, { name: "vector", type: "vec4" }, ], }); }, { glslify: 231 }, ], 143: [ function (t, e, r) { "use strict"; var n = t("gl-vec3"), i = t("gl-vec4"), a = [ "xyz", "xzy", "yxz", "yzx", "zxy", "zyx", ], o = function (t, e, r, a) { for (var o = 0, s = 0; s < t.length; s++) for ( var l = t[s].velocities, c = 0; c < l.length; c++ ) o = Math.max(o, n.length(l[c])); var u = t.map(function (t) { return (function (t, e, r, a) { for ( var o = t.points, s = t.velocities, l = t.divergences, c = [], u = [], f = [], h = [], p = [], d = [], m = 0, g = 0, v = i.create(), y = i.create(), x = 0; x < o.length; x++ ) { var b = o[x], _ = s[x], w = l[x]; 0 === e && (w = 0.05 * r), (g = n.length(_) / a), (v = i.create()), n.copy(v, _), (v[3] = w); for (var T = 0; T < 8; T++) p[T] = [b[0], b[1], b[2], T]; if (h.length > 0) for (T = 0; T < 8; T++) { var k = (T + 1) % 8; c.push( h[T], p[T], p[k], p[k], h[k], h[T], ), f.push(y, v, v, v, y, y), d.push(m, g, g, g, m, m); var A = c.length; u.push( [A - 6, A - 5, A - 4], [A - 3, A - 2, A - 1], ); } var M = h; (h = p), (p = M); var S = y; (y = v), (v = S); var E = m; (m = g), (g = E); } return { positions: c, cells: u, vectors: f, vertexIntensity: d, }; })(t, r, a, o); }), f = [], h = [], p = [], d = []; for (s = 0; s < u.length; s++) { var m = u[s], g = f.length; (f = f.concat(m.positions)), (p = p.concat(m.vectors)), (d = d.concat(m.vertexIntensity)); for (c = 0; c < m.cells.length; c++) { var v = m.cells[c], y = []; h.push(y); for (var x = 0; x < v.length; x++) y.push(v[x] + g); } } return { positions: f, cells: h, vectors: p, vertexIntensity: d, colormap: e, }; }, s = function (t, e) { var r, n = t.length; for (r = 0; r < n; r++) { var i = t[r]; if (i === e) return r; if (i > e) return r - 1; } return r; }, l = function (t, e, r) { return t < e ? e : t > r ? r : t; }, c = function (t) { var e = 1 / 0; t.sort(function (t, e) { return t - e; }); for (var r = t.length, n = 1; n < r; n++) { var i = Math.abs(t[n] - t[n - 1]); i < e && (e = i); } return e; }; e.exports = function (t, e) { var r = t.startingPositions, i = t.maxLength || 1e3, u = t.tubeSize || 1, f = t.absoluteTubeSize, h = t.gridFill || "+x+y+z", p = {}; -1 !== h.indexOf("-x") && (p.reversedX = !0), -1 !== h.indexOf("-y") && (p.reversedY = !0), -1 !== h.indexOf("-z") && (p.reversedZ = !0), (p.filled = a.indexOf( h.replace(/-/g, "").replace(/\+/g, ""), )); var d = t.getVelocity || function (e) { return (function (t, e, r) { var i = e.vectors, a = e.meshgrid, o = t[0], c = t[1], u = t[2], f = a[0].length, h = a[1].length, p = a[2].length, d = s(a[0], o), m = s(a[1], c), g = s(a[2], u), v = d + 1, y = m + 1, x = g + 1; if ( ((d = l(d, 0, f - 1)), (v = l(v, 0, f - 1)), (m = l(m, 0, h - 1)), (y = l(y, 0, h - 1)), (g = l(g, 0, p - 1)), (x = l(x, 0, p - 1)), d < 0 || m < 0 || g < 0 || v > f - 1 || y > h - 1 || x > p - 1) ) return n.create(); var b, _, w, T, k, A, M = a[0][d], S = a[0][v], E = a[1][m], L = a[1][y], C = a[2][g], P = (o - M) / (S - M), I = (c - E) / (L - E), O = (u - C) / (a[2][x] - C); switch ( (isFinite(P) || (P = 0.5), isFinite(I) || (I = 0.5), isFinite(O) || (O = 0.5), r.reversedX && ((d = f - 1 - d), (v = f - 1 - v)), r.reversedY && ((m = h - 1 - m), (y = h - 1 - y)), r.reversedZ && ((g = p - 1 - g), (x = p - 1 - x)), r.filled) ) { case 5: (k = g), (A = x), (w = m * p), (T = y * p), (b = d * p * h), (_ = v * p * h); break; case 4: (k = g), (A = x), (b = d * p), (_ = v * p), (w = m * p * f), (T = y * p * f); break; case 3: (w = m), (T = y), (k = g * h), (A = x * h), (b = d * h * p), (_ = v * h * p); break; case 2: (w = m), (T = y), (b = d * h), (_ = v * h), (k = g * h * f), (A = x * h * f); break; case 1: (b = d), (_ = v), (k = g * f), (A = x * f), (w = m * f * p), (T = y * f * p); break; default: (b = d), (_ = v), (w = m * f), (T = y * f), (k = g * f * h), (A = x * f * h); } var z = i[b + w + k], D = i[b + w + A], R = i[b + T + k], F = i[b + T + A], B = i[_ + w + k], N = i[_ + w + A], j = i[_ + T + k], U = i[_ + T + A], V = n.create(), H = n.create(), q = n.create(), G = n.create(); n.lerp(V, z, B, P), n.lerp(H, D, N, P), n.lerp(q, R, j, P), n.lerp(G, F, U, P); var Y = n.create(), W = n.create(); n.lerp(Y, V, q, I), n.lerp(W, H, G, I); var Z = n.create(); return n.lerp(Z, Y, W, O), Z; })(e, t, p); }, m = t.getDivergence || function (t, e) { var r = n.create(), i = 1e-4; n.add(r, t, [i, 0, 0]); var a = d(r); n.subtract(a, a, e), n.scale(a, a, 1 / i), n.add(r, t, [0, i, 0]); var o = d(r); n.subtract(o, o, e), n.scale(o, o, 1 / i), n.add(r, t, [0, 0, i]); var s = d(r); return ( n.subtract(s, s, e), n.scale(s, s, 1 / i), n.add(r, a, o), n.add(r, r, s), r ); }, g = [], v = e[0][0], y = e[0][1], x = e[0][2], b = e[1][0], _ = e[1][1], w = e[1][2], T = function (t) { var e = t[0], r = t[1], n = t[2]; return !( e < v || e > b || r < y || r > _ || n < x || n > w ); }, k = (10 * n.distance(e[0], e[1])) / i, A = k * k, M = 1, S = 0, E = r.length; E > 1 && (M = (function (t) { for ( var e = [], r = [], n = [], i = {}, a = {}, o = {}, s = t.length, l = 0; l < s; l++ ) { var u = t[l], f = u[0], h = u[1], p = u[2]; i[f] || (e.push(f), (i[f] = !0)), a[h] || (r.push(h), (a[h] = !0)), o[p] || (n.push(p), (o[p] = !0)); } var d = c(e), m = c(r), g = c(n), v = Math.min(d, m, g); return isFinite(v) ? v : 1; })(r)); for (var L = 0; L < E; L++) { var C = n.create(); n.copy(C, r[L]); var P = [C], I = [], O = d(C), z = C; I.push(O); var D = [], R = m(C, O), F = n.length(R); isFinite(F) && F > S && (S = F), D.push(F), g.push({ points: P, velocities: I, divergences: D, }); for ( var B = 0; B < 100 * i && P.length < i && T(C); ) { B++; var N = n.clone(O), j = n.squaredLength(N); if (0 === j) break; if ( (j > A && n.scale(N, N, k / Math.sqrt(j)), n.add(N, N, C), (O = d(N)), n.squaredDistance(z, N) - A > -1e-4 * A) ) { P.push(N), (z = N), I.push(O); (R = m(N, O)), (F = n.length(R)); isFinite(F) && F > S && (S = F), D.push(F); } C = N; } } var U = o(g, t.colormap, S, M); return ( f ? (U.tubeScale = f) : (0 === S && (S = 1), (U.tubeScale = (0.5 * u * M) / S)), U ); }; var u = t("./lib/shaders"), f = t("gl-cone3d").createMesh; e.exports.createTubeMesh = function (t, e) { return f(t, e, { shaders: u, traceType: "streamtube", }); }; }, { "./lib/shaders": 142, "gl-cone3d": 79, "gl-vec3": 169, "gl-vec4": 205, }, ], 144: [ function (t, e, r) { var n = t("gl-shader"), i = t("glslify"), a = i([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec4 uv;\nattribute vec3 f;\nattribute vec3 normal;\n\nuniform vec3 objectOffset;\nuniform mat4 model, view, projection, inverseModel;\nuniform vec3 lightPosition, eyePosition;\nuniform sampler2D colormap;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec2 planeCoordinate;\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\nvarying vec4 vColor;\n\nvoid main() {\n vec3 localCoordinate = vec3(uv.zw, f.x);\n worldCoordinate = objectOffset + localCoordinate;\n vec4 worldPosition = model * vec4(worldCoordinate, 1.0);\n vec4 clipPosition = projection * view * worldPosition;\n gl_Position = clipPosition;\n kill = f.y;\n value = f.z;\n planeCoordinate = uv.xy;\n\n vColor = texture2D(colormap, vec2(value, value));\n\n //Lighting geometry parameters\n vec4 cameraCoordinate = view * worldPosition;\n cameraCoordinate.xyz /= cameraCoordinate.w;\n lightDirection = lightPosition - cameraCoordinate.xyz;\n eyeDirection = eyePosition - cameraCoordinate.xyz;\n surfaceNormal = normalize((vec4(normal,0) * inverseModel).xyz);\n}\n", ]), o = i([ "precision highp float;\n#define GLSLIFY 1\n\nfloat beckmannDistribution(float x, float roughness) {\n float NdotH = max(x, 0.0001);\n float cos2Alpha = NdotH * NdotH;\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\n float roughness2 = roughness * roughness;\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\n return exp(tan2Alpha / roughness2) / denom;\n}\n\nfloat beckmannSpecular(\n vec3 lightDirection,\n vec3 viewDirection,\n vec3 surfaceNormal,\n float roughness) {\n return beckmannDistribution(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness);\n}\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 lowerBound, upperBound;\nuniform float contourTint;\nuniform vec4 contourColor;\nuniform sampler2D colormap;\nuniform vec3 clipBounds[2];\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\nuniform float vertexColor;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\nvarying vec4 vColor;\n\nvoid main() {\n if (\n kill > 0.0 ||\n vColor.a == 0.0 ||\n outOfRange(clipBounds[0], clipBounds[1], worldCoordinate)\n ) discard;\n\n vec3 N = normalize(surfaceNormal);\n vec3 V = normalize(eyeDirection);\n vec3 L = normalize(lightDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = max(beckmannSpecular(L, V, N, roughness), 0.);\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n //decide how to interpolate color \u2014 in vertex or in fragment\n vec4 surfaceColor =\n step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) +\n step(.5, vertexColor) * vColor;\n\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = mix(litColor, contourColor, contourTint) * opacity;\n}\n", ]), s = i([ "precision highp float;\n#define GLSLIFY 1\n\nattribute vec4 uv;\nattribute float f;\n\nuniform vec3 objectOffset;\nuniform mat3 permutation;\nuniform mat4 model, view, projection;\nuniform float height, zOffset;\nuniform sampler2D colormap;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec2 planeCoordinate;\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\nvarying vec4 vColor;\n\nvoid main() {\n vec3 dataCoordinate = permutation * vec3(uv.xy, height);\n worldCoordinate = objectOffset + dataCoordinate;\n vec4 worldPosition = model * vec4(worldCoordinate, 1.0);\n\n vec4 clipPosition = projection * view * worldPosition;\n clipPosition.z += zOffset;\n\n gl_Position = clipPosition;\n value = f + objectOffset.z;\n kill = -1.0;\n planeCoordinate = uv.zw;\n\n vColor = texture2D(colormap, vec2(value, value));\n\n //Don't do lighting for contours\n surfaceNormal = vec3(1,0,0);\n eyeDirection = vec3(0,1,0);\n lightDirection = vec3(0,0,1);\n}\n", ]), l = i([ "precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec2 shape;\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec2 planeCoordinate;\nvarying vec3 surfaceNormal;\n\nvec2 splitFloat(float v) {\n float vh = 255.0 * v;\n float upper = floor(vh);\n float lower = fract(vh);\n return vec2(upper / 255.0, floor(lower * 16.0) / 16.0);\n}\n\nvoid main() {\n if ((kill > 0.0) ||\n (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard;\n\n vec2 ux = splitFloat(planeCoordinate.x / shape.x);\n vec2 uy = splitFloat(planeCoordinate.y / shape.y);\n gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0));\n}\n", ]); (r.createShader = function (t) { var e = n(t, a, o, null, [ { name: "uv", type: "vec4" }, { name: "f", type: "vec3" }, { name: "normal", type: "vec3" }, ]); return ( (e.attributes.uv.location = 0), (e.attributes.f.location = 1), (e.attributes.normal.location = 2), e ); }), (r.createPickShader = function (t) { var e = n(t, a, l, null, [ { name: "uv", type: "vec4" }, { name: "f", type: "vec3" }, { name: "normal", type: "vec3" }, ]); return ( (e.attributes.uv.location = 0), (e.attributes.f.location = 1), (e.attributes.normal.location = 2), e ); }), (r.createContourShader = function (t) { var e = n(t, s, o, null, [ { name: "uv", type: "vec4" }, { name: "f", type: "float" }, ]); return ( (e.attributes.uv.location = 0), (e.attributes.f.location = 1), e ); }), (r.createPickContourShader = function (t) { var e = n(t, s, l, null, [ { name: "uv", type: "vec4" }, { name: "f", type: "float" }, ]); return ( (e.attributes.uv.location = 0), (e.attributes.f.location = 1), e ); }); }, { "gl-shader": 132, glslify: 231 }, ], 145: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.gl, r = y(e), n = b(e), s = x(e), l = _(e), c = i(e), u = a(e, [ { buffer: c, size: 4, stride: 40, offset: 0, }, { buffer: c, size: 3, stride: 40, offset: 16, }, { buffer: c, size: 3, stride: 40, offset: 28, }, ]), f = i(e), h = a(e, [ { buffer: f, size: 4, stride: 20, offset: 0, }, { buffer: f, size: 1, stride: 20, offset: 16, }, ]), p = i(e), d = a(e, [ { buffer: p, size: 2, type: e.FLOAT }, ]), m = o(e, 1, 256, e.RGBA, e.UNSIGNED_BYTE); (m.minFilter = e.LINEAR), (m.magFilter = e.LINEAR); var g = new M( e, [0, 0], [ [0, 0, 0], [0, 0, 0], ], r, n, c, u, m, s, l, f, h, p, d, [0, 0, 0], ), v = { levels: [[], [], []] }; for (var w in t) v[w] = t[w]; return ( (v.colormap = v.colormap || "jet"), g.update(v), g ); }; var n = t("bit-twiddle"), i = t("gl-buffer"), a = t("gl-vao"), o = t("gl-texture2d"), s = t("typedarray-pool"), l = t("colormap"), c = t("ndarray-ops"), u = t("ndarray-pack"), f = t("ndarray"), h = t("surface-nets"), p = t("gl-mat4/multiply"), d = t("gl-mat4/invert"), m = t("binary-search-bounds"), g = t("ndarray-gradient"), v = t("./lib/shaders"), y = v.createShader, x = v.createContourShader, b = v.createPickShader, _ = v.createPickContourShader, w = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ], T = [ [0, 0], [0, 1], [1, 0], [1, 1], [1, 0], [0, 1], ], k = [ [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], ]; function A(t, e, r, n, i) { (this.position = t), (this.index = e), (this.uv = r), (this.level = n), (this.dataCoordinate = i); } !(function () { for (var t = 0; t < 3; ++t) { var e = k[t], r = (t + 2) % 3; (e[((t + 1) % 3) + 0] = 1), (e[r + 3] = 1), (e[t + 6] = 1); } })(); function M( t, e, r, n, i, a, o, l, c, u, h, p, d, m, g, ) { (this.gl = t), (this.shape = e), (this.bounds = r), (this.objectOffset = g), (this.intensityBounds = []), (this._shader = n), (this._pickShader = i), (this._coordinateBuffer = a), (this._vao = o), (this._colorMap = l), (this._contourShader = c), (this._contourPickShader = u), (this._contourBuffer = h), (this._contourVAO = p), (this._contourOffsets = [[], [], []]), (this._contourCounts = [[], [], []]), (this._vertexCount = 0), (this._pickResult = new A( [0, 0, 0], [0, 0], [0, 0], [0, 0, 0], [0, 0, 0], )), (this._dynamicBuffer = d), (this._dynamicVAO = m), (this._dynamicOffsets = [0, 0, 0]), (this._dynamicCounts = [0, 0, 0]), (this.contourWidth = [1, 1, 1]), (this.contourLevels = [[1], [1], [1]]), (this.contourTint = [0, 0, 0]), (this.contourColor = [ [0.5, 0.5, 0.5, 1], [0.5, 0.5, 0.5, 1], [0.5, 0.5, 0.5, 1], ]), (this.showContour = !0), (this.showSurface = !0), (this.enableHighlight = [!0, !0, !0]), (this.highlightColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.highlightTint = [1, 1, 1]), (this.highlightLevel = [-1, -1, -1]), (this.enableDynamic = [!0, !0, !0]), (this.dynamicLevel = [NaN, NaN, NaN]), (this.dynamicColor = [ [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], ]), (this.dynamicTint = [1, 1, 1]), (this.dynamicWidth = [1, 1, 1]), (this.axesBounds = [ [1 / 0, 1 / 0, 1 / 0], [-1 / 0, -1 / 0, -1 / 0], ]), (this.surfaceProject = [!1, !1, !1]), (this.contourProject = [ [!1, !1, !1], [!1, !1, !1], [!1, !1, !1], ]), (this.colorBounds = [!1, !1]), (this._field = [ f(s.mallocFloat(1024), [0, 0]), f(s.mallocFloat(1024), [0, 0]), f(s.mallocFloat(1024), [0, 0]), ]), (this.pickId = 1), (this.clipBounds = [ [-1 / 0, -1 / 0, -1 / 0], [1 / 0, 1 / 0, 1 / 0], ]), (this.snapToData = !1), (this.pixelRatio = 1), (this.opacity = 1), (this.lightPosition = [10, 1e4, 0]), (this.ambientLight = 0.8), (this.diffuseLight = 0.8), (this.specularLight = 2), (this.roughness = 0.5), (this.fresnel = 1.5), (this.vertexColor = 0), (this.dirty = !0); } var S = M.prototype; (S.genColormap = function (t, e) { var r = !1, n = u([ l({ colormap: t, nshades: 256, format: "rgba", }).map(function (t, n) { var i = e ? (function (t, e) { if (!e) return 1; if (!e.length) return 1; for ( var r = 0; r < e.length; ++r ) { if (e.length < 2) return 1; if (e[r][0] === t) return e[r][1]; if (e[r][0] > t && r > 0) { var n = (e[r][0] - t) / (e[r][0] - e[r - 1][0]); return ( e[r][1] * (1 - n) + n * e[r - 1][1] ); } } return 1; })(n / 255, e) : t[3]; return ( i < 1 && (r = !0), [t[0], t[1], t[2], 255 * i] ); }), ]); return ( c.divseq(n, 255), (this.hasAlphaScale = r), n ); }), (S.isTransparent = function () { return ( this.opacity < 1 || this.hasAlphaScale ); }), (S.isOpaque = function () { return !this.isTransparent(); }), (S.pickSlots = 1), (S.setPickBase = function (t) { this.pickId = t; }); var E = [0, 0, 0], L = { showSurface: !1, showContour: !1, projections: [ w.slice(), w.slice(), w.slice(), ], clipBounds: [ [ [0, 0, 0], [0, 0, 0], ], [ [0, 0, 0], [0, 0, 0], ], [ [0, 0, 0], [0, 0, 0], ], ], }; function C(t, e) { var r, n, i, a = (e.axes && e.axes.lastCubeProps.axis) || E, o = e.showSurface, s = e.showContour; for (r = 0; r < 3; ++r) for ( o = o || e.surfaceProject[r], n = 0; n < 3; ++n ) s = s || e.contourProject[r][n]; for (r = 0; r < 3; ++r) { var l = L.projections[r]; for (n = 0; n < 16; ++n) l[n] = 0; for (n = 0; n < 4; ++n) l[5 * n] = 1; (l[5 * r] = 0), (l[12 + r] = e.axesBounds[+(a[r] > 0)][r]), p(l, t.model, l); var c = L.clipBounds[r]; for (i = 0; i < 2; ++i) for (n = 0; n < 3; ++n) c[i][n] = t.clipBounds[i][n]; (c[0][r] = -1e8), (c[1][r] = 1e8); } return ( (L.showSurface = o), (L.showContour = s), L ); } var P = { model: w, view: w, projection: w, inverseModel: w.slice(), lowerBound: [0, 0, 0], upperBound: [0, 0, 0], colorMap: 0, clipBounds: [ [0, 0, 0], [0, 0, 0], ], height: 0, contourTint: 0, contourColor: [0, 0, 0, 1], permutation: [1, 0, 0, 0, 1, 0, 0, 0, 1], zOffset: -1e-4, objectOffset: [0, 0, 0], kambient: 1, kdiffuse: 1, kspecular: 1, lightPosition: [1e3, 1e3, 1e3], eyePosition: [0, 0, 0], roughness: 1, fresnel: 1, opacity: 1, vertexColor: 0, }, I = w.slice(), O = [1, 0, 0, 0, 1, 0, 0, 0, 1]; function z(t, e) { t = t || {}; var r = this.gl; r.disable(r.CULL_FACE), this._colorMap.bind(0); var n = P; (n.model = t.model || w), (n.view = t.view || w), (n.projection = t.projection || w), (n.lowerBound = [ this.bounds[0][0], this.bounds[0][1], this.colorBounds[0] || this.bounds[0][2], ]), (n.upperBound = [ this.bounds[1][0], this.bounds[1][1], this.colorBounds[1] || this.bounds[1][2], ]), (n.objectOffset = this.objectOffset), (n.contourColor = this.contourColor[0]), (n.inverseModel = d( n.inverseModel, n.model, )); for (var i = 0; i < 2; ++i) for ( var a = n.clipBounds[i], o = 0; o < 3; ++o ) a[o] = Math.min( Math.max(this.clipBounds[i][o], -1e8), 1e8, ); (n.kambient = this.ambientLight), (n.kdiffuse = this.diffuseLight), (n.kspecular = this.specularLight), (n.roughness = this.roughness), (n.fresnel = this.fresnel), (n.opacity = this.opacity), (n.height = 0), (n.permutation = O), (n.vertexColor = this.vertexColor); var s = I; for ( p(s, n.view, n.model), p(s, n.projection, s), d(s, s), i = 0; i < 3; ++i ) n.eyePosition[i] = s[12 + i] / s[15]; var l = s[15]; for (i = 0; i < 3; ++i) l += this.lightPosition[i] * s[4 * i + 3]; for (i = 0; i < 3; ++i) { var c = s[12 + i]; for (o = 0; o < 3; ++o) c += s[4 * o + i] * this.lightPosition[o]; n.lightPosition[i] = c / l; } var u = C(n, this); if (u.showSurface) { for ( this._shader.bind(), this._shader.uniforms = n, this._vao.bind(), this.showSurface && this._vertexCount && this._vao.draw( r.TRIANGLES, this._vertexCount, ), i = 0; i < 3; ++i ) this.surfaceProject[i] && this.vertexCount && ((this._shader.uniforms.model = u.projections[i]), (this._shader.uniforms.clipBounds = u.clipBounds[i]), this._vao.draw( r.TRIANGLES, this._vertexCount, )); this._vao.unbind(); } if (u.showContour) { var f = this._contourShader; (n.kambient = 1), (n.kdiffuse = 0), (n.kspecular = 0), (n.opacity = 1), f.bind(), (f.uniforms = n); var h = this._contourVAO; for (h.bind(), i = 0; i < 3; ++i) for ( f.uniforms.permutation = k[i], r.lineWidth( this.contourWidth[i] * this.pixelRatio, ), o = 0; o < this.contourLevels[i].length; ++o ) o === this.highlightLevel[i] ? ((f.uniforms.contourColor = this.highlightColor[i]), (f.uniforms.contourTint = this.highlightTint[i])) : (0 !== o && o - 1 !== this.highlightLevel[i]) || ((f.uniforms.contourColor = this.contourColor[i]), (f.uniforms.contourTint = this.contourTint[i])), this._contourCounts[i][o] && ((f.uniforms.height = this.contourLevels[i][o]), h.draw( r.LINES, this._contourCounts[i][o], this._contourOffsets[i][o], )); for (i = 0; i < 3; ++i) for ( f.uniforms.model = u.projections[i], f.uniforms.clipBounds = u.clipBounds[i], o = 0; o < 3; ++o ) if (this.contourProject[i][o]) { (f.uniforms.permutation = k[o]), r.lineWidth( this.contourWidth[o] * this.pixelRatio, ); for ( var m = 0; m < this.contourLevels[o].length; ++m ) m === this.highlightLevel[o] ? ((f.uniforms.contourColor = this.highlightColor[o]), (f.uniforms.contourTint = this.highlightTint[o])) : (0 !== m && m - 1 !== this.highlightLevel[o]) || ((f.uniforms.contourColor = this.contourColor[o]), (f.uniforms.contourTint = this.contourTint[o])), this._contourCounts[o][m] && ((f.uniforms.height = this.contourLevels[o][m]), h.draw( r.LINES, this._contourCounts[o][m], this._contourOffsets[o][m], )); } for ( h.unbind(), (h = this._dynamicVAO).bind(), i = 0; i < 3; ++i ) if (0 !== this._dynamicCounts[i]) for ( f.uniforms.model = n.model, f.uniforms.clipBounds = n.clipBounds, f.uniforms.permutation = k[i], r.lineWidth( this.dynamicWidth[i] * this.pixelRatio, ), f.uniforms.contourColor = this.dynamicColor[i], f.uniforms.contourTint = this.dynamicTint[i], f.uniforms.height = this.dynamicLevel[i], h.draw( r.LINES, this._dynamicCounts[i], this._dynamicOffsets[i], ), o = 0; o < 3; ++o ) this.contourProject[o][i] && ((f.uniforms.model = u.projections[o]), (f.uniforms.clipBounds = u.clipBounds[o]), h.draw( r.LINES, this._dynamicCounts[i], this._dynamicOffsets[i], )); h.unbind(); } } (S.draw = function (t) { return z.call(this, t, !1); }), (S.drawTransparent = function (t) { return z.call(this, t, !0); }); var D = { model: w, view: w, projection: w, inverseModel: w, clipBounds: [ [0, 0, 0], [0, 0, 0], ], height: 0, shape: [0, 0], pickId: 0, lowerBound: [0, 0, 0], upperBound: [0, 0, 0], zOffset: 0, objectOffset: [0, 0, 0], permutation: [1, 0, 0, 0, 1, 0, 0, 0, 1], lightPosition: [0, 0, 0], eyePosition: [0, 0, 0], }; function R(t, e) { return Array.isArray(t) ? [e(t[0]), e(t[1]), e(t[2])] : [e(t), e(t), e(t)]; } function F(t) { return Array.isArray(t) ? 3 === t.length ? [t[0], t[1], t[2], 1] : [t[0], t[1], t[2], t[3]] : [0, 0, 0, 1]; } function B(t) { if (Array.isArray(t)) { if (Array.isArray(t)) return [F(t[0]), F(t[1]), F(t[2])]; var e = F(t); return [e.slice(), e.slice(), e.slice()]; } } (S.drawPick = function (t) { t = t || {}; var e = this.gl; e.disable(e.CULL_FACE); var r = D; (r.model = t.model || w), (r.view = t.view || w), (r.projection = t.projection || w), (r.shape = this._field[2].shape), (r.pickId = this.pickId / 255), (r.lowerBound = this.bounds[0]), (r.upperBound = this.bounds[1]), (r.objectOffset = this.objectOffset), (r.permutation = O); for (var n = 0; n < 2; ++n) for ( var i = r.clipBounds[n], a = 0; a < 3; ++a ) i[a] = Math.min( Math.max(this.clipBounds[n][a], -1e8), 1e8, ); var o = C(r, this); if (o.showSurface) { for ( this._pickShader.bind(), this._pickShader.uniforms = r, this._vao.bind(), this._vao.draw( e.TRIANGLES, this._vertexCount, ), n = 0; n < 3; ++n ) this.surfaceProject[n] && ((this._pickShader.uniforms.model = o.projections[n]), (this._pickShader.uniforms.clipBounds = o.clipBounds[n]), this._vao.draw( e.TRIANGLES, this._vertexCount, )); this._vao.unbind(); } if (o.showContour) { var s = this._contourPickShader; s.bind(), (s.uniforms = r); var l = this._contourVAO; for (l.bind(), a = 0; a < 3; ++a) for ( e.lineWidth( this.contourWidth[a] * this.pixelRatio, ), s.uniforms.permutation = k[a], n = 0; n < this.contourLevels[a].length; ++n ) this._contourCounts[a][n] && ((s.uniforms.height = this.contourLevels[a][n]), l.draw( e.LINES, this._contourCounts[a][n], this._contourOffsets[a][n], )); for (n = 0; n < 3; ++n) for ( s.uniforms.model = o.projections[n], s.uniforms.clipBounds = o.clipBounds[n], a = 0; a < 3; ++a ) if (this.contourProject[n][a]) { (s.uniforms.permutation = k[a]), e.lineWidth( this.contourWidth[a] * this.pixelRatio, ); for ( var c = 0; c < this.contourLevels[a].length; ++c ) this._contourCounts[a][c] && ((s.uniforms.height = this.contourLevels[a][c]), l.draw( e.LINES, this._contourCounts[a][c], this._contourOffsets[a][c], )); } l.unbind(); } }), (S.pick = function (t) { if (!t) return null; if (t.id !== this.pickId) return null; var e = this._field[2].shape, r = this._pickResult, n = (e[0] * (t.value[0] + (t.value[2] >> 4) / 16)) / 255, i = Math.floor(n), a = n - i, o = (e[1] * (t.value[1] + (15 & t.value[2]) / 16)) / 255, s = Math.floor(o), l = o - s; (i += 1), (s += 1); var c = r.position; c[0] = c[1] = c[2] = 0; for (var u = 0; u < 2; ++u) for ( var f = u ? a : 1 - a, h = 0; h < 2; ++h ) for ( var p = i + u, d = s + h, g = f * (h ? l : 1 - l), v = 0; v < 3; ++v ) c[v] += this._field[v].get(p, d) * g; for ( var y = this._pickResult.level, x = 0; x < 3; ++x ) if ( ((y[x] = m.le( this.contourLevels[x], c[x], )), y[x] < 0) ) this.contourLevels[x].length > 0 && (y[x] = 0); else if ( y[x] < this.contourLevels[x].length - 1 ) { var b = this.contourLevels[x][y[x]], _ = this.contourLevels[x][y[x] + 1]; Math.abs(b - c[x]) > Math.abs(_ - c[x]) && (y[x] += 1); } for ( r.index[0] = a < 0.5 ? i : i + 1, r.index[1] = l < 0.5 ? s : s + 1, r.uv[0] = n / e[0], r.uv[1] = o / e[1], v = 0; v < 3; ++v ) r.dataCoordinate[v] = this._field[v].get( r.index[0], r.index[1], ); return r; }), (S.padField = function (t, e) { var r = e.shape.slice(), n = t.shape.slice(); c.assign(t.lo(1, 1).hi(r[0], r[1]), e), c.assign( t.lo(1).hi(r[0], 1), e.hi(r[0], 1), ), c.assign( t.lo(1, n[1] - 1).hi(r[0], 1), e.lo(0, r[1] - 1).hi(r[0], 1), ), c.assign(t.lo(0, 1).hi(1, r[1]), e.hi(1)), c.assign( t.lo(n[0] - 1, 1).hi(1, r[1]), e.lo(r[0] - 1), ), t.set(0, 0, e.get(0, 0)), t.set(0, n[1] - 1, e.get(0, r[1] - 1)), t.set(n[0] - 1, 0, e.get(r[0] - 1, 0)), t.set( n[0] - 1, n[1] - 1, e.get(r[0] - 1, r[1] - 1), ); }), (S.update = function (t) { (t = t || {}), (this.objectOffset = t.objectOffset || this.objectOffset), (this.dirty = !0), "contourWidth" in t && (this.contourWidth = R( t.contourWidth, Number, )), "showContour" in t && (this.showContour = R( t.showContour, Boolean, )), "showSurface" in t && (this.showSurface = !!t.showSurface), "contourTint" in t && (this.contourTint = R( t.contourTint, Boolean, )), "contourColor" in t && (this.contourColor = B(t.contourColor)), "contourProject" in t && (this.contourProject = R( t.contourProject, function (t) { return R(t, Boolean); }, )), "surfaceProject" in t && (this.surfaceProject = t.surfaceProject), "dynamicColor" in t && (this.dynamicColor = B(t.dynamicColor)), "dynamicTint" in t && (this.dynamicTint = R( t.dynamicTint, Number, )), "dynamicWidth" in t && (this.dynamicWidth = R( t.dynamicWidth, Number, )), "opacity" in t && (this.opacity = t.opacity), "opacityscale" in t && (this.opacityscale = t.opacityscale), "colorBounds" in t && (this.colorBounds = t.colorBounds), "vertexColor" in t && (this.vertexColor = t.vertexColor ? 1 : 0), "colormap" in t && this._colorMap.setPixels( this.genColormap( t.colormap, this.opacityscale, ), ); var e = t.field || (t.coords && t.coords[2]) || null, r = !1; if ( (e || (e = this._field[2].shape[0] || this._field[2].shape[2] ? this._field[2] .lo(1, 1) .hi( this._field[2].shape[0] - 2, this._field[2].shape[1] - 2, ) : this._field[2].hi(0, 0)), "field" in t || "coords" in t) ) { var i = (e.shape[0] + 2) * (e.shape[1] + 2); i > this._field[2].data.length && (s.freeFloat(this._field[2].data), (this._field[2].data = s.mallocFloat( n.nextPow2(i), ))), (this._field[2] = f( this._field[2].data, [e.shape[0] + 2, e.shape[1] + 2], )), this.padField(this._field[2], e), (this.shape = e.shape.slice()); for ( var a = this.shape, o = 0; o < 2; ++o ) this._field[2].size > this._field[o].data.length && (s.freeFloat(this._field[o].data), (this._field[o].data = s.mallocFloat( this._field[2].size, ))), (this._field[o] = f( this._field[o].data, [a[0] + 2, a[1] + 2], )); if (t.coords) { var l = t.coords; if (!Array.isArray(l) || 3 !== l.length) throw new Error( "gl-surface: invalid coordinates for x/y", ); for (o = 0; o < 2; ++o) { var c = l[o]; for (v = 0; v < 2; ++v) if (c.shape[v] !== a[v]) throw new Error( "gl-surface: coords have incorrect shape", ); this.padField(this._field[o], c); } } else if (t.ticks) { var u = t.ticks; if (!Array.isArray(u) || 2 !== u.length) throw new Error( "gl-surface: invalid ticks", ); for (o = 0; o < 2; ++o) { var p = u[o]; if ( ((Array.isArray(p) || p.length) && (p = f(p)), p.shape[0] !== a[o]) ) throw new Error( "gl-surface: invalid tick length", ); var d = f(p.data, a); (d.stride[o] = p.stride[0]), (d.stride[1 ^ o] = 0), this.padField(this._field[o], d); } } else { for (o = 0; o < 2; ++o) { var m = [0, 0]; (m[o] = 1), (this._field[o] = f( this._field[o].data, [a[0] + 2, a[1] + 2], m, 0, )); } this._field[0].set(0, 0, 0); for (var v = 0; v < a[0]; ++v) this._field[0].set(v + 1, 0, v); for ( this._field[0].set( a[0] + 1, 0, a[0] - 1, ), this._field[1].set(0, 0, 0), v = 0; v < a[1]; ++v ) this._field[1].set(0, v + 1, v); this._field[1].set( 0, a[1] + 1, a[1] - 1, ); } var y = this._field, x = f( s.mallocFloat(3 * y[2].size * 2), [3, a[0] + 2, a[1] + 2, 2], ); for (o = 0; o < 3; ++o) g(x.pick(o), y[o], "mirror"); var b = f(s.mallocFloat(3 * y[2].size), [ a[0] + 2, a[1] + 2, 3, ]); for (o = 0; o < a[0] + 2; ++o) for (v = 0; v < a[1] + 2; ++v) { var _ = x.get(0, o, v, 0), w = x.get(0, o, v, 1), k = x.get(1, o, v, 0), A = x.get(1, o, v, 1), M = x.get(2, o, v, 0), S = x.get(2, o, v, 1), E = k * S - A * M, L = M * w - S * _, C = _ * A - w * k, P = Math.sqrt( E * E + L * L + C * C, ); P < 1e-8 ? (P = Math.max( Math.abs(E), Math.abs(L), Math.abs(C), )) < 1e-8 ? ((C = 1), (L = E = 0), (P = 1)) : (P = 1 / P) : (P = 1 / Math.sqrt(P)), b.set(o, v, 0, E * P), b.set(o, v, 1, L * P), b.set(o, v, 2, C * P); } s.free(x.data); var I = [1 / 0, 1 / 0, 1 / 0], O = [-1 / 0, -1 / 0, -1 / 0], z = 1 / 0, D = -1 / 0, F = (a[0] - 1) * (a[1] - 1) * 6, N = s.mallocFloat(n.nextPow2(10 * F)), j = 0, U = 0; for (o = 0; o < a[0] - 1; ++o) t: for (v = 0; v < a[1] - 1; ++v) { for (var V = 0; V < 2; ++V) for (var H = 0; H < 2; ++H) for (var q = 0; q < 3; ++q) { var G = this._field[q].get( 1 + o + V, 1 + v + H, ); if (isNaN(G) || !isFinite(G)) continue t; } for (q = 0; q < 6; ++q) { var Y = o + T[q][0], W = v + T[q][1], Z = this._field[0].get( Y + 1, W + 1, ), X = this._field[1].get( Y + 1, W + 1, ); (G = this._field[2].get( Y + 1, W + 1, )), (E = b.get(Y + 1, W + 1, 0)), (L = b.get(Y + 1, W + 1, 1)), (C = b.get(Y + 1, W + 1, 2)), t.intensity && (J = t.intensity.get(Y, W)); var J = t.intensity ? t.intensity.get(Y, W) : G + this.objectOffset[2]; (N[j++] = Y), (N[j++] = W), (N[j++] = Z), (N[j++] = X), (N[j++] = G), (N[j++] = 0), (N[j++] = J), (N[j++] = E), (N[j++] = L), (N[j++] = C), (I[0] = Math.min( I[0], Z + this.objectOffset[0], )), (I[1] = Math.min( I[1], X + this.objectOffset[1], )), (I[2] = Math.min( I[2], G + this.objectOffset[2], )), (z = Math.min(z, J)), (O[0] = Math.max( O[0], Z + this.objectOffset[0], )), (O[1] = Math.max( O[1], X + this.objectOffset[1], )), (O[2] = Math.max( O[2], G + this.objectOffset[2], )), (D = Math.max(D, J)), (U += 1); } } for ( t.intensityBounds && ((z = +t.intensityBounds[0]), (D = +t.intensityBounds[1])), o = 6; o < j; o += 10 ) N[o] = (N[o] - z) / (D - z); (this._vertexCount = U), this._coordinateBuffer.update( N.subarray(0, j), ), s.freeFloat(N), s.free(b.data), (this.bounds = [I, O]), (this.intensity = t.intensity || this._field[2]), (this.intensityBounds[0] === z && this.intensityBounds[1] === D) || (r = !0), (this.intensityBounds = [z, D]); } if ("levels" in t) { var K = t.levels; for ( K = Array.isArray(K[0]) ? K.slice() : [[], [], K], o = 0; o < 3; ++o ) (K[o] = K[o].slice()), K[o].sort(function (t, e) { return t - e; }); for (o = 0; o < 3; ++o) for (v = 0; v < K[o].length; ++v) K[o][v] -= this.objectOffset[o]; t: for (o = 0; o < 3; ++o) { if ( K[o].length !== this.contourLevels[o].length ) { r = !0; break; } for (v = 0; v < K[o].length; ++v) if ( K[o][v] !== this.contourLevels[o][v] ) { r = !0; break t; } } this.contourLevels = K; } if (r) { (y = this._field), (a = this.shape); for (var Q = [], $ = 0; $ < 3; ++$) { var tt = this.contourLevels[$], et = [], rt = [], nt = [0, 0, 0]; for (o = 0; o < tt.length; ++o) { var it = h(this._field[$], tt[o]); et.push((Q.length / 5) | 0), (U = 0); t: for ( v = 0; v < it.cells.length; ++v ) { var at = it.cells[v]; for (q = 0; q < 2; ++q) { var ot = it.positions[at[q]], st = ot[0], lt = 0 | Math.floor(st), ct = st - lt, ut = ot[1], ft = 0 | Math.floor(ut), ht = ut - ft, pt = !1; e: for ( var dt = 0; dt < 3; ++dt ) { nt[dt] = 0; var mt = ($ + dt + 1) % 3; for (V = 0; V < 2; ++V) { var gt = V ? ct : 1 - ct; for ( Y = 0 | Math.min( Math.max(lt + V, 0), a[0], ), H = 0; H < 2; ++H ) { var vt = H ? ht : 1 - ht; if ( ((W = 0 | Math.min( Math.max(ft + H, 0), a[1], )), (G = dt < 2 ? this._field[mt].get( Y, W, ) : (this.intensity.get( Y, W, ) - this .intensityBounds[0]) / (this .intensityBounds[1] - this .intensityBounds[0])), !isFinite(G) || isNaN(G)) ) { pt = !0; break e; } var yt = gt * vt; nt[dt] += yt * G; } } } if (pt) { if (q > 0) { for (var xt = 0; xt < 5; ++xt) Q.pop(); U -= 1; } continue t; } Q.push( nt[0], nt[1], ot[0], ot[1], nt[2], ), (U += 1); } } rt.push(U); } (this._contourOffsets[$] = et), (this._contourCounts[$] = rt); } var bt = s.mallocFloat(Q.length); for (o = 0; o < Q.length; ++o) bt[o] = Q[o]; this._contourBuffer.update(bt), s.freeFloat(bt); } }), (S.dispose = function () { this._shader.dispose(), this._vao.dispose(), this._coordinateBuffer.dispose(), this._colorMap.dispose(), this._contourBuffer.dispose(), this._contourVAO.dispose(), this._contourShader.dispose(), this._contourPickShader.dispose(), this._dynamicBuffer.dispose(), this._dynamicVAO.dispose(); for (var t = 0; t < 3; ++t) s.freeFloat(this._field[t].data); }), (S.highlight = function (t) { var e, r; if (!t) return ( (this._dynamicCounts = [0, 0, 0]), (this.dyanamicLevel = [NaN, NaN, NaN]), void (this.highlightLevel = [ -1, -1, -1, ]) ); for (e = 0; e < 3; ++e) this.enableHighlight[e] ? (this.highlightLevel[e] = t.level[e]) : (this.highlightLevel[e] = -1); for ( r = this.snapToData ? t.dataCoordinate : t.position, e = 0; e < 3; ++e ) r[e] -= this.objectOffset[e]; if ( (this.enableDynamic[0] && r[0] !== this.dynamicLevel[0]) || (this.enableDynamic[1] && r[1] !== this.dynamicLevel[1]) || (this.enableDynamic[2] && r[2] !== this.dynamicLevel[2]) ) { for ( var n = 0, i = this.shape, a = s.mallocFloat(12 * i[0] * i[1]), o = 0; o < 3; ++o ) if (this.enableDynamic[o]) { this.dynamicLevel[o] = r[o]; var l = (o + 1) % 3, c = (o + 2) % 3, u = this._field[o], f = this._field[l], p = this._field[c], d = h(u, r[o]), m = d.cells, g = d.positions; for ( this._dynamicOffsets[o] = n, e = 0; e < m.length; ++e ) for ( var v = m[e], y = 0; y < 2; ++y ) { var x = g[v[y]], b = +x[0], _ = 0 | b, w = 0 | Math.min(_ + 1, i[0]), T = b - _, k = 1 - T, A = +x[1], M = 0 | A, S = 0 | Math.min(M + 1, i[1]), E = A - M, L = 1 - E, C = k * L, P = k * E, I = T * L, O = T * E, z = C * f.get(_, M) + P * f.get(_, S) + I * f.get(w, M) + O * f.get(w, S), D = C * p.get(_, M) + P * p.get(_, S) + I * p.get(w, M) + O * p.get(w, S); if (isNaN(z) || isNaN(D)) { y && (n -= 1); break; } (a[2 * n + 0] = z), (a[2 * n + 1] = D), (n += 1); } this._dynamicCounts[o] = n - this._dynamicOffsets[o]; } else (this.dynamicLevel[o] = NaN), (this._dynamicCounts[o] = 0); this._dynamicBuffer.update( a.subarray(0, 2 * n), ), s.freeFloat(a); } }); }, { "./lib/shaders": 144, "binary-search-bounds": 31, "bit-twiddle": 32, colormap: 53, "gl-buffer": 78, "gl-mat4/invert": 98, "gl-mat4/multiply": 100, "gl-texture2d": 146, "gl-vao": 150, ndarray: 259, "ndarray-gradient": 252, "ndarray-ops": 254, "ndarray-pack": 255, "surface-nets": 302, "typedarray-pool": 308, }, ], 146: [ function (t, e, r) { "use strict"; var n = t("ndarray"), i = t("ndarray-ops"), a = t("typedarray-pool"); e.exports = function (t) { if (arguments.length <= 1) throw new Error( "gl-texture2d: Missing arguments for texture2d constructor", ); o || c(t); if ("number" == typeof arguments[1]) return v( t, arguments[1], arguments[2], arguments[3] || t.RGBA, arguments[4] || t.UNSIGNED_BYTE, ); if (Array.isArray(arguments[1])) return v( t, 0 | arguments[1][0], 0 | arguments[1][1], arguments[2] || t.RGBA, arguments[3] || t.UNSIGNED_BYTE, ); if ("object" == typeof arguments[1]) { var e = arguments[1], r = u(e) ? e : e.raw; if (r) return y( t, r, 0 | e.width, 0 | e.height, arguments[2] || t.RGBA, arguments[3] || t.UNSIGNED_BYTE, ); if (e.shape && e.data && e.stride) return x(t, e); } throw new Error( "gl-texture2d: Invalid arguments for texture2d constructor", ); }; var o = null, s = null, l = null; function c(t) { (o = [ t.LINEAR, t.NEAREST_MIPMAP_LINEAR, t.LINEAR_MIPMAP_NEAREST, t.LINEAR_MIPMAP_NEAREST, ]), (s = [ t.NEAREST, t.LINEAR, t.NEAREST_MIPMAP_NEAREST, t.NEAREST_MIPMAP_LINEAR, t.LINEAR_MIPMAP_NEAREST, t.LINEAR_MIPMAP_LINEAR, ]), (l = [ t.REPEAT, t.CLAMP_TO_EDGE, t.MIRRORED_REPEAT, ]); } function u(t) { return ( ("undefined" != typeof HTMLCanvasElement && t instanceof HTMLCanvasElement) || ("undefined" != typeof HTMLImageElement && t instanceof HTMLImageElement) || ("undefined" != typeof HTMLVideoElement && t instanceof HTMLVideoElement) || ("undefined" != typeof ImageData && t instanceof ImageData) ); } var f = function (t, e) { i.muls(t, e, 255); }; function h(t, e, r) { var n = t.gl, i = n.getParameter(n.MAX_TEXTURE_SIZE); if (e < 0 || e > i || r < 0 || r > i) throw new Error( "gl-texture2d: Invalid texture size", ); return ( (t._shape = [e, r]), t.bind(), n.texImage2D( n.TEXTURE_2D, 0, t.format, e, r, 0, t.format, t.type, null, ), (t._mipLevels = [0]), t ); } function p(t, e, r, n, i, a) { (this.gl = t), (this.handle = e), (this.format = i), (this.type = a), (this._shape = [r, n]), (this._mipLevels = [0]), (this._magFilter = t.NEAREST), (this._minFilter = t.NEAREST), (this._wrapS = t.CLAMP_TO_EDGE), (this._wrapT = t.CLAMP_TO_EDGE), (this._anisoSamples = 1); var o = this, s = [this._wrapS, this._wrapT]; Object.defineProperties(s, [ { get: function () { return o._wrapS; }, set: function (t) { return (o.wrapS = t); }, }, { get: function () { return o._wrapT; }, set: function (t) { return (o.wrapT = t); }, }, ]), (this._wrapVector = s); var l = [this._shape[0], this._shape[1]]; Object.defineProperties(l, [ { get: function () { return o._shape[0]; }, set: function (t) { return (o.width = t); }, }, { get: function () { return o._shape[1]; }, set: function (t) { return (o.height = t); }, }, ]), (this._shapeVector = l); } var d = p.prototype; function m(t, e) { return 3 === t.length ? 1 === e[2] && e[1] === t[0] * t[2] && e[0] === t[2] : 1 === e[0] && e[1] === t[0]; } function g(t) { var e = t.createTexture(); return ( t.bindTexture(t.TEXTURE_2D, e), t.texParameteri( t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.NEAREST, ), t.texParameteri( t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, t.NEAREST, ), t.texParameteri( t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE, ), t.texParameteri( t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE, ), e ); } function v(t, e, r, n, i) { var a = t.getParameter(t.MAX_TEXTURE_SIZE); if (e < 0 || e > a || r < 0 || r > a) throw new Error( "gl-texture2d: Invalid texture shape", ); if ( i === t.FLOAT && !t.getExtension("OES_texture_float") ) throw new Error( "gl-texture2d: Floating point textures not supported on this platform", ); var o = g(t); return ( t.texImage2D( t.TEXTURE_2D, 0, n, e, r, 0, n, i, null, ), new p(t, o, e, r, n, i) ); } function y(t, e, r, n, i, a) { var o = g(t); return ( t.texImage2D(t.TEXTURE_2D, 0, i, i, a, e), new p(t, o, r, n, i, a) ); } function x(t, e) { var r = e.dtype, o = e.shape.slice(), s = t.getParameter(t.MAX_TEXTURE_SIZE); if ( o[0] < 0 || o[0] > s || o[1] < 0 || o[1] > s ) throw new Error( "gl-texture2d: Invalid texture size", ); var l = m(o, e.stride.slice()), c = 0; "float32" === r ? (c = t.FLOAT) : "float64" === r ? ((c = t.FLOAT), (l = !1), (r = "float32")) : "uint8" === r ? (c = t.UNSIGNED_BYTE) : ((c = t.UNSIGNED_BYTE), (l = !1), (r = "uint8")); var u, h, d = 0; if (2 === o.length) (d = t.LUMINANCE), (o = [o[0], o[1], 1]), (e = n( e.data, o, [e.stride[0], e.stride[1], 1], e.offset, )); else { if (3 !== o.length) throw new Error( "gl-texture2d: Invalid shape for texture", ); if (1 === o[2]) d = t.ALPHA; else if (2 === o[2]) d = t.LUMINANCE_ALPHA; else if (3 === o[2]) d = t.RGB; else { if (4 !== o[2]) throw new Error( "gl-texture2d: Invalid shape for pixel coords", ); d = t.RGBA; } } c !== t.FLOAT || t.getExtension("OES_texture_float") || ((c = t.UNSIGNED_BYTE), (l = !1)); var v = e.size; if (l) u = 0 === e.offset && e.data.length === v ? e.data : e.data.subarray( e.offset, e.offset + v, ); else { var y = [o[2], o[2] * o[0], 1]; h = a.malloc(v, r); var x = n(h, o, y, 0); ("float32" !== r && "float64" !== r) || c !== t.UNSIGNED_BYTE ? i.assign(x, e) : f(x, e), (u = h.subarray(0, v)); } var b = g(t); return ( t.texImage2D( t.TEXTURE_2D, 0, d, o[0], o[1], 0, d, c, u, ), l || a.free(h), new p(t, b, o[0], o[1], d, c) ); } Object.defineProperties(d, { minFilter: { get: function () { return this._minFilter; }, set: function (t) { this.bind(); var e = this.gl; if ( (this.type === e.FLOAT && o.indexOf(t) >= 0 && (e.getExtension( "OES_texture_float_linear", ) || (t = e.NEAREST)), s.indexOf(t) < 0) ) throw new Error( "gl-texture2d: Unknown filter mode " + t, ); return ( e.texParameteri( e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, t, ), (this._minFilter = t) ); }, }, magFilter: { get: function () { return this._magFilter; }, set: function (t) { this.bind(); var e = this.gl; if ( (this.type === e.FLOAT && o.indexOf(t) >= 0 && (e.getExtension( "OES_texture_float_linear", ) || (t = e.NEAREST)), s.indexOf(t) < 0) ) throw new Error( "gl-texture2d: Unknown filter mode " + t, ); return ( e.texParameteri( e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, t, ), (this._magFilter = t) ); }, }, mipSamples: { get: function () { return this._anisoSamples; }, set: function (t) { var e = this._anisoSamples; if ( ((this._anisoSamples = 0 | Math.max(t, 1)), e !== this._anisoSamples) ) { var r = this.gl.getExtension( "EXT_texture_filter_anisotropic", ); r && this.gl.texParameterf( this.gl.TEXTURE_2D, r.TEXTURE_MAX_ANISOTROPY_EXT, this._anisoSamples, ); } return this._anisoSamples; }, }, wrapS: { get: function () { return this._wrapS; }, set: function (t) { if ((this.bind(), l.indexOf(t) < 0)) throw new Error( "gl-texture2d: Unknown wrap mode " + t, ); return ( this.gl.texParameteri( this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, t, ), (this._wrapS = t) ); }, }, wrapT: { get: function () { return this._wrapT; }, set: function (t) { if ((this.bind(), l.indexOf(t) < 0)) throw new Error( "gl-texture2d: Unknown wrap mode " + t, ); return ( this.gl.texParameteri( this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, t, ), (this._wrapT = t) ); }, }, wrap: { get: function () { return this._wrapVector; }, set: function (t) { if ( (Array.isArray(t) || (t = [t, t]), 2 !== t.length) ) throw new Error( "gl-texture2d: Must specify wrap mode for rows and columns", ); for (var e = 0; e < 2; ++e) if (l.indexOf(t[e]) < 0) throw new Error( "gl-texture2d: Unknown wrap mode " + t, ); (this._wrapS = t[0]), (this._wrapT = t[1]); var r = this.gl; return ( this.bind(), r.texParameteri( r.TEXTURE_2D, r.TEXTURE_WRAP_S, this._wrapS, ), r.texParameteri( r.TEXTURE_2D, r.TEXTURE_WRAP_T, this._wrapT, ), t ); }, }, shape: { get: function () { return this._shapeVector; }, set: function (t) { if (Array.isArray(t)) { if (2 !== t.length) throw new Error( "gl-texture2d: Invalid texture shape", ); } else t = [0 | t, 0 | t]; return ( h(this, 0 | t[0], 0 | t[1]), [0 | t[0], 0 | t[1]] ); }, }, width: { get: function () { return this._shape[0]; }, set: function (t) { return ( h(this, (t |= 0), this._shape[1]), t ); }, }, height: { get: function () { return this._shape[1]; }, set: function (t) { return ( (t |= 0), h(this, this._shape[0], t), t ); }, }, }), (d.bind = function (t) { var e = this.gl; return ( void 0 !== t && e.activeTexture(e.TEXTURE0 + (0 | t)), e.bindTexture(e.TEXTURE_2D, this.handle), void 0 !== t ? 0 | t : e.getParameter(e.ACTIVE_TEXTURE) - e.TEXTURE0 ); }), (d.dispose = function () { this.gl.deleteTexture(this.handle); }), (d.generateMipmap = function () { this.bind(), this.gl.generateMipmap( this.gl.TEXTURE_2D, ); for ( var t = Math.min( this._shape[0], this._shape[1], ), e = 0; t > 0; ++e, t >>>= 1 ) this._mipLevels.indexOf(e) < 0 && this._mipLevels.push(e); }), (d.setPixels = function (t, e, r, o) { var s = this.gl; this.bind(), Array.isArray(e) ? ((o = r), (r = 0 | e[1]), (e = 0 | e[0])) : ((e = e || 0), (r = r || 0)), (o = o || 0); var l = u(t) ? t : t.raw; if (l) { this._mipLevels.indexOf(o) < 0 ? (s.texImage2D( s.TEXTURE_2D, 0, this.format, this.format, this.type, l, ), this._mipLevels.push(o)) : s.texSubImage2D( s.TEXTURE_2D, o, e, r, this.format, this.type, l, ); } else { if (!(t.shape && t.stride && t.data)) throw new Error( "gl-texture2d: Unsupported data type", ); if ( t.shape.length < 2 || e + t.shape[1] > this._shape[1] >>> o || r + t.shape[0] > this._shape[0] >>> o || e < 0 || r < 0 ) throw new Error( "gl-texture2d: Texture dimensions are out of bounds", ); !(function (t, e, r, o, s, l, c, u) { var h = u.dtype, p = u.shape.slice(); if (p.length < 2 || p.length > 3) throw new Error( "gl-texture2d: Invalid ndarray, must be 2d or 3d", ); var d = 0, g = 0, v = m(p, u.stride.slice()); "float32" === h ? (d = t.FLOAT) : "float64" === h ? ((d = t.FLOAT), (v = !1), (h = "float32")) : "uint8" === h ? (d = t.UNSIGNED_BYTE) : ((d = t.UNSIGNED_BYTE), (v = !1), (h = "uint8")); if (2 === p.length) (g = t.LUMINANCE), (p = [p[0], p[1], 1]), (u = n( u.data, p, [u.stride[0], u.stride[1], 1], u.offset, )); else { if (3 !== p.length) throw new Error( "gl-texture2d: Invalid shape for texture", ); if (1 === p[2]) g = t.ALPHA; else if (2 === p[2]) g = t.LUMINANCE_ALPHA; else if (3 === p[2]) g = t.RGB; else { if (4 !== p[2]) throw new Error( "gl-texture2d: Invalid shape for pixel coords", ); g = t.RGBA; } p[2]; } (g !== t.LUMINANCE && g !== t.ALPHA) || (s !== t.LUMINANCE && s !== t.ALPHA) || (g = s); if (g !== s) throw new Error( "gl-texture2d: Incompatible texture format for setPixels", ); var y = u.size, x = c.indexOf(o) < 0; x && c.push(o); if (d === l && v) 0 === u.offset && u.data.length === y ? x ? t.texImage2D( t.TEXTURE_2D, o, s, p[0], p[1], 0, s, l, u.data, ) : t.texSubImage2D( t.TEXTURE_2D, o, e, r, p[0], p[1], s, l, u.data, ) : x ? t.texImage2D( t.TEXTURE_2D, o, s, p[0], p[1], 0, s, l, u.data.subarray( u.offset, u.offset + y, ), ) : t.texSubImage2D( t.TEXTURE_2D, o, e, r, p[0], p[1], s, l, u.data.subarray( u.offset, u.offset + y, ), ); else { var b; b = l === t.FLOAT ? a.mallocFloat32(y) : a.mallocUint8(y); var _ = n(b, p, [ p[2], p[2] * p[0], 1, ]); d === t.FLOAT && l === t.UNSIGNED_BYTE ? f(_, u) : i.assign(_, u), x ? t.texImage2D( t.TEXTURE_2D, o, s, p[0], p[1], 0, s, l, b.subarray(0, y), ) : t.texSubImage2D( t.TEXTURE_2D, o, e, r, p[0], p[1], s, l, b.subarray(0, y), ), l === t.FLOAT ? a.freeFloat32(b) : a.freeUint8(b); } })( s, e, r, o, this.format, this.type, this._mipLevels, t, ); } }); }, { ndarray: 259, "ndarray-ops": 254, "typedarray-pool": 308, }, ], 147: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { e ? e.bind() : t.bindBuffer( t.ELEMENT_ARRAY_BUFFER, null, ); var n = 0 | t.getParameter(t.MAX_VERTEX_ATTRIBS); if (r) { if (r.length > n) throw new Error( "gl-vao: Too many vertex attributes", ); for (var i = 0; i < r.length; ++i) { var a = r[i]; if (a.buffer) { var o = a.buffer, s = a.size || 4, l = a.type || t.FLOAT, c = !!a.normalized, u = a.stride || 0, f = a.offset || 0; o.bind(), t.enableVertexAttribArray(i), t.vertexAttribPointer( i, s, l, c, u, f, ); } else { if ("number" == typeof a) t.vertexAttrib1f(i, a); else if (1 === a.length) t.vertexAttrib1f(i, a[0]); else if (2 === a.length) t.vertexAttrib2f(i, a[0], a[1]); else if (3 === a.length) t.vertexAttrib3f(i, a[0], a[1], a[2]); else { if (4 !== a.length) throw new Error( "gl-vao: Invalid vertex attribute", ); t.vertexAttrib4f( i, a[0], a[1], a[2], a[3], ); } t.disableVertexAttribArray(i); } } for (; i < n; ++i) t.disableVertexAttribArray(i); } else { t.bindBuffer(t.ARRAY_BUFFER, null); for (i = 0; i < n; ++i) t.disableVertexAttribArray(i); } }; }, {}, ], 148: [ function (t, e, r) { "use strict"; var n = t("./do-bind.js"); function i(t) { (this.gl = t), (this._elements = null), (this._attributes = null), (this._elementsType = t.UNSIGNED_SHORT); } (i.prototype.bind = function () { n(this.gl, this._elements, this._attributes); }), (i.prototype.update = function (t, e, r) { (this._elements = e), (this._attributes = t), (this._elementsType = r || this.gl.UNSIGNED_SHORT); }), (i.prototype.dispose = function () {}), (i.prototype.unbind = function () {}), (i.prototype.draw = function (t, e, r) { r = r || 0; var n = this.gl; this._elements ? n.drawElements( t, e, this._elementsType, r, ) : n.drawArrays(t, r, e); }), (e.exports = function (t) { return new i(t); }); }, { "./do-bind.js": 147 }, ], 149: [ function (t, e, r) { "use strict"; var n = t("./do-bind.js"); function i(t, e, r, n, i, a) { (this.location = t), (this.dimension = e), (this.a = r), (this.b = n), (this.c = i), (this.d = a); } function a(t, e, r) { (this.gl = t), (this._ext = e), (this.handle = r), (this._attribs = []), (this._useElements = !1), (this._elementsType = t.UNSIGNED_SHORT); } (i.prototype.bind = function (t) { switch (this.dimension) { case 1: t.vertexAttrib1f(this.location, this.a); break; case 2: t.vertexAttrib2f( this.location, this.a, this.b, ); break; case 3: t.vertexAttrib3f( this.location, this.a, this.b, this.c, ); break; case 4: t.vertexAttrib4f( this.location, this.a, this.b, this.c, this.d, ); } }), (a.prototype.bind = function () { this._ext.bindVertexArrayOES(this.handle); for ( var t = 0; t < this._attribs.length; ++t ) this._attribs[t].bind(this.gl); }), (a.prototype.unbind = function () { this._ext.bindVertexArrayOES(null); }), (a.prototype.dispose = function () { this._ext.deleteVertexArrayOES(this.handle); }), (a.prototype.update = function (t, e, r) { if ( (this.bind(), n(this.gl, e, t), this.unbind(), (this._attribs.length = 0), t) ) for (var a = 0; a < t.length; ++a) { var o = t[a]; "number" == typeof o ? this._attribs.push(new i(a, 1, o)) : Array.isArray(o) && this._attribs.push( new i( a, o.length, o[0], o[1], o[2], o[3], ), ); } (this._useElements = !!e), (this._elementsType = r || this.gl.UNSIGNED_SHORT); }), (a.prototype.draw = function (t, e, r) { r = r || 0; var n = this.gl; this._useElements ? n.drawElements( t, e, this._elementsType, r, ) : n.drawArrays(t, r, e); }), (e.exports = function (t, e) { return new a( t, e, e.createVertexArrayOES(), ); }); }, { "./do-bind.js": 147 }, ], 150: [ function (t, e, r) { "use strict"; var n = t("./lib/vao-native.js"), i = t("./lib/vao-emulated.js"); function a(t) { (this.bindVertexArrayOES = t.bindVertexArray.bind(t)), (this.createVertexArrayOES = t.createVertexArray.bind(t)), (this.deleteVertexArrayOES = t.deleteVertexArray.bind(t)); } e.exports = function (t, e, r, o) { var s, l = t.createVertexArray ? new a(t) : t.getExtension( "OES_vertex_array_object", ); return ( (s = l ? n(t, l) : i(t)).update(e, r, o), s ); }; }, { "./lib/vao-emulated.js": 148, "./lib/vao-native.js": 149, }, ], 151: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = e[0] + r[0]), (t[1] = e[1] + r[1]), (t[2] = e[2] + r[2]), t ); }; }, {}, ], 152: [ function (t, e, r) { e.exports = function (t, e) { var r = n(t[0], t[1], t[2]), o = n(e[0], e[1], e[2]); i(r, r), i(o, o); var s = a(r, o); return s > 1 ? 0 : Math.acos(s); }; var n = t("./fromValues"), i = t("./normalize"), a = t("./dot"); }, { "./dot": 162, "./fromValues": 168, "./normalize": 179, }, ], 153: [ function (t, e, r) { e.exports = function (t, e) { return ( (t[0] = Math.ceil(e[0])), (t[1] = Math.ceil(e[1])), (t[2] = Math.ceil(e[2])), t ); }; }, {}, ], 154: [ function (t, e, r) { e.exports = function (t) { var e = new Float32Array(3); return ( (e[0] = t[0]), (e[1] = t[1]), (e[2] = t[2]), e ); }; }, {}, ], 155: [ function (t, e, r) { e.exports = function (t, e) { return ( (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), t ); }; }, {}, ], 156: [ function (t, e, r) { e.exports = function () { var t = new Float32Array(3); return (t[0] = 0), (t[1] = 0), (t[2] = 0), t; }; }, {}, ], 157: [ function (t, e, r) { e.exports = function (t, e, r) { var n = e[0], i = e[1], a = e[2], o = r[0], s = r[1], l = r[2]; return ( (t[0] = i * l - a * s), (t[1] = a * o - n * l), (t[2] = n * s - i * o), t ); }; }, {}, ], 158: [ function (t, e, r) { e.exports = t("./distance"); }, { "./distance": 159 }, ], 159: [ function (t, e, r) { e.exports = function (t, e) { var r = e[0] - t[0], n = e[1] - t[1], i = e[2] - t[2]; return Math.sqrt(r * r + n * n + i * i); }; }, {}, ], 160: [ function (t, e, r) { e.exports = t("./divide"); }, { "./divide": 161 }, ], 161: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = e[0] / r[0]), (t[1] = e[1] / r[1]), (t[2] = e[2] / r[2]), t ); }; }, {}, ], 162: [ function (t, e, r) { e.exports = function (t, e) { return ( t[0] * e[0] + t[1] * e[1] + t[2] * e[2] ); }; }, {}, ], 163: [ function (t, e, r) { e.exports = 1e-6; }, {}, ], 164: [ function (t, e, r) { e.exports = function (t, e) { var r = t[0], i = t[1], a = t[2], o = e[0], s = e[1], l = e[2]; return ( Math.abs(r - o) <= n * Math.max(1, Math.abs(r), Math.abs(o)) && Math.abs(i - s) <= n * Math.max(1, Math.abs(i), Math.abs(s)) && Math.abs(a - l) <= n * Math.max(1, Math.abs(a), Math.abs(l)) ); }; var n = t("./epsilon"); }, { "./epsilon": 163 }, ], 165: [ function (t, e, r) { e.exports = function (t, e) { return ( t[0] === e[0] && t[1] === e[1] && t[2] === e[2] ); }; }, {}, ], 166: [ function (t, e, r) { e.exports = function (t, e) { return ( (t[0] = Math.floor(e[0])), (t[1] = Math.floor(e[1])), (t[2] = Math.floor(e[2])), t ); }; }, {}, ], 167: [ function (t, e, r) { e.exports = function (t, e, r, i, a, o) { var s, l; e || (e = 3); r || (r = 0); l = i ? Math.min(i * e + r, t.length) : t.length; for (s = r; s < l; s += e) (n[0] = t[s]), (n[1] = t[s + 1]), (n[2] = t[s + 2]), a(n, n, o), (t[s] = n[0]), (t[s + 1] = n[1]), (t[s + 2] = n[2]); return t; }; var n = t("./create")(); }, { "./create": 156 }, ], 168: [ function (t, e, r) { e.exports = function (t, e, r) { var n = new Float32Array(3); return (n[0] = t), (n[1] = e), (n[2] = r), n; }; }, {}, ], 169: [ function (t, e, r) { e.exports = { EPSILON: t("./epsilon"), create: t("./create"), clone: t("./clone"), angle: t("./angle"), fromValues: t("./fromValues"), copy: t("./copy"), set: t("./set"), equals: t("./equals"), exactEquals: t("./exactEquals"), add: t("./add"), subtract: t("./subtract"), sub: t("./sub"), multiply: t("./multiply"), mul: t("./mul"), divide: t("./divide"), div: t("./div"), min: t("./min"), max: t("./max"), floor: t("./floor"), ceil: t("./ceil"), round: t("./round"), scale: t("./scale"), scaleAndAdd: t("./scaleAndAdd"), distance: t("./distance"), dist: t("./dist"), squaredDistance: t("./squaredDistance"), sqrDist: t("./sqrDist"), length: t("./length"), len: t("./len"), squaredLength: t("./squaredLength"), sqrLen: t("./sqrLen"), negate: t("./negate"), inverse: t("./inverse"), normalize: t("./normalize"), dot: t("./dot"), cross: t("./cross"), lerp: t("./lerp"), random: t("./random"), transformMat4: t("./transformMat4"), transformMat3: t("./transformMat3"), transformQuat: t("./transformQuat"), rotateX: t("./rotateX"), rotateY: t("./rotateY"), rotateZ: t("./rotateZ"), forEach: t("./forEach"), }; }, { "./add": 151, "./angle": 152, "./ceil": 153, "./clone": 154, "./copy": 155, "./create": 156, "./cross": 157, "./dist": 158, "./distance": 159, "./div": 160, "./divide": 161, "./dot": 162, "./epsilon": 163, "./equals": 164, "./exactEquals": 165, "./floor": 166, "./forEach": 167, "./fromValues": 168, "./inverse": 170, "./len": 171, "./length": 172, "./lerp": 173, "./max": 174, "./min": 175, "./mul": 176, "./multiply": 177, "./negate": 178, "./normalize": 179, "./random": 180, "./rotateX": 181, "./rotateY": 182, "./rotateZ": 183, "./round": 184, "./scale": 185, "./scaleAndAdd": 186, "./set": 187, "./sqrDist": 188, "./sqrLen": 189, "./squaredDistance": 190, "./squaredLength": 191, "./sub": 192, "./subtract": 193, "./transformMat3": 194, "./transformMat4": 195, "./transformQuat": 196, }, ], 170: [ function (t, e, r) { e.exports = function (t, e) { return ( (t[0] = 1 / e[0]), (t[1] = 1 / e[1]), (t[2] = 1 / e[2]), t ); }; }, {}, ], 171: [ function (t, e, r) { e.exports = t("./length"); }, { "./length": 172 }, ], 172: [ function (t, e, r) { e.exports = function (t) { var e = t[0], r = t[1], n = t[2]; return Math.sqrt(e * e + r * r + n * n); }; }, {}, ], 173: [ function (t, e, r) { e.exports = function (t, e, r, n) { var i = e[0], a = e[1], o = e[2]; return ( (t[0] = i + n * (r[0] - i)), (t[1] = a + n * (r[1] - a)), (t[2] = o + n * (r[2] - o)), t ); }; }, {}, ], 174: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = Math.max(e[0], r[0])), (t[1] = Math.max(e[1], r[1])), (t[2] = Math.max(e[2], r[2])), t ); }; }, {}, ], 175: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = Math.min(e[0], r[0])), (t[1] = Math.min(e[1], r[1])), (t[2] = Math.min(e[2], r[2])), t ); }; }, {}, ], 176: [ function (t, e, r) { e.exports = t("./multiply"); }, { "./multiply": 177 }, ], 177: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = e[0] * r[0]), (t[1] = e[1] * r[1]), (t[2] = e[2] * r[2]), t ); }; }, {}, ], 178: [ function (t, e, r) { e.exports = function (t, e) { return ( (t[0] = -e[0]), (t[1] = -e[1]), (t[2] = -e[2]), t ); }; }, {}, ], 179: [ function (t, e, r) { e.exports = function (t, e) { var r = e[0], n = e[1], i = e[2], a = r * r + n * n + i * i; a > 0 && ((a = 1 / Math.sqrt(a)), (t[0] = e[0] * a), (t[1] = e[1] * a), (t[2] = e[2] * a)); return t; }; }, {}, ], 180: [ function (t, e, r) { e.exports = function (t, e) { e = e || 1; var r = 2 * Math.random() * Math.PI, n = 2 * Math.random() - 1, i = Math.sqrt(1 - n * n) * e; return ( (t[0] = Math.cos(r) * i), (t[1] = Math.sin(r) * i), (t[2] = n * e), t ); }; }, {}, ], 181: [ function (t, e, r) { e.exports = function (t, e, r, n) { var i = r[1], a = r[2], o = e[1] - i, s = e[2] - a, l = Math.sin(n), c = Math.cos(n); return ( (t[0] = e[0]), (t[1] = i + o * c - s * l), (t[2] = a + o * l + s * c), t ); }; }, {}, ], 182: [ function (t, e, r) { e.exports = function (t, e, r, n) { var i = r[0], a = r[2], o = e[0] - i, s = e[2] - a, l = Math.sin(n), c = Math.cos(n); return ( (t[0] = i + s * l + o * c), (t[1] = e[1]), (t[2] = a + s * c - o * l), t ); }; }, {}, ], 183: [ function (t, e, r) { e.exports = function (t, e, r, n) { var i = r[0], a = r[1], o = e[0] - i, s = e[1] - a, l = Math.sin(n), c = Math.cos(n); return ( (t[0] = i + o * c - s * l), (t[1] = a + o * l + s * c), (t[2] = e[2]), t ); }; }, {}, ], 184: [ function (t, e, r) { e.exports = function (t, e) { return ( (t[0] = Math.round(e[0])), (t[1] = Math.round(e[1])), (t[2] = Math.round(e[2])), t ); }; }, {}, ], 185: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = e[0] * r), (t[1] = e[1] * r), (t[2] = e[2] * r), t ); }; }, {}, ], 186: [ function (t, e, r) { e.exports = function (t, e, r, n) { return ( (t[0] = e[0] + r[0] * n), (t[1] = e[1] + r[1] * n), (t[2] = e[2] + r[2] * n), t ); }; }, {}, ], 187: [ function (t, e, r) { e.exports = function (t, e, r, n) { return (t[0] = e), (t[1] = r), (t[2] = n), t; }; }, {}, ], 188: [ function (t, e, r) { e.exports = t("./squaredDistance"); }, { "./squaredDistance": 190 }, ], 189: [ function (t, e, r) { e.exports = t("./squaredLength"); }, { "./squaredLength": 191 }, ], 190: [ function (t, e, r) { e.exports = function (t, e) { var r = e[0] - t[0], n = e[1] - t[1], i = e[2] - t[2]; return r * r + n * n + i * i; }; }, {}, ], 191: [ function (t, e, r) { e.exports = function (t) { var e = t[0], r = t[1], n = t[2]; return e * e + r * r + n * n; }; }, {}, ], 192: [ function (t, e, r) { e.exports = t("./subtract"); }, { "./subtract": 193 }, ], 193: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = e[0] - r[0]), (t[1] = e[1] - r[1]), (t[2] = e[2] - r[2]), t ); }; }, {}, ], 194: [ function (t, e, r) { e.exports = function (t, e, r) { var n = e[0], i = e[1], a = e[2]; return ( (t[0] = n * r[0] + i * r[3] + a * r[6]), (t[1] = n * r[1] + i * r[4] + a * r[7]), (t[2] = n * r[2] + i * r[5] + a * r[8]), t ); }; }, {}, ], 195: [ function (t, e, r) { e.exports = function (t, e, r) { var n = e[0], i = e[1], a = e[2], o = r[3] * n + r[7] * i + r[11] * a + r[15]; return ( (o = o || 1), (t[0] = (r[0] * n + r[4] * i + r[8] * a + r[12]) / o), (t[1] = (r[1] * n + r[5] * i + r[9] * a + r[13]) / o), (t[2] = (r[2] * n + r[6] * i + r[10] * a + r[14]) / o), t ); }; }, {}, ], 196: [ function (t, e, r) { e.exports = function (t, e, r) { var n = e[0], i = e[1], a = e[2], o = r[0], s = r[1], l = r[2], c = r[3], u = c * n + s * a - l * i, f = c * i + l * n - o * a, h = c * a + o * i - s * n, p = -o * n - s * i - l * a; return ( (t[0] = u * c + p * -o + f * -l - h * -s), (t[1] = f * c + p * -s + h * -o - u * -l), (t[2] = h * c + p * -l + u * -s - f * -o), t ); }; }, {}, ], 197: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = e[0] + r[0]), (t[1] = e[1] + r[1]), (t[2] = e[2] + r[2]), (t[3] = e[3] + r[3]), t ); }; }, {}, ], 198: [ function (t, e, r) { e.exports = function (t) { var e = new Float32Array(4); return ( (e[0] = t[0]), (e[1] = t[1]), (e[2] = t[2]), (e[3] = t[3]), e ); }; }, {}, ], 199: [ function (t, e, r) { e.exports = function (t, e) { return ( (t[0] = e[0]), (t[1] = e[1]), (t[2] = e[2]), (t[3] = e[3]), t ); }; }, {}, ], 200: [ function (t, e, r) { e.exports = function () { var t = new Float32Array(4); return ( (t[0] = 0), (t[1] = 0), (t[2] = 0), (t[3] = 0), t ); }; }, {}, ], 201: [ function (t, e, r) { e.exports = function (t, e) { var r = e[0] - t[0], n = e[1] - t[1], i = e[2] - t[2], a = e[3] - t[3]; return Math.sqrt( r * r + n * n + i * i + a * a, ); }; }, {}, ], 202: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = e[0] / r[0]), (t[1] = e[1] / r[1]), (t[2] = e[2] / r[2]), (t[3] = e[3] / r[3]), t ); }; }, {}, ], 203: [ function (t, e, r) { e.exports = function (t, e) { return ( t[0] * e[0] + t[1] * e[1] + t[2] * e[2] + t[3] * e[3] ); }; }, {}, ], 204: [ function (t, e, r) { e.exports = function (t, e, r, n) { var i = new Float32Array(4); return ( (i[0] = t), (i[1] = e), (i[2] = r), (i[3] = n), i ); }; }, {}, ], 205: [ function (t, e, r) { e.exports = { create: t("./create"), clone: t("./clone"), fromValues: t("./fromValues"), copy: t("./copy"), set: t("./set"), add: t("./add"), subtract: t("./subtract"), multiply: t("./multiply"), divide: t("./divide"), min: t("./min"), max: t("./max"), scale: t("./scale"), scaleAndAdd: t("./scaleAndAdd"), distance: t("./distance"), squaredDistance: t("./squaredDistance"), length: t("./length"), squaredLength: t("./squaredLength"), negate: t("./negate"), inverse: t("./inverse"), normalize: t("./normalize"), dot: t("./dot"), lerp: t("./lerp"), random: t("./random"), transformMat4: t("./transformMat4"), transformQuat: t("./transformQuat"), }; }, { "./add": 197, "./clone": 198, "./copy": 199, "./create": 200, "./distance": 201, "./divide": 202, "./dot": 203, "./fromValues": 204, "./inverse": 206, "./length": 207, "./lerp": 208, "./max": 209, "./min": 210, "./multiply": 211, "./negate": 212, "./normalize": 213, "./random": 214, "./scale": 215, "./scaleAndAdd": 216, "./set": 217, "./squaredDistance": 218, "./squaredLength": 219, "./subtract": 220, "./transformMat4": 221, "./transformQuat": 222, }, ], 206: [ function (t, e, r) { e.exports = function (t, e) { return ( (t[0] = 1 / e[0]), (t[1] = 1 / e[1]), (t[2] = 1 / e[2]), (t[3] = 1 / e[3]), t ); }; }, {}, ], 207: [ function (t, e, r) { e.exports = function (t) { var e = t[0], r = t[1], n = t[2], i = t[3]; return Math.sqrt( e * e + r * r + n * n + i * i, ); }; }, {}, ], 208: [ function (t, e, r) { e.exports = function (t, e, r, n) { var i = e[0], a = e[1], o = e[2], s = e[3]; return ( (t[0] = i + n * (r[0] - i)), (t[1] = a + n * (r[1] - a)), (t[2] = o + n * (r[2] - o)), (t[3] = s + n * (r[3] - s)), t ); }; }, {}, ], 209: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = Math.max(e[0], r[0])), (t[1] = Math.max(e[1], r[1])), (t[2] = Math.max(e[2], r[2])), (t[3] = Math.max(e[3], r[3])), t ); }; }, {}, ], 210: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = Math.min(e[0], r[0])), (t[1] = Math.min(e[1], r[1])), (t[2] = Math.min(e[2], r[2])), (t[3] = Math.min(e[3], r[3])), t ); }; }, {}, ], 211: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = e[0] * r[0]), (t[1] = e[1] * r[1]), (t[2] = e[2] * r[2]), (t[3] = e[3] * r[3]), t ); }; }, {}, ], 212: [ function (t, e, r) { e.exports = function (t, e) { return ( (t[0] = -e[0]), (t[1] = -e[1]), (t[2] = -e[2]), (t[3] = -e[3]), t ); }; }, {}, ], 213: [ function (t, e, r) { e.exports = function (t, e) { var r = e[0], n = e[1], i = e[2], a = e[3], o = r * r + n * n + i * i + a * a; o > 0 && ((o = 1 / Math.sqrt(o)), (t[0] = r * o), (t[1] = n * o), (t[2] = i * o), (t[3] = a * o)); return t; }; }, {}, ], 214: [ function (t, e, r) { var n = t("./normalize"), i = t("./scale"); e.exports = function (t, e) { return ( (e = e || 1), (t[0] = Math.random()), (t[1] = Math.random()), (t[2] = Math.random()), (t[3] = Math.random()), n(t, t), i(t, t, e), t ); }; }, { "./normalize": 213, "./scale": 215 }, ], 215: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = e[0] * r), (t[1] = e[1] * r), (t[2] = e[2] * r), (t[3] = e[3] * r), t ); }; }, {}, ], 216: [ function (t, e, r) { e.exports = function (t, e, r, n) { return ( (t[0] = e[0] + r[0] * n), (t[1] = e[1] + r[1] * n), (t[2] = e[2] + r[2] * n), (t[3] = e[3] + r[3] * n), t ); }; }, {}, ], 217: [ function (t, e, r) { e.exports = function (t, e, r, n, i) { return ( (t[0] = e), (t[1] = r), (t[2] = n), (t[3] = i), t ); }; }, {}, ], 218: [ function (t, e, r) { e.exports = function (t, e) { var r = e[0] - t[0], n = e[1] - t[1], i = e[2] - t[2], a = e[3] - t[3]; return r * r + n * n + i * i + a * a; }; }, {}, ], 219: [ function (t, e, r) { e.exports = function (t) { var e = t[0], r = t[1], n = t[2], i = t[3]; return e * e + r * r + n * n + i * i; }; }, {}, ], 220: [ function (t, e, r) { e.exports = function (t, e, r) { return ( (t[0] = e[0] - r[0]), (t[1] = e[1] - r[1]), (t[2] = e[2] - r[2]), (t[3] = e[3] - r[3]), t ); }; }, {}, ], 221: [ function (t, e, r) { e.exports = function (t, e, r) { var n = e[0], i = e[1], a = e[2], o = e[3]; return ( (t[0] = r[0] * n + r[4] * i + r[8] * a + r[12] * o), (t[1] = r[1] * n + r[5] * i + r[9] * a + r[13] * o), (t[2] = r[2] * n + r[6] * i + r[10] * a + r[14] * o), (t[3] = r[3] * n + r[7] * i + r[11] * a + r[15] * o), t ); }; }, {}, ], 222: [ function (t, e, r) { e.exports = function (t, e, r) { var n = e[0], i = e[1], a = e[2], o = r[0], s = r[1], l = r[2], c = r[3], u = c * n + s * a - l * i, f = c * i + l * n - o * a, h = c * a + o * i - s * n, p = -o * n - s * i - l * a; return ( (t[0] = u * c + p * -o + f * -l - h * -s), (t[1] = f * c + p * -s + h * -o - u * -l), (t[2] = h * c + p * -l + u * -s - f * -o), (t[3] = e[3]), t ); }; }, {}, ], 223: [ function (t, e, r) { var n = t("glsl-tokenizer"), i = t("atob-lite"); e.exports = function (t) { for ( var e = Array.isArray(t) ? t : n(t), r = 0; r < e.length; r++ ) { var a = e[r]; if ("preprocessor" === a.type) { var o = a.data.match( /\#define\s+SHADER_NAME(_B64)?\s+(.+)$/, ); if (o && o[2]) { var s = o[1], l = o[2]; return (s ? i(l) : l).trim(); } } } }; }, { "atob-lite": 13, "glsl-tokenizer": 230 }, ], 224: [ function (t, e, r) { e.exports = function (t) { var e, r, c, u = 0, f = 0, h = 999, p = [], d = [], m = 1, g = 0, v = 0, y = !1, x = !1, b = "", _ = a, w = n; "300 es" === (t = t || {}).version && ((_ = s), (w = o)); var T = {}, k = {}; for (u = 0; u < _.length; u++) T[_[u]] = !0; for (u = 0; u < w.length; u++) k[w[u]] = !0; return function (t) { return ( (d = []), null !== t ? (function (t) { (u = 0), t.toString && (t = t.toString()); var r; (b += t.replace(/\r\n/g, "\n")), (c = b.length); for (; (e = b[u]), u < c; ) { switch (((r = u), h)) { case 0: u = L(); break; case 1: case 2: u = E(); break; case 3: u = C(); break; case 4: u = O(); break; case 11: u = I(); break; case 5: u = z(); break; case 9999: u = D(); break; case 9: u = S(); break; case 999: u = M(); } if (r !== u) switch (b[r]) { case "\n": (g = 0), ++m; break; default: ++g; } } return ( (f += u), (b = b.slice(u)), d ); })(t) : (function (t) { p.length && A(p.join("")); return (h = 10), A("(eof)"), d; })() ); }; function A(t) { t.length && d.push({ type: l[h], data: t, position: v, line: m, column: g, }); } function M() { return ( (p = p.length ? [] : p), "/" === r && "*" === e ? ((v = f + u - 1), (h = 0), (r = e), u + 1) : "/" === r && "/" === e ? ((v = f + u - 1), (h = 1), (r = e), u + 1) : "#" === e ? ((h = 2), (v = f + u), u) : /\s/.test(e) ? ((h = 9), (v = f + u), u) : ((y = /\d/.test(e)), (x = /[^\w_]/.test(e)), (v = f + u), (h = y ? 4 : x ? 3 : 9999), u) ); } function S() { return /[^\s]/g.test(e) ? (A(p.join("")), (h = 999), u) : (p.push(e), (r = e), u + 1); } function E() { return ("\r" !== e && "\n" !== e) || "\\" === r ? (p.push(e), (r = e), u + 1) : (A(p.join("")), (h = 999), u); } function L() { return "/" === e && "*" === r ? (p.push(e), A(p.join("")), (h = 999), u + 1) : (p.push(e), (r = e), u + 1); } function C() { if ("." === r && /\d/.test(e)) return (h = 5), u; if ("/" === r && "*" === e) return (h = 0), u; if ("/" === r && "/" === e) return (h = 1), u; if ("." === e && p.length) { for (; P(p); ); return (h = 5), u; } if (";" === e || ")" === e || "(" === e) { if (p.length) for (; P(p); ); return A(e), (h = 999), u + 1; } var t = 2 === p.length && "=" !== e; if (/[\w_\d\s]/.test(e) || t) { for (; P(p); ); return (h = 999), u; } return p.push(e), (r = e), u + 1; } function P(t) { for (var e, r, n = 0; ; ) { if ( ((e = i.indexOf( t.slice(0, t.length + n).join(""), )), (r = i[e]), -1 === e) ) { if (n-- + t.length > 0) continue; r = t.slice(0, 1).join(""); } return ( A(r), (v += r.length), (p = p.slice(r.length)).length ); } } function I() { return /[^a-fA-F0-9]/.test(e) ? (A(p.join("")), (h = 999), u) : (p.push(e), (r = e), u + 1); } function O() { return "." === e || /[eE]/.test(e) ? (p.push(e), (h = 5), (r = e), u + 1) : "x" === e && 1 === p.length && "0" === p[0] ? ((h = 11), p.push(e), (r = e), u + 1) : /[^\d]/.test(e) ? (A(p.join("")), (h = 999), u) : (p.push(e), (r = e), u + 1); } function z() { return ( "f" === e && (p.push(e), (r = e), (u += 1)), /[eE]/.test(e) ? (p.push(e), (r = e), u + 1) : (("-" !== e && "+" !== e) || !/[eE]/.test(r)) && /[^\d]/.test(e) ? (A(p.join("")), (h = 999), u) : (p.push(e), (r = e), u + 1) ); } function D() { if (/[^\d\w_]/.test(e)) { var t = p.join(""); return ( (h = k[t] ? 8 : T[t] ? 7 : 6), A(p.join("")), (h = 999), u ); } return p.push(e), (r = e), u + 1; } }; var n = t("./lib/literals"), i = t("./lib/operators"), a = t("./lib/builtins"), o = t("./lib/literals-300es"), s = t("./lib/builtins-300es"), l = [ "block-comment", "line-comment", "preprocessor", "operator", "integer", "float", "ident", "builtin", "keyword", "whitespace", "eof", "integer", ]; }, { "./lib/builtins": 226, "./lib/builtins-300es": 225, "./lib/literals": 228, "./lib/literals-300es": 227, "./lib/operators": 229, }, ], 225: [ function (t, e, r) { var n = t("./builtins"); (n = n.slice().filter(function (t) { return !/^(gl\_|texture)/.test(t); })), (e.exports = n.concat([ "gl_VertexID", "gl_InstanceID", "gl_Position", "gl_PointSize", "gl_FragCoord", "gl_FrontFacing", "gl_FragDepth", "gl_PointCoord", "gl_MaxVertexAttribs", "gl_MaxVertexUniformVectors", "gl_MaxVertexOutputVectors", "gl_MaxFragmentInputVectors", "gl_MaxVertexTextureImageUnits", "gl_MaxCombinedTextureImageUnits", "gl_MaxTextureImageUnits", "gl_MaxFragmentUniformVectors", "gl_MaxDrawBuffers", "gl_MinProgramTexelOffset", "gl_MaxProgramTexelOffset", "gl_DepthRangeParameters", "gl_DepthRange", "trunc", "round", "roundEven", "isnan", "isinf", "floatBitsToInt", "floatBitsToUint", "intBitsToFloat", "uintBitsToFloat", "packSnorm2x16", "unpackSnorm2x16", "packUnorm2x16", "unpackUnorm2x16", "packHalf2x16", "unpackHalf2x16", "outerProduct", "transpose", "determinant", "inverse", "texture", "textureSize", "textureProj", "textureLod", "textureOffset", "texelFetch", "texelFetchOffset", "textureProjOffset", "textureLodOffset", "textureProjLod", "textureProjLodOffset", "textureGrad", "textureGradOffset", "textureProjGrad", "textureProjGradOffset", ])); }, { "./builtins": 226 }, ], 226: [ function (t, e, r) { e.exports = [ "abs", "acos", "all", "any", "asin", "atan", "ceil", "clamp", "cos", "cross", "dFdx", "dFdy", "degrees", "distance", "dot", "equal", "exp", "exp2", "faceforward", "floor", "fract", "gl_BackColor", "gl_BackLightModelProduct", "gl_BackLightProduct", "gl_BackMaterial", "gl_BackSecondaryColor", "gl_ClipPlane", "gl_ClipVertex", "gl_Color", "gl_DepthRange", "gl_DepthRangeParameters", "gl_EyePlaneQ", "gl_EyePlaneR", "gl_EyePlaneS", "gl_EyePlaneT", "gl_Fog", "gl_FogCoord", "gl_FogFragCoord", "gl_FogParameters", "gl_FragColor", "gl_FragCoord", "gl_FragData", "gl_FragDepth", "gl_FragDepthEXT", "gl_FrontColor", "gl_FrontFacing", "gl_FrontLightModelProduct", "gl_FrontLightProduct", "gl_FrontMaterial", "gl_FrontSecondaryColor", "gl_LightModel", "gl_LightModelParameters", "gl_LightModelProducts", "gl_LightProducts", "gl_LightSource", "gl_LightSourceParameters", "gl_MaterialParameters", "gl_MaxClipPlanes", "gl_MaxCombinedTextureImageUnits", "gl_MaxDrawBuffers", "gl_MaxFragmentUniformComponents", "gl_MaxLights", "gl_MaxTextureCoords", "gl_MaxTextureImageUnits", "gl_MaxTextureUnits", "gl_MaxVaryingFloats", "gl_MaxVertexAttribs", "gl_MaxVertexTextureImageUnits", "gl_MaxVertexUniformComponents", "gl_ModelViewMatrix", "gl_ModelViewMatrixInverse", "gl_ModelViewMatrixInverseTranspose", "gl_ModelViewMatrixTranspose", "gl_ModelViewProjectionMatrix", "gl_ModelViewProjectionMatrixInverse", "gl_ModelViewProjectionMatrixInverseTranspose", "gl_ModelViewProjectionMatrixTranspose", "gl_MultiTexCoord0", "gl_MultiTexCoord1", "gl_MultiTexCoord2", "gl_MultiTexCoord3", "gl_MultiTexCoord4", "gl_MultiTexCoord5", "gl_MultiTexCoord6", "gl_MultiTexCoord7", "gl_Normal", "gl_NormalMatrix", "gl_NormalScale", "gl_ObjectPlaneQ", "gl_ObjectPlaneR", "gl_ObjectPlaneS", "gl_ObjectPlaneT", "gl_Point", "gl_PointCoord", "gl_PointParameters", "gl_PointSize", "gl_Position", "gl_ProjectionMatrix", "gl_ProjectionMatrixInverse", "gl_ProjectionMatrixInverseTranspose", "gl_ProjectionMatrixTranspose", "gl_SecondaryColor", "gl_TexCoord", "gl_TextureEnvColor", "gl_TextureMatrix", "gl_TextureMatrixInverse", "gl_TextureMatrixInverseTranspose", "gl_TextureMatrixTranspose", "gl_Vertex", "greaterThan", "greaterThanEqual", "inversesqrt", "length", "lessThan", "lessThanEqual", "log", "log2", "matrixCompMult", "max", "min", "mix", "mod", "normalize", "not", "notEqual", "pow", "radians", "reflect", "refract", "sign", "sin", "smoothstep", "sqrt", "step", "tan", "texture2D", "texture2DLod", "texture2DProj", "texture2DProjLod", "textureCube", "textureCubeLod", "texture2DLodEXT", "texture2DProjLodEXT", "textureCubeLodEXT", "texture2DGradEXT", "texture2DProjGradEXT", "textureCubeGradEXT", ]; }, {}, ], 227: [ function (t, e, r) { var n = t("./literals"); e.exports = n .slice() .concat([ "layout", "centroid", "smooth", "case", "mat2x2", "mat2x3", "mat2x4", "mat3x2", "mat3x3", "mat3x4", "mat4x2", "mat4x3", "mat4x4", "uvec2", "uvec3", "uvec4", "samplerCubeShadow", "sampler2DArray", "sampler2DArrayShadow", "isampler2D", "isampler3D", "isamplerCube", "isampler2DArray", "usampler2D", "usampler3D", "usamplerCube", "usampler2DArray", "coherent", "restrict", "readonly", "writeonly", "resource", "atomic_uint", "noperspective", "patch", "sample", "subroutine", "common", "partition", "active", "filter", "image1D", "image2D", "image3D", "imageCube", "iimage1D", "iimage2D", "iimage3D", "iimageCube", "uimage1D", "uimage2D", "uimage3D", "uimageCube", "image1DArray", "image2DArray", "iimage1DArray", "iimage2DArray", "uimage1DArray", "uimage2DArray", "image1DShadow", "image2DShadow", "image1DArrayShadow", "image2DArrayShadow", "imageBuffer", "iimageBuffer", "uimageBuffer", "sampler1DArray", "sampler1DArrayShadow", "isampler1D", "isampler1DArray", "usampler1D", "usampler1DArray", "isampler2DRect", "usampler2DRect", "samplerBuffer", "isamplerBuffer", "usamplerBuffer", "sampler2DMS", "isampler2DMS", "usampler2DMS", "sampler2DMSArray", "isampler2DMSArray", "usampler2DMSArray", ]); }, { "./literals": 228 }, ], 228: [ function (t, e, r) { e.exports = [ "precision", "highp", "mediump", "lowp", "attribute", "const", "uniform", "varying", "break", "continue", "do", "for", "while", "if", "else", "in", "out", "inout", "float", "int", "uint", "void", "bool", "true", "false", "discard", "return", "mat2", "mat3", "mat4", "vec2", "vec3", "vec4", "ivec2", "ivec3", "ivec4", "bvec2", "bvec3", "bvec4", "sampler1D", "sampler2D", "sampler3D", "samplerCube", "sampler1DShadow", "sampler2DShadow", "struct", "asm", "class", "union", "enum", "typedef", "template", "this", "packed", "goto", "switch", "default", "inline", "noinline", "volatile", "public", "static", "extern", "external", "interface", "long", "short", "double", "half", "fixed", "unsigned", "input", "output", "hvec2", "hvec3", "hvec4", "dvec2", "dvec3", "dvec4", "fvec2", "fvec3", "fvec4", "sampler2DRect", "sampler3DRect", "sampler2DRectShadow", "sizeof", "cast", "namespace", "using", ]; }, {}, ], 229: [ function (t, e, r) { e.exports = [ "<<=", ">>=", "++", "--", "<<", ">>", "<=", ">=", "==", "!=", "&&", "||", "+=", "-=", "*=", "/=", "%=", "&=", "^^", "^=", "|=", "(", ")", "[", "]", ".", "!", "~", "*", "/", "%", "+", "-", "<", ">", "&", "^", "|", "?", ":", "=", ",", ";", "{", "}", ]; }, {}, ], 230: [ function (t, e, r) { var n = t("./index"); e.exports = function (t, e) { var r = n(e), i = []; return (i = (i = i.concat(r(t))).concat( r(null), )); }; }, { "./index": 224 }, ], 231: [ function (t, e, r) { e.exports = function (t) { "string" == typeof t && (t = [t]); for ( var e = [].slice.call(arguments, 1), r = [], n = 0; n < t.length - 1; n++ ) r.push(t[n], e[n] || ""); return r.push(t[n]), r.join(""); }; }, {}, ], 232: [ function (t, e, r) { "use strict"; var n = t("is-browser"); e.exports = n && (function () { var t = !1; try { var e = Object.defineProperty( {}, "passive", { get: function () { t = !0; }, }, ); window.addEventListener("test", null, e), window.removeEventListener( "test", null, e, ); } catch (e) { t = !1; } return t; })(); }, { "is-browser": 236 }, ], 233: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r = t.length; if (0 === r) throw new Error( "Must have at least d+1 points", ); var i = t[0].length; if (r <= i) throw new Error( "Must input at least d+1 points", ); var o = t.slice(0, i + 1), s = n.apply(void 0, o); if (0 === s) throw new Error( "Input not in general position", ); for ( var l = new Array(i + 1), u = 0; u <= i; ++u ) l[u] = u; s < 0 && ((l[0] = 1), (l[1] = 0)); var f = new a(l, new Array(i + 1), !1), h = f.adjacent, p = new Array(i + 2); for (u = 0; u <= i; ++u) { for (var d = l.slice(), m = 0; m <= i; ++m) m === u && (d[m] = -1); var g = d[0]; (d[0] = d[1]), (d[1] = g); var v = new a(d, new Array(i + 1), !0); (h[u] = v), (p[u] = v); } p[i + 1] = f; for (u = 0; u <= i; ++u) { d = h[u].vertices; var y = h[u].adjacent; for (m = 0; m <= i; ++m) { var x = d[m]; if (x < 0) y[m] = f; else for (var b = 0; b <= i; ++b) h[b].vertices.indexOf(x) < 0 && (y[m] = h[b]); } } var _ = new c(i, o, p), w = !!e; for (u = i + 1; u < r; ++u) _.insert(t[u], w); return _.boundary(); }; var n = t("robust-orientation"), i = t("simplicial-complex").compareCells; function a(t, e, r) { (this.vertices = t), (this.adjacent = e), (this.boundary = r), (this.lastVisited = -1); } function o(t, e, r) { (this.vertices = t), (this.cell = e), (this.index = r); } function s(t, e) { return i(t.vertices, e.vertices); } a.prototype.flip = function () { var t = this.vertices[0]; (this.vertices[0] = this.vertices[1]), (this.vertices[1] = t); var e = this.adjacent[0]; (this.adjacent[0] = this.adjacent[1]), (this.adjacent[1] = e); }; var l = []; function c(t, e, r) { (this.dimension = t), (this.vertices = e), (this.simplices = r), (this.interior = r.filter(function (t) { return !t.boundary; })), (this.tuple = new Array(t + 1)); for (var i = 0; i <= t; ++i) this.tuple[i] = this.vertices[i]; var a, o = l[t]; o || (o = l[t] = ((a = n[t + 1]) || (a = n), (function (t) { return function () { var e = this.tuple; return t.apply(this, e); }; })(a))), (this.orient = o); } var u = c.prototype; (u.handleBoundaryDegeneracy = function (t, e) { var r = this.dimension, n = this.vertices.length - 1, i = this.tuple, a = this.vertices, o = [t]; for (t.lastVisited = -n; o.length > 0; ) for ( var s = (t = o.pop()).adjacent, l = 0; l <= r; ++l ) { var c = s[l]; if ( c.boundary && !(c.lastVisited <= -n) ) { for ( var u = c.vertices, f = 0; f <= r; ++f ) { var h = u[f]; i[f] = h < 0 ? e : a[h]; } var p = this.orient(); if (p > 0) return c; (c.lastVisited = -n), 0 === p && o.push(c); } } return null; }), (u.walk = function (t, e) { var r = this.vertices.length - 1, n = this.dimension, i = this.vertices, a = this.tuple, o = e ? (this.interior.length * Math.random()) | 0 : this.interior.length - 1, s = this.interior[o]; t: for (; !s.boundary; ) { for ( var l = s.vertices, c = s.adjacent, u = 0; u <= n; ++u ) a[u] = i[l[u]]; s.lastVisited = r; for (u = 0; u <= n; ++u) { var f = c[u]; if (!(f.lastVisited >= r)) { var h = a[u]; a[u] = t; var p = this.orient(); if (((a[u] = h), p < 0)) { s = f; continue t; } f.boundary ? (f.lastVisited = -r) : (f.lastVisited = r); } } return; } return s; }), (u.addPeaks = function (t, e) { var r = this.vertices.length - 1, n = this.dimension, i = this.vertices, l = this.tuple, c = this.interior, u = this.simplices, f = [e]; (e.lastVisited = r), (e.vertices[e.vertices.indexOf(-1)] = r), (e.boundary = !1), c.push(e); for (var h = []; f.length > 0; ) { var p = (e = f.pop()).vertices, d = e.adjacent, m = p.indexOf(r); if (!(m < 0)) for (var g = 0; g <= n; ++g) if (g !== m) { var v = d[g]; if ( v.boundary && !(v.lastVisited >= r) ) { var y = v.vertices; if (v.lastVisited !== -r) { for ( var x = 0, b = 0; b <= n; ++b ) y[b] < 0 ? ((x = b), (l[b] = t)) : (l[b] = i[y[b]]); if (this.orient() > 0) { (y[x] = r), (v.boundary = !1), c.push(v), f.push(v), (v.lastVisited = r); continue; } v.lastVisited = -r; } var _ = v.adjacent, w = p.slice(), T = d.slice(), k = new a(w, T, !0); u.push(k); var A = _.indexOf(e); if (!(A < 0)) { (_[A] = k), (T[m] = v), (w[g] = -1), (T[g] = e), (d[g] = k), k.flip(); for (b = 0; b <= n; ++b) { var M = w[b]; if (!(M < 0 || M === r)) { for ( var S = new Array(n - 1), E = 0, L = 0; L <= n; ++L ) { var C = w[L]; C < 0 || L === b || (S[E++] = C); } h.push(new o(S, k, b)); } } } } } } h.sort(s); for (g = 0; g + 1 < h.length; g += 2) { var P = h[g], I = h[g + 1], O = P.index, z = I.index; O < 0 || z < 0 || ((P.cell.adjacent[P.index] = I.cell), (I.cell.adjacent[I.index] = P.cell)); } }), (u.insert = function (t, e) { var r = this.vertices; r.push(t); var n = this.walk(t, e); if (n) { for ( var i = this.dimension, a = this.tuple, o = 0; o <= i; ++o ) { var s = n.vertices[o]; a[o] = s < 0 ? t : r[s]; } var l = this.orient(a); l < 0 || ((0 !== l || (n = this.handleBoundaryDegeneracy( n, t, ))) && this.addPeaks(t, n)); } }), (u.boundary = function () { for ( var t = this.dimension, e = [], r = this.simplices, n = r.length, i = 0; i < n; ++i ) { var a = r[i]; if (a.boundary) { for ( var o = new Array(t), s = a.vertices, l = 0, c = 0, u = 0; u <= t; ++u ) s[u] >= 0 ? (o[l++] = s[u]) : (c = 1 & u); if (c === (1 & t)) { var f = o[0]; (o[0] = o[1]), (o[1] = f); } e.push(o); } } return e; }); }, { "robust-orientation": 284, "simplicial-complex": 293, }, ], 234: [ function (t, e, r) { "use strict"; var n = t("binary-search-bounds"); function i(t, e, r, n, i) { (this.mid = t), (this.left = e), (this.right = r), (this.leftPoints = n), (this.rightPoints = i), (this.count = (e ? e.count : 0) + (r ? r.count : 0) + n.length); } e.exports = function (t) { if (!t || 0 === t.length) return new v(null); return new v(g(t)); }; var a = i.prototype; function o(t, e) { (t.mid = e.mid), (t.left = e.left), (t.right = e.right), (t.leftPoints = e.leftPoints), (t.rightPoints = e.rightPoints), (t.count = e.count); } function s(t, e) { var r = g(e); (t.mid = r.mid), (t.left = r.left), (t.right = r.right), (t.leftPoints = r.leftPoints), (t.rightPoints = r.rightPoints), (t.count = r.count); } function l(t, e) { var r = t.intervals([]); r.push(e), s(t, r); } function c(t, e) { var r = t.intervals([]), n = r.indexOf(e); return n < 0 ? 0 : (r.splice(n, 1), s(t, r), 1); } function u(t, e, r) { for ( var n = 0; n < t.length && t[n][0] <= e; ++n ) { var i = r(t[n]); if (i) return i; } } function f(t, e, r) { for ( var n = t.length - 1; n >= 0 && t[n][1] >= e; --n ) { var i = r(t[n]); if (i) return i; } } function h(t, e) { for (var r = 0; r < t.length; ++r) { var n = e(t[r]); if (n) return n; } } function p(t, e) { return t - e; } function d(t, e) { var r = t[0] - e[0]; return r || t[1] - e[1]; } function m(t, e) { var r = t[1] - e[1]; return r || t[0] - e[0]; } function g(t) { if (0 === t.length) return null; for (var e = [], r = 0; r < t.length; ++r) e.push(t[r][0], t[r][1]); e.sort(p); var n = e[e.length >> 1], a = [], o = [], s = []; for (r = 0; r < t.length; ++r) { var l = t[r]; l[1] < n ? a.push(l) : n < l[0] ? o.push(l) : s.push(l); } var c = s, u = s.slice(); return ( c.sort(d), u.sort(m), new i(n, g(a), g(o), c, u) ); } function v(t) { this.root = t; } (a.intervals = function (t) { return ( t.push.apply(t, this.leftPoints), this.left && this.left.intervals(t), this.right && this.right.intervals(t), t ); }), (a.insert = function (t) { var e = this.count - this.leftPoints.length; if (((this.count += 1), t[1] < this.mid)) this.left ? 4 * (this.left.count + 1) > 3 * (e + 1) ? l(this, t) : this.left.insert(t) : (this.left = g([t])); else if (t[0] > this.mid) this.right ? 4 * (this.right.count + 1) > 3 * (e + 1) ? l(this, t) : this.right.insert(t) : (this.right = g([t])); else { var r = n.ge(this.leftPoints, t, d), i = n.ge(this.rightPoints, t, m); this.leftPoints.splice(r, 0, t), this.rightPoints.splice(i, 0, t); } }), (a.remove = function (t) { var e = this.count - this.leftPoints; if (t[1] < this.mid) return this.left ? 4 * (this.right ? this.right.count : 0) > 3 * (e - 1) ? c(this, t) : 2 === (s = this.left.remove(t)) ? ((this.left = null), (this.count -= 1), 1) : (1 === s && (this.count -= 1), s) : 0; if (t[0] > this.mid) return this.right ? 4 * (this.left ? this.left.count : 0) > 3 * (e - 1) ? c(this, t) : 2 === (s = this.right.remove(t)) ? ((this.right = null), (this.count -= 1), 1) : (1 === s && (this.count -= 1), s) : 0; if (1 === this.count) return this.leftPoints[0] === t ? 2 : 0; if ( 1 === this.leftPoints.length && this.leftPoints[0] === t ) { if (this.left && this.right) { for ( var r = this, i = this.left; i.right; ) (r = i), (i = i.right); if (r === this) i.right = this.right; else { var a = this.left, s = this.right; (r.count -= i.count), (r.right = i.left), (i.left = a), (i.right = s); } o(this, i), (this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length); } else this.left ? o(this, this.left) : o(this, this.right); return 1; } for ( a = n.ge(this.leftPoints, t, d); a < this.leftPoints.length && this.leftPoints[a][0] === t[0]; ++a ) if (this.leftPoints[a] === t) { (this.count -= 1), this.leftPoints.splice(a, 1); for ( s = n.ge(this.rightPoints, t, m); s < this.rightPoints.length && this.rightPoints[s][1] === t[1]; ++s ) if (this.rightPoints[s] === t) return ( this.rightPoints.splice(s, 1), 1 ); } return 0; }), (a.queryPoint = function (t, e) { if (t < this.mid) { if (this.left) if ((r = this.left.queryPoint(t, e))) return r; return u(this.leftPoints, t, e); } if (t > this.mid) { var r; if (this.right) if ((r = this.right.queryPoint(t, e))) return r; return f(this.rightPoints, t, e); } return h(this.leftPoints, e); }), (a.queryInterval = function (t, e, r) { var n; if ( t < this.mid && this.left && (n = this.left.queryInterval(t, e, r)) ) return n; if ( e > this.mid && this.right && (n = this.right.queryInterval(t, e, r)) ) return n; return e < this.mid ? u(this.leftPoints, e, r) : t > this.mid ? f(this.rightPoints, t, r) : h(this.leftPoints, r); }); var y = v.prototype; (y.insert = function (t) { this.root ? this.root.insert(t) : (this.root = new i( t[0], null, null, [t], [t], )); }), (y.remove = function (t) { if (this.root) { var e = this.root.remove(t); return ( 2 === e && (this.root = null), 0 !== e ); } return !1; }), (y.queryPoint = function (t, e) { if (this.root) return this.root.queryPoint(t, e); }), (y.queryInterval = function (t, e, r) { if (t <= e && this.root) return this.root.queryInterval(t, e, r); }), Object.defineProperty(y, "count", { get: function () { return this.root ? this.root.count : 0; }, }), Object.defineProperty(y, "intervals", { get: function () { return this.root ? this.root.intervals([]) : []; }, }); }, { "binary-search-bounds": 31 }, ], 235: [ function (t, e, r) { "use strict"; e.exports = function (t) { for (var e = new Array(t), r = 0; r < t; ++r) e[r] = r; return e; }; }, {}, ], 236: [ function (t, e, r) { e.exports = !0; }, {}, ], 237: [ function (t, e, r) { function n(t) { return ( !!t.constructor && "function" == typeof t.constructor.isBuffer && t.constructor.isBuffer(t) ); } /*! * Determine if an object is a Buffer * * @author Feross Aboukhadijeh * @license MIT */ e.exports = function (t) { return ( null != t && (n(t) || (function (t) { return ( "function" == typeof t.readFloatLE && "function" == typeof t.slice && n(t.slice(0, 0)) ); })(t) || !!t._isBuffer) ); }; }, {}, ], 238: [ function (t, e, r) { "use strict"; (e.exports = a), (e.exports.isMobile = a), (e.exports.default = a); var n = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i, i = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i; function a(t) { t || (t = {}); var e = t.ua; if ( (e || "undefined" == typeof navigator || (e = navigator.userAgent), e && e.headers && "string" == typeof e.headers["user-agent"] && (e = e.headers["user-agent"]), "string" != typeof e) ) return !1; var r = t.tablet ? i.test(e) : n.test(e); return ( !r && t.tablet && t.featureDetect && navigator && navigator.maxTouchPoints > 1 && -1 !== e.indexOf("Macintosh") && -1 !== e.indexOf("Safari") && (r = !0), r ); } }, {}, ], 239: [ function (t, e, r) { "use strict"; e.exports = function (t) { for (var e, r = t.length, n = 0; n < r; n++) if ( ((e = t.charCodeAt(n)) < 9 || e > 13) && 32 !== e && 133 !== e && 160 !== e && 5760 !== e && 6158 !== e && (e < 8192 || e > 8205) && 8232 !== e && 8233 !== e && 8239 !== e && 8287 !== e && 8288 !== e && 12288 !== e && 65279 !== e ) return !1; return !0; }; }, {}, ], 240: [ function (t, e, r) { e.exports = function (t, e, r) { return t * (1 - r) + e * r; }; }, {}, ], 241: [ function (t, e, r) { var n = t("./normalize"), i = t("gl-mat4/create"), a = t("gl-mat4/clone"), o = t("gl-mat4/determinant"), s = t("gl-mat4/invert"), l = t("gl-mat4/transpose"), c = { length: t("gl-vec3/length"), normalize: t("gl-vec3/normalize"), dot: t("gl-vec3/dot"), cross: t("gl-vec3/cross"), }, u = i(), f = i(), h = [0, 0, 0, 0], p = [ [0, 0, 0], [0, 0, 0], [0, 0, 0], ], d = [0, 0, 0]; function m(t, e, r, n, i) { (t[0] = e[0] * n + r[0] * i), (t[1] = e[1] * n + r[1] * i), (t[2] = e[2] * n + r[2] * i); } e.exports = function (t, e, r, i, g, v) { if ( (e || (e = [0, 0, 0]), r || (r = [0, 0, 0]), i || (i = [0, 0, 0]), g || (g = [0, 0, 0, 1]), v || (v = [0, 0, 0, 1]), !n(u, t)) ) return !1; if ( (a(f, u), (f[3] = 0), (f[7] = 0), (f[11] = 0), (f[15] = 1), Math.abs(o(f) < 1e-8)) ) return !1; var y, x, b, _, w, T, k, A = u[3], M = u[7], S = u[11], E = u[12], L = u[13], C = u[14], P = u[15]; if (0 !== A || 0 !== M || 0 !== S) { if ( ((h[0] = A), (h[1] = M), (h[2] = S), (h[3] = P), !s(f, f)) ) return !1; l(f, f), (y = g), (b = f), (_ = (x = h)[0]), (w = x[1]), (T = x[2]), (k = x[3]), (y[0] = b[0] * _ + b[4] * w + b[8] * T + b[12] * k), (y[1] = b[1] * _ + b[5] * w + b[9] * T + b[13] * k), (y[2] = b[2] * _ + b[6] * w + b[10] * T + b[14] * k), (y[3] = b[3] * _ + b[7] * w + b[11] * T + b[15] * k); } else (g[0] = g[1] = g[2] = 0), (g[3] = 1); if ( ((e[0] = E), (e[1] = L), (e[2] = C), (function (t, e) { (t[0][0] = e[0]), (t[0][1] = e[1]), (t[0][2] = e[2]), (t[1][0] = e[4]), (t[1][1] = e[5]), (t[1][2] = e[6]), (t[2][0] = e[8]), (t[2][1] = e[9]), (t[2][2] = e[10]); })(p, u), (r[0] = c.length(p[0])), c.normalize(p[0], p[0]), (i[0] = c.dot(p[0], p[1])), m(p[1], p[1], p[0], 1, -i[0]), (r[1] = c.length(p[1])), c.normalize(p[1], p[1]), (i[0] /= r[1]), (i[1] = c.dot(p[0], p[2])), m(p[2], p[2], p[0], 1, -i[1]), (i[2] = c.dot(p[1], p[2])), m(p[2], p[2], p[1], 1, -i[2]), (r[2] = c.length(p[2])), c.normalize(p[2], p[2]), (i[1] /= r[2]), (i[2] /= r[2]), c.cross(d, p[1], p[2]), c.dot(p[0], d) < 0) ) for (var I = 0; I < 3; I++) (r[I] *= -1), (p[I][0] *= -1), (p[I][1] *= -1), (p[I][2] *= -1); return ( (v[0] = 0.5 * Math.sqrt( Math.max( 1 + p[0][0] - p[1][1] - p[2][2], 0, ), )), (v[1] = 0.5 * Math.sqrt( Math.max( 1 - p[0][0] + p[1][1] - p[2][2], 0, ), )), (v[2] = 0.5 * Math.sqrt( Math.max( 1 - p[0][0] - p[1][1] + p[2][2], 0, ), )), (v[3] = 0.5 * Math.sqrt( Math.max( 1 + p[0][0] + p[1][1] + p[2][2], 0, ), )), p[2][1] > p[1][2] && (v[0] = -v[0]), p[0][2] > p[2][0] && (v[1] = -v[1]), p[1][0] > p[0][1] && (v[2] = -v[2]), !0 ); }; }, { "./normalize": 242, "gl-mat4/clone": 92, "gl-mat4/create": 93, "gl-mat4/determinant": 94, "gl-mat4/invert": 98, "gl-mat4/transpose": 109, "gl-vec3/cross": 157, "gl-vec3/dot": 162, "gl-vec3/length": 172, "gl-vec3/normalize": 179, }, ], 242: [ function (t, e, r) { e.exports = function (t, e) { var r = e[15]; if (0 === r) return !1; for (var n = 1 / r, i = 0; i < 16; i++) t[i] = e[i] * n; return !0; }; }, {}, ], 243: [ function (t, e, r) { var n = t("gl-vec3/lerp"), i = t("mat4-recompose"), a = t("mat4-decompose"), o = t("gl-mat4/determinant"), s = t("quat-slerp"), l = f(), c = f(), u = f(); function f() { return { translate: h(), scale: h(1), skew: h(), perspective: [0, 0, 0, 1], quaternion: [0, 0, 0, 1], }; } function h(t) { return [t || 0, t || 0, t || 0]; } e.exports = function (t, e, r, f) { if (0 === o(e) || 0 === o(r)) return !1; var h = a( e, l.translate, l.scale, l.skew, l.perspective, l.quaternion, ), p = a( r, c.translate, c.scale, c.skew, c.perspective, c.quaternion, ); return ( !(!h || !p) && (n( u.translate, l.translate, c.translate, f, ), n(u.skew, l.skew, c.skew, f), n(u.scale, l.scale, c.scale, f), n( u.perspective, l.perspective, c.perspective, f, ), s( u.quaternion, l.quaternion, c.quaternion, f, ), i( t, u.translate, u.scale, u.skew, u.perspective, u.quaternion, ), !0) ); }; }, { "gl-mat4/determinant": 94, "gl-vec3/lerp": 173, "mat4-decompose": 241, "mat4-recompose": 244, "quat-slerp": 271, }, ], 244: [ function (t, e, r) { var n = { identity: t("gl-mat4/identity"), translate: t("gl-mat4/translate"), multiply: t("gl-mat4/multiply"), create: t("gl-mat4/create"), scale: t("gl-mat4/scale"), fromRotationTranslation: t( "gl-mat4/fromRotationTranslation", ), }, i = (n.create(), n.create()); e.exports = function (t, e, r, a, o, s) { return ( n.identity(t), n.fromRotationTranslation(t, s, e), (t[3] = o[0]), (t[7] = o[1]), (t[11] = o[2]), (t[15] = o[3]), n.identity(i), 0 !== a[2] && ((i[9] = a[2]), n.multiply(t, t, i)), 0 !== a[1] && ((i[9] = 0), (i[8] = a[1]), n.multiply(t, t, i)), 0 !== a[0] && ((i[8] = 0), (i[4] = a[0]), n.multiply(t, t, i)), n.scale(t, t, r), t ); }; }, { "gl-mat4/create": 93, "gl-mat4/fromRotationTranslation": 96, "gl-mat4/identity": 97, "gl-mat4/multiply": 100, "gl-mat4/scale": 107, "gl-mat4/translate": 108, }, ], 245: [ function (t, e, r) { "use strict"; var n = t("binary-search-bounds"), i = t("mat4-interpolate"), a = t("gl-mat4/invert"), o = t("gl-mat4/rotateX"), s = t("gl-mat4/rotateY"), l = t("gl-mat4/rotateZ"), c = t("gl-mat4/lookAt"), u = t("gl-mat4/translate"), f = (t("gl-mat4/scale"), t("gl-vec3/normalize")), h = [0, 0, 0]; function p(t) { (this._components = t.slice()), (this._time = [0]), (this.prevMatrix = t.slice()), (this.nextMatrix = t.slice()), (this.computedMatrix = t.slice()), (this.computedInverse = t.slice()), (this.computedEye = [0, 0, 0]), (this.computedUp = [0, 0, 0]), (this.computedCenter = [0, 0, 0]), (this.computedRadius = [0]), (this._limits = [-1 / 0, 1 / 0]); } e.exports = function (t) { return new p( (t = t || {}).matrix || [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ], ); }; var d = p.prototype; (d.recalcMatrix = function (t) { var e = this._time, r = n.le(e, t), o = this.computedMatrix; if (!(r < 0)) { var s = this._components; if (r === e.length - 1) for (var l = 16 * r, c = 0; c < 16; ++c) o[c] = s[l++]; else { var u = e[r + 1] - e[r], h = ((l = 16 * r), this.prevMatrix), p = !0; for (c = 0; c < 16; ++c) h[c] = s[l++]; var d = this.nextMatrix; for (c = 0; c < 16; ++c) (d[c] = s[l++]), (p = p && h[c] === d[c]); if (u < 1e-6 || p) for (c = 0; c < 16; ++c) o[c] = h[c]; else i(o, h, d, (t - e[r]) / u); } var m = this.computedUp; (m[0] = o[1]), (m[1] = o[5]), (m[2] = o[9]), f(m, m); var g = this.computedInverse; a(g, o); var v = this.computedEye, y = g[15]; (v[0] = g[12] / y), (v[1] = g[13] / y), (v[2] = g[14] / y); var x = this.computedCenter, b = Math.exp(this.computedRadius[0]); for (c = 0; c < 3; ++c) x[c] = v[c] - o[2 + 4 * c] * b; } }), (d.idle = function (t) { if (!(t < this.lastT())) { for ( var e = this._components, r = e.length - 16, n = 0; n < 16; ++n ) e.push(e[r++]); this._time.push(t); } }), (d.flush = function (t) { var e = n.gt(this._time, t) - 2; e < 0 || (this._time.splice(0, e), this._components.splice(0, 16 * e)); }), (d.lastT = function () { return this._time[this._time.length - 1]; }), (d.lookAt = function (t, e, r, n) { this.recalcMatrix(t), (e = e || this.computedEye), (r = r || h), (n = n || this.computedUp), this.setMatrix( t, c(this.computedMatrix, e, r, n), ); for (var i = 0, a = 0; a < 3; ++a) i += Math.pow(r[a] - e[a], 2); (i = Math.log(Math.sqrt(i))), (this.computedRadius[0] = i); }), (d.rotate = function (t, e, r, n) { this.recalcMatrix(t); var i = this.computedInverse; e && s(i, i, e), r && o(i, i, r), n && l(i, i, n), this.setMatrix( t, a(this.computedMatrix, i), ); }); var m = [0, 0, 0]; (d.pan = function (t, e, r, n) { (m[0] = -(e || 0)), (m[1] = -(r || 0)), (m[2] = -(n || 0)), this.recalcMatrix(t); var i = this.computedInverse; u(i, i, m), this.setMatrix(t, a(i, i)); }), (d.translate = function (t, e, r, n) { (m[0] = e || 0), (m[1] = r || 0), (m[2] = n || 0), this.recalcMatrix(t); var i = this.computedMatrix; u(i, i, m), this.setMatrix(t, i); }), (d.setMatrix = function (t, e) { if (!(t < this.lastT())) { this._time.push(t); for (var r = 0; r < 16; ++r) this._components.push(e[r]); } }), (d.setDistance = function (t, e) { this.computedRadius[0] = e; }), (d.setDistanceLimits = function (t, e) { var r = this._limits; (r[0] = t), (r[1] = e); }), (d.getDistanceLimits = function (t) { var e = this._limits; return t ? ((t[0] = e[0]), (t[1] = e[1]), t) : e; }); }, { "binary-search-bounds": 31, "gl-mat4/invert": 98, "gl-mat4/lookAt": 99, "gl-mat4/rotateX": 104, "gl-mat4/rotateY": 105, "gl-mat4/rotateZ": 106, "gl-mat4/scale": 107, "gl-mat4/translate": 108, "gl-vec3/normalize": 179, "mat4-interpolate": 243, }, ], 246: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = t.length; if (e < 3) { for ( var r = new Array(e), i = 0; i < e; ++i ) r[i] = i; return 2 === e && t[0][0] === t[1][0] && t[0][1] === t[1][1] ? [0] : r; } var a = new Array(e); for (i = 0; i < e; ++i) a[i] = i; a.sort(function (e, r) { var n = t[e][0] - t[r][0]; return n || t[e][1] - t[r][1]; }); var o = [a[0], a[1]], s = [a[0], a[1]]; for (i = 2; i < e; ++i) { for ( var l = a[i], c = t[l], u = o.length; u > 1 && n(t[o[u - 2]], t[o[u - 1]], c) <= 0; ) (u -= 1), o.pop(); for ( o.push(l), u = s.length; u > 1 && n(t[s[u - 2]], t[s[u - 1]], c) >= 0; ) (u -= 1), s.pop(); s.push(l); } r = new Array(s.length + o.length - 2); for ( var f = 0, h = ((i = 0), o.length); i < h; ++i ) r[f++] = o[i]; for (var p = s.length - 2; p > 0; --p) r[f++] = s[p]; return r; }; var n = t("robust-orientation")[3]; }, { "robust-orientation": 284 }, ], 247: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { e || ((e = t), (t = window)); var r = 0, i = 0, a = 0, o = { shift: !1, alt: !1, control: !1, meta: !1, }, s = !1; function l(t) { var e = !1; return ( "altKey" in t && ((e = e || t.altKey !== o.alt), (o.alt = !!t.altKey)), "shiftKey" in t && ((e = e || t.shiftKey !== o.shift), (o.shift = !!t.shiftKey)), "ctrlKey" in t && ((e = e || t.ctrlKey !== o.control), (o.control = !!t.ctrlKey)), "metaKey" in t && ((e = e || t.metaKey !== o.meta), (o.meta = !!t.metaKey)), e ); } function c(t, s) { var c = n.x(s), u = n.y(s); "buttons" in s && (t = 0 | s.buttons), (t !== r || c !== i || u !== a || l(s)) && ((r = 0 | t), (i = c || 0), (a = u || 0), e && e(r, i, a, o)); } function u(t) { c(0, t); } function f() { (r || i || a || o.shift || o.alt || o.meta || o.control) && ((i = a = 0), (r = 0), (o.shift = o.alt = o.control = o.meta = !1), e && e(0, 0, 0, o)); } function h(t) { l(t) && e && e(r, i, a, o); } function p(t) { 0 === n.buttons(t) ? c(0, t) : c(r, t); } function d(t) { c(r | n.buttons(t), t); } function m(t) { c(r & ~n.buttons(t), t); } function g() { s || ((s = !0), t.addEventListener("mousemove", p), t.addEventListener("mousedown", d), t.addEventListener("mouseup", m), t.addEventListener("mouseleave", u), t.addEventListener("mouseenter", u), t.addEventListener("mouseout", u), t.addEventListener("mouseover", u), t.addEventListener("blur", f), t.addEventListener("keyup", h), t.addEventListener("keydown", h), t.addEventListener("keypress", h), t !== window && (window.addEventListener("blur", f), window.addEventListener("keyup", h), window.addEventListener("keydown", h), window.addEventListener( "keypress", h, ))); } g(); var v = { element: t }; return ( Object.defineProperties(v, { enabled: { get: function () { return s; }, set: function (e) { e ? g() : (function () { if (!s) return; (s = !1), t.removeEventListener( "mousemove", p, ), t.removeEventListener( "mousedown", d, ), t.removeEventListener( "mouseup", m, ), t.removeEventListener( "mouseleave", u, ), t.removeEventListener( "mouseenter", u, ), t.removeEventListener( "mouseout", u, ), t.removeEventListener( "mouseover", u, ), t.removeEventListener( "blur", f, ), t.removeEventListener( "keyup", h, ), t.removeEventListener( "keydown", h, ), t.removeEventListener( "keypress", h, ), t !== window && (window.removeEventListener( "blur", f, ), window.removeEventListener( "keyup", h, ), window.removeEventListener( "keydown", h, ), window.removeEventListener( "keypress", h, )); })(); }, enumerable: !0, }, buttons: { get: function () { return r; }, enumerable: !0, }, x: { get: function () { return i; }, enumerable: !0, }, y: { get: function () { return a; }, enumerable: !0, }, mods: { get: function () { return o; }, enumerable: !0, }, }), v ); }; var n = t("mouse-event"); }, { "mouse-event": 249 }, ], 248: [ function (t, e, r) { var n = { left: 0, top: 0 }; e.exports = function (t, e, r) { (e = e || t.currentTarget || t.srcElement), Array.isArray(r) || (r = [0, 0]); var i = t.clientX || 0, a = t.clientY || 0, o = ((s = e), s === window || s === document || s === document.body ? n : s.getBoundingClientRect()); var s; return ( (r[0] = i - o.left), (r[1] = a - o.top), r ); }; }, {}, ], 249: [ function (t, e, r) { "use strict"; function n(t) { return t.target || t.srcElement || window; } (r.buttons = function (t) { if ("object" == typeof t) { if ("buttons" in t) return t.buttons; if ("which" in t) { if (2 === (e = t.which)) return 4; if (3 === e) return 2; if (e > 0) return 1 << (e - 1); } else if ("button" in t) { var e; if (1 === (e = t.button)) return 4; if (2 === e) return 2; if (e >= 0) return 1 << e; } } return 0; }), (r.element = n), (r.x = function (t) { if ("object" == typeof t) { if ("offsetX" in t) return t.offsetX; var e = n(t).getBoundingClientRect(); return t.clientX - e.left; } return 0; }), (r.y = function (t) { if ("object" == typeof t) { if ("offsetY" in t) return t.offsetY; var e = n(t).getBoundingClientRect(); return t.clientY - e.top; } return 0; }); }, {}, ], 250: [ function (t, e, r) { "use strict"; var n = t("to-px"); e.exports = function (t, e, r) { "function" == typeof t && ((r = !!e), (e = t), (t = window)); var i = n("ex", t), a = function (t) { r && t.preventDefault(); var n = t.deltaX || 0, a = t.deltaY || 0, o = t.deltaZ || 0, s = 1; switch (t.deltaMode) { case 1: s = i; break; case 2: s = window.innerHeight; } if ( ((a *= s), (o *= s), (n *= s) || a || o) ) return e(n, a, o, t); }; return t.addEventListener("wheel", a), a; }; }, { "to-px": 304 }, ], 251: [ function (t, e, r) { "use strict"; var n = t("typedarray-pool"); e.exports = function (t) { function e(t) { throw new Error( "ndarray-extract-contour: " + t, ); } "object" != typeof t && e("Must specify arguments"); var r = t.order; Array.isArray(r) || e("Must specify order"); var a = t.arrayArguments || 1; a < 1 && e("Must have at least one array argument"); var o = t.scalarArguments || 0; o < 0 && e("Scalar arg count must be > 0"); "function" != typeof t.vertex && e("Must specify vertex creation function"); "function" != typeof t.cell && e("Must specify cell creation function"); "function" != typeof t.phase && e("Must specify phase function"); for ( var s = t.getters || [], l = new Array(a), c = 0; c < a; ++c ) s.indexOf(c) >= 0 ? (l[c] = !0) : (l[c] = !1); return (function (t, e, r, a, o, s) { var l = [s, o].join(","); return (0, i[l])( t, e, r, n.mallocUint32, n.freeUint32, ); })(t.vertex, t.cell, t.phase, 0, r, l); }; var i = { "false,0,1": function (t, e, r, n, i) { return function (a, o, s, l) { var c, u = 0 | a.shape[0], f = 0 | a.shape[1], h = a.data, p = 0 | a.offset, d = 0 | a.stride[0], m = 0 | a.stride[1], g = p, v = 0 | -d, y = 0, x = 0 | -m, b = 0, _ = (-d - m) | 0, w = 0, T = 0 | d, k = (m - d * u) | 0, A = 0, M = 0, S = 0, E = (2 * u) | 0, L = n(E), C = n(E), P = 0, I = 0, O = -1, z = -1, D = 0, R = 0 | -u, F = 0 | u, B = 0, N = (-u - 1) | 0, j = (u - 1) | 0, U = 0, V = 0, H = 0; for (A = 0; A < u; ++A) (L[P++] = r(h[g], o, s, l)), (g += T); if (((g += k), f > 0)) { if ( ((M = 1), (L[P++] = r(h[g], o, s, l)), (g += T), u > 0) ) for ( A = 1, c = h[g], I = L[P] = r(c, o, s, l), D = L[P + O], B = L[P + R], U = L[P + N], (I === D && I === B && I === U) || ((y = h[g + v]), (b = h[g + x]), (w = h[g + _]), t( A, M, c, y, b, w, I, D, B, U, o, s, l, ), (V = C[P] = S++)), P += 1, g += T, A = 2; A < u; ++A ) (c = h[g]), (I = L[P] = r(c, o, s, l)), (D = L[P + O]), (B = L[P + R]), (U = L[P + N]), (I === D && I === B && I === U) || ((y = h[g + v]), (b = h[g + x]), (w = h[g + _]), t( A, M, c, y, b, w, I, D, B, U, o, s, l, ), (V = C[P] = S++), U !== D && e( C[P + O], V, w, y, U, D, o, s, l, )), (P += 1), (g += T); for ( g += k, P = 0, H = O, O = z, z = H, H = R, R = F, F = H, H = N, N = j, j = H, M = 2; M < f; ++M ) { if ( ((L[P++] = r(h[g], o, s, l)), (g += T), u > 0) ) for ( A = 1, c = h[g], I = L[P] = r(c, o, s, l), D = L[P + O], B = L[P + R], U = L[P + N], (I === D && I === B && I === U) || ((y = h[g + v]), (b = h[g + x]), (w = h[g + _]), t( A, M, c, y, b, w, I, D, B, U, o, s, l, ), (V = C[P] = S++), U !== B && e( C[P + R], V, b, w, B, U, o, s, l, )), P += 1, g += T, A = 2; A < u; ++A ) (c = h[g]), (I = L[P] = r(c, o, s, l)), (D = L[P + O]), (B = L[P + R]), (U = L[P + N]), (I === D && I === B && I === U) || ((y = h[g + v]), (b = h[g + x]), (w = h[g + _]), t( A, M, c, y, b, w, I, D, B, U, o, s, l, ), (V = C[P] = S++), U !== B && e( C[P + R], V, b, w, B, U, o, s, l, ), U !== D && e( C[P + O], V, w, y, U, D, o, s, l, )), (P += 1), (g += T); 1 & M && (P = 0), (H = O), (O = z), (z = H), (H = R), (R = F), (F = H), (H = N), (N = j), (j = H), (g += k); } } i(C), i(L); }; }, "false,1,0": function (t, e, r, n, i) { return function (a, o, s, l) { var c, u = 0 | a.shape[0], f = 0 | a.shape[1], h = a.data, p = 0 | a.offset, d = 0 | a.stride[0], m = 0 | a.stride[1], g = p, v = 0 | -d, y = 0, x = 0 | -m, b = 0, _ = (-d - m) | 0, w = 0, T = 0 | m, k = (d - m * f) | 0, A = 0, M = 0, S = 0, E = (2 * f) | 0, L = n(E), C = n(E), P = 0, I = 0, O = -1, z = -1, D = 0, R = 0 | -f, F = 0 | f, B = 0, N = (-f - 1) | 0, j = (f - 1) | 0, U = 0, V = 0, H = 0; for (M = 0; M < f; ++M) (L[P++] = r(h[g], o, s, l)), (g += T); if (((g += k), u > 0)) { if ( ((A = 1), (L[P++] = r(h[g], o, s, l)), (g += T), f > 0) ) for ( M = 1, c = h[g], I = L[P] = r(c, o, s, l), B = L[P + R], D = L[P + O], U = L[P + N], (I === B && I === D && I === U) || ((y = h[g + v]), (b = h[g + x]), (w = h[g + _]), t( A, M, c, y, b, w, I, B, D, U, o, s, l, ), (V = C[P] = S++)), P += 1, g += T, M = 2; M < f; ++M ) (c = h[g]), (I = L[P] = r(c, o, s, l)), (B = L[P + R]), (D = L[P + O]), (U = L[P + N]), (I === B && I === D && I === U) || ((y = h[g + v]), (b = h[g + x]), (w = h[g + _]), t( A, M, c, y, b, w, I, B, D, U, o, s, l, ), (V = C[P] = S++), U !== D && e( C[P + O], V, b, w, D, U, o, s, l, )), (P += 1), (g += T); for ( g += k, P = 0, H = R, R = F, F = H, H = O, O = z, z = H, H = N, N = j, j = H, A = 2; A < u; ++A ) { if ( ((L[P++] = r(h[g], o, s, l)), (g += T), f > 0) ) for ( M = 1, c = h[g], I = L[P] = r(c, o, s, l), B = L[P + R], D = L[P + O], U = L[P + N], (I === B && I === D && I === U) || ((y = h[g + v]), (b = h[g + x]), (w = h[g + _]), t( A, M, c, y, b, w, I, B, D, U, o, s, l, ), (V = C[P] = S++), U !== B && e( C[P + R], V, w, y, U, B, o, s, l, )), P += 1, g += T, M = 2; M < f; ++M ) (c = h[g]), (I = L[P] = r(c, o, s, l)), (B = L[P + R]), (D = L[P + O]), (U = L[P + N]), (I === B && I === D && I === U) || ((y = h[g + v]), (b = h[g + x]), (w = h[g + _]), t( A, M, c, y, b, w, I, B, D, U, o, s, l, ), (V = C[P] = S++), U !== D && e( C[P + O], V, b, w, D, U, o, s, l, ), U !== B && e( C[P + R], V, w, y, U, B, o, s, l, )), (P += 1), (g += T); 1 & A && (P = 0), (H = R), (R = F), (F = H), (H = O), (O = z), (z = H), (H = N), (N = j), (j = H), (g += k); } } i(C), i(L); }; }, }; }, { "typedarray-pool": 308 }, ], 252: [ function (t, e, r) { "use strict"; var n = t("dup"), i = { zero: function (t, e, r, n) { var i = t[0]; n |= 0; var a = 0, o = r[0]; for (a = 0; a < i; ++a) (e[n] = 0), (n += o); }, fdTemplate1: function ( t, e, r, n, i, a, o, ) { var s = t[0], l = r[0], c = -1 * l, u = l; (n |= 0), (o |= 0); var f = 0, h = l, p = a[0]; for (f = 0; f < s; ++f) (i[o] = 0.5 * (e[n + c] - e[n + u])), (n += h), (o += p); }, fdTemplate2: function ( t, e, r, n, i, a, o, s, l, c, ) { var u = t[0], f = t[1], h = r[0], p = r[1], d = a[0], m = a[1], g = l[0], v = l[1], y = -1 * h, x = h, b = -1 * p, _ = p; (n |= 0), (o |= 0), (c |= 0); var w = 0, T = 0, k = p, A = h - f * p, M = m, S = d - f * m, E = v, L = g - f * v; for (T = 0; T < u; ++T) { for (w = 0; w < f; ++w) (i[o] = 0.5 * (e[n + y] - e[n + x])), (s[c] = 0.5 * (e[n + b] - e[n + _])), (n += k), (o += M), (c += E); (n += A), (o += S), (c += L); } }, }, a = { cdiff: function (t) { var e = {}; return function (r, n, i) { var a = r.dtype, o = r.order, s = n.dtype, l = n.order, c = i.dtype, u = i.order, f = [ a, o.join(), s, l.join(), c, u.join(), ].join(), h = e[f]; return ( h || (e[f] = h = t([a, o, s, l, c, u])), h( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n.data, n.stride, 0 | n.offset, i.data, i.stride, 0 | i.offset, ) ); }; }, zero: function (t) { var e = {}; return function (r) { var n = r.dtype, i = r.order, a = [n, i.join()].join(), o = e[a]; return ( o || (e[a] = o = t([n, i])), o( r.shape.slice(0), r.data, r.stride, 0 | r.offset, ) ); }; }, fdTemplate1: function (t) { var e = {}; return function (r, n) { var i = r.dtype, a = r.order, o = n.dtype, s = n.order, l = [i, a.join(), o, s.join()].join(), c = e[l]; return ( c || (e[l] = c = t([i, a, o, s])), c( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n.data, n.stride, 0 | n.offset, ) ); }; }, fdTemplate2: function (t) { var e = {}; return function (r, n, i) { var a = r.dtype, o = r.order, s = n.dtype, l = n.order, c = i.dtype, u = i.order, f = [ a, o.join(), s, l.join(), c, u.join(), ].join(), h = e[f]; return ( h || (e[f] = h = t([a, o, s, l, c, u])), h( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n.data, n.stride, 0 | n.offset, i.data, i.stride, 0 | i.offset, ) ); }; }, }; function o(t) { return (0, a[t.funcName])(s.bind(void 0, t)); } function s(t) { return i[t.funcName]; } function l(t) { return o({ funcName: t.funcName }); } var c = {}, u = {}, f = l({ funcName: "cdiff" }), h = l({ funcName: "zero" }); function p(t) { return t in c ? c[t] : (c[t] = l({ funcName: "fdTemplate" + t, })); } function d(t, e, r, n) { return function (t, i) { var a = i.shape.slice(); return ( a[0] > 2 && a[1] > 2 && n( i .pick(-1, -1) .lo(1, 1) .hi(a[0] - 2, a[1] - 2), t .pick(-1, -1, 0) .lo(1, 1) .hi(a[0] - 2, a[1] - 2), t .pick(-1, -1, 1) .lo(1, 1) .hi(a[0] - 2, a[1] - 2), ), a[1] > 2 && (r( i .pick(0, -1) .lo(1) .hi(a[1] - 2), t .pick(0, -1, 1) .lo(1) .hi(a[1] - 2), ), e( t .pick(0, -1, 0) .lo(1) .hi(a[1] - 2), )), a[1] > 2 && (r( i .pick(a[0] - 1, -1) .lo(1) .hi(a[1] - 2), t .pick(a[0] - 1, -1, 1) .lo(1) .hi(a[1] - 2), ), e( t .pick(a[0] - 1, -1, 0) .lo(1) .hi(a[1] - 2), )), a[0] > 2 && (r( i .pick(-1, 0) .lo(1) .hi(a[0] - 2), t .pick(-1, 0, 0) .lo(1) .hi(a[0] - 2), ), e( t .pick(-1, 0, 1) .lo(1) .hi(a[0] - 2), )), a[0] > 2 && (r( i .pick(-1, a[1] - 1) .lo(1) .hi(a[0] - 2), t .pick(-1, a[1] - 1, 0) .lo(1) .hi(a[0] - 2), ), e( t .pick(-1, a[1] - 1, 1) .lo(1) .hi(a[0] - 2), )), t.set(0, 0, 0, 0), t.set(0, 0, 1, 0), t.set(a[0] - 1, 0, 0, 0), t.set(a[0] - 1, 0, 1, 0), t.set(0, a[1] - 1, 0, 0), t.set(0, a[1] - 1, 1, 0), t.set(a[0] - 1, a[1] - 1, 0, 0), t.set(a[0] - 1, a[1] - 1, 1, 0), t ); }; } e.exports = function (t, e, r) { return ( Array.isArray(r) || (r = n( e.dimension, "string" == typeof r ? r : "clamp", )), 0 === e.size ? t : 0 === e.dimension ? (t.set(0), t) : (function (t) { var e = t.join(); if ((a = u[e])) return a; for ( var r = t.length, n = [f, h], i = 1; i <= r; ++i ) n.push(p(i)); var a = d.apply(void 0, n); return (u[e] = a), a; })(r)(t, e) ); }; }, { dup: 65 }, ], 253: [ function (t, e, r) { "use strict"; function n(t, e) { var r = Math.floor(e), n = e - r, i = 0 <= r && r < t.shape[0], a = 0 <= r + 1 && r + 1 < t.shape[0]; return ( (1 - n) * (i ? +t.get(r) : 0) + n * (a ? +t.get(r + 1) : 0) ); } function i(t, e, r) { var n = Math.floor(e), i = e - n, a = 0 <= n && n < t.shape[0], o = 0 <= n + 1 && n + 1 < t.shape[0], s = Math.floor(r), l = r - s, c = 0 <= s && s < t.shape[1], u = 0 <= s + 1 && s + 1 < t.shape[1], f = a && c ? t.get(n, s) : 0, h = a && u ? t.get(n, s + 1) : 0; return ( (1 - l) * ((1 - i) * f + i * (o && c ? t.get(n + 1, s) : 0)) + l * ((1 - i) * h + i * (o && u ? t.get(n + 1, s + 1) : 0)) ); } function a(t, e, r, n) { var i = Math.floor(e), a = e - i, o = 0 <= i && i < t.shape[0], s = 0 <= i + 1 && i + 1 < t.shape[0], l = Math.floor(r), c = r - l, u = 0 <= l && l < t.shape[1], f = 0 <= l + 1 && l + 1 < t.shape[1], h = Math.floor(n), p = n - h, d = 0 <= h && h < t.shape[2], m = 0 <= h + 1 && h + 1 < t.shape[2], g = o && u && d ? t.get(i, l, h) : 0, v = o && f && d ? t.get(i, l + 1, h) : 0, y = s && u && d ? t.get(i + 1, l, h) : 0, x = s && f && d ? t.get(i + 1, l + 1, h) : 0, b = o && u && m ? t.get(i, l, h + 1) : 0, _ = o && f && m ? t.get(i, l + 1, h + 1) : 0; return ( (1 - p) * ((1 - c) * ((1 - a) * g + a * y) + c * ((1 - a) * v + a * x)) + p * ((1 - c) * ((1 - a) * b + a * (s && u && m ? t.get(i + 1, l, h + 1) : 0)) + c * ((1 - a) * _ + a * (s && f && m ? t.get(i + 1, l + 1, h + 1) : 0))) ); } function o(t) { var e, r, n = 0 | t.shape.length, i = new Array(n), a = new Array(n), o = new Array(n), s = new Array(n); for (e = 0; e < n; ++e) (r = +arguments[e + 1]), (i[e] = Math.floor(r)), (a[e] = r - i[e]), (o[e] = 0 <= i[e] && i[e] < t.shape[e]), (s[e] = 0 <= i[e] + 1 && i[e] + 1 < t.shape[e]); var l, c, u, f = 0; t: for (e = 0; e < 1 << n; ++e) { for (c = 1, u = t.offset, l = 0; l < n; ++l) if (e & (1 << l)) { if (!s[l]) continue t; (c *= a[l]), (u += t.stride[l] * (i[l] + 1)); } else { if (!o[l]) continue t; (c *= 1 - a[l]), (u += t.stride[l] * i[l]); } f += c * t.data[u]; } return f; } (e.exports = function (t, e, r, s) { switch (t.shape.length) { case 0: return 0; case 1: return n(t, e); case 2: return i(t, e, r); case 3: return a(t, e, r, s); default: return o.apply(void 0, arguments); } }), (e.exports.d1 = n), (e.exports.d2 = i), (e.exports.d3 = a); }, {}, ], 254: [ function (t, e, r) { "use strict"; var n = { "float64,2,1,0": function () { return function (t, e, r, n, i) { var a = t[0], o = t[1], s = t[2], l = r[0], c = r[1], u = r[2]; n |= 0; var f = 0, h = 0, p = 0, d = u, m = c - s * u, g = l - o * c; for (p = 0; p < a; ++p) { for (h = 0; h < o; ++h) { for (f = 0; f < s; ++f) (e[n] /= i), (n += d); n += m; } n += g; } }; }, "uint8,2,0,1,float64,2,1,0": function () { return function (t, e, r, n, i, a, o, s) { for ( var l = t[0], c = t[1], u = t[2], f = r[0], h = r[1], p = r[2], d = a[0], m = a[1], g = a[2], v = (n |= 0), y = (o |= 0), x = 0 | t[0]; x > 0; ) { x < 64 ? ((l = x), (x = 0)) : ((l = 64), (x -= 64)); for (var b = 0 | t[1]; b > 0; ) { b < 64 ? ((c = b), (b = 0)) : ((c = 64), (b -= 64)), (n = v + x * f + b * h), (o = y + x * d + b * m); var _ = 0, w = 0, T = 0, k = p, A = f - u * p, M = h - l * f, S = g, E = d - u * g, L = m - l * d; for (T = 0; T < c; ++T) { for (w = 0; w < l; ++w) { for (_ = 0; _ < u; ++_) (e[n] = i[o] * s), (n += k), (o += S); (n += A), (o += E); } (n += M), (o += L); } } } }; }, "float32,1,0,float32,1,0": function () { return function (t, e, r, n, i, a, o) { var s = t[0], l = t[1], c = r[0], u = r[1], f = a[0], h = a[1]; (n |= 0), (o |= 0); var p = 0, d = 0, m = u, g = c - l * u, v = h, y = f - l * h; for (d = 0; d < s; ++d) { for (p = 0; p < l; ++p) (e[n] = i[o]), (n += m), (o += v); (n += g), (o += y); } }; }, "float32,1,0,float32,0,1": function () { return function (t, e, r, n, i, a, o) { for ( var s = t[0], l = t[1], c = r[0], u = r[1], f = a[0], h = a[1], p = (n |= 0), d = (o |= 0), m = 0 | t[1]; m > 0; ) { m < 64 ? ((l = m), (m = 0)) : ((l = 64), (m -= 64)); for (var g = 0 | t[0]; g > 0; ) { g < 64 ? ((s = g), (g = 0)) : ((s = 64), (g -= 64)), (n = p + m * u + g * c), (o = d + m * h + g * f); var v = 0, y = 0, x = u, b = c - l * u, _ = h, w = f - l * h; for (y = 0; y < s; ++y) { for (v = 0; v < l; ++v) (e[n] = i[o]), (n += x), (o += _); (n += b), (o += w); } } } }; }, "uint8,2,0,1,uint8,1,2,0": function () { return function (t, e, r, n, i, a, o) { for ( var s = t[0], l = t[1], c = t[2], u = r[0], f = r[1], h = r[2], p = a[0], d = a[1], m = a[2], g = (n |= 0), v = (o |= 0), y = 0 | t[2]; y > 0; ) { y < 64 ? ((c = y), (y = 0)) : ((c = 64), (y -= 64)); for (var x = 0 | t[0]; x > 0; ) { x < 64 ? ((s = x), (x = 0)) : ((s = 64), (x -= 64)); for (var b = 0 | t[1]; b > 0; ) { b < 64 ? ((l = b), (b = 0)) : ((l = 64), (b -= 64)), (n = g + y * h + x * u + b * f), (o = v + y * m + x * p + b * d); var _ = 0, w = 0, T = 0, k = h, A = u - c * h, M = f - s * u, S = m, E = p - c * m, L = d - s * p; for (T = 0; T < l; ++T) { for (w = 0; w < s; ++w) { for (_ = 0; _ < c; ++_) (e[n] = i[o]), (n += k), (o += S); (n += A), (o += E); } (n += M), (o += L); } } } } }; }, "uint8,2,0,1,array,2,0,1": function () { return function (t, e, r, n, i, a, o) { var s = t[0], l = t[1], c = t[2], u = r[0], f = r[1], h = r[2], p = a[0], d = a[1], m = a[2]; (n |= 0), (o |= 0); var g = 0, v = 0, y = 0, x = h, b = u - c * h, _ = f - s * u, w = m, T = p - c * m, k = d - s * p; for (y = 0; y < l; ++y) { for (v = 0; v < s; ++v) { for (g = 0; g < c; ++g) (e[n] = i[o]), (n += x), (o += w); (n += b), (o += T); } (n += _), (o += k); } }; }, }; var i = function (t, e) { var r = e.join(","); return (0, n[r])(); }, a = { mul: function (t) { var e = {}; return function (r, n, i) { var a = r.dtype, o = r.order, s = n.dtype, l = n.order, c = i.dtype, u = i.order, f = [ a, o.join(), s, l.join(), c, u.join(), ].join(), h = e[f]; return ( h || (e[f] = h = t([a, o, s, l, c, u])), h( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n.data, n.stride, 0 | n.offset, i.data, i.stride, 0 | i.offset, ) ); }; }, muls: function (t) { var e = {}; return function (r, n, i) { var a = r.dtype, o = r.order, s = n.dtype, l = n.order, c = [a, o.join(), s, l.join()].join(), u = e[c]; return ( u || (e[c] = u = t([a, o, s, l])), u( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n.data, n.stride, 0 | n.offset, i, ) ); }; }, mulseq: function (t) { var e = {}; return function (r, n) { var i = r.dtype, a = r.order, o = [i, a.join()].join(), s = e[o]; return ( s || (e[o] = s = t([i, a])), s( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n, ) ); }; }, div: function (t) { var e = {}; return function (r, n, i) { var a = r.dtype, o = r.order, s = n.dtype, l = n.order, c = i.dtype, u = i.order, f = [ a, o.join(), s, l.join(), c, u.join(), ].join(), h = e[f]; return ( h || (e[f] = h = t([a, o, s, l, c, u])), h( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n.data, n.stride, 0 | n.offset, i.data, i.stride, 0 | i.offset, ) ); }; }, divs: function (t) { var e = {}; return function (r, n, i) { var a = r.dtype, o = r.order, s = n.dtype, l = n.order, c = [a, o.join(), s, l.join()].join(), u = e[c]; return ( u || (e[c] = u = t([a, o, s, l])), u( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n.data, n.stride, 0 | n.offset, i, ) ); }; }, divseq: function (t) { var e = {}; return function (r, n) { var i = r.dtype, a = r.order, o = [i, a.join()].join(), s = e[o]; return ( s || (e[o] = s = t([i, a])), s( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n, ) ); }; }, assign: function (t) { var e = {}; return function (r, n) { var i = r.dtype, a = r.order, o = n.dtype, s = n.order, l = [i, a.join(), o, s.join()].join(), c = e[l]; return ( c || (e[l] = c = t([i, a, o, s])), c( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n.data, n.stride, 0 | n.offset, ) ); }; }, }; function o(t) { return ( (e = { funcName: t.funcName }), (0, a[e.funcName])(i.bind(void 0, e)) ); var e; } var s = { mul: "*", div: "/" }; !(function () { for (var t in s) (r[t] = o({ funcName: t })), (r[t + "s"] = o({ funcName: t + "s" })), (r[t + "seq"] = o({ funcName: t + "seq", })); })(), (r.assign = o({ funcName: "assign" })); }, {}, ], 255: [ function (t, e, r) { "use strict"; var n = t("ndarray"), i = t("./doConvert.js"); e.exports = function (t, e) { for ( var r = [], a = t, o = 1; Array.isArray(a); ) r.push(a.length), (o *= a.length), (a = a[0]); return 0 === r.length ? n() : (e || (e = n(new Float64Array(o), r)), i(e, t), e); }; }, { "./doConvert.js": 256, ndarray: 259 }, ], 256: [ function (t, e, r) { "use strict"; var n, i = function () { return function (t, e, r, n, i) { var a = t[0], o = t[1], s = t[2], l = r[0], c = r[1], u = r[2], f = [0, 0, 0]; n |= 0; var h = 0, p = 0, d = 0, m = u, g = c - s * u, v = l - o * c; for (d = 0; d < a; ++d) { for (p = 0; p < o; ++p) { for (h = 0; h < s; ++h) { var y, x = i; for (y = 0; y < f.length - 1; ++y) x = x[f[y]]; (e[n] = x[f[f.length - 1]]), (n += m), ++f[2]; } (n += g), (f[2] -= s), ++f[1]; } (n += v), (f[1] -= o), ++f[0]; } }; }; e.exports = ((n = { funcName: { funcName: "convert" }.funcName, }), (function (t) { var e = {}; return function (r, n) { var i = r.dtype, a = r.order, o = [i, a.join()].join(), s = e[o]; return ( s || (e[o] = s = t([i, a])), s( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n, ) ); }; })(i.bind(void 0, n))); }, {}, ], 257: [ function (t, e, r) { "use strict"; var n = t("typedarray-pool"); function i(t) { switch (t) { case "uint32": return [n.mallocUint32, n.freeUint32]; default: return null; } } var a = { "uint32,1,0": function (t, e) { return function ( r, n, i, a, o, s, l, c, u, f, h, ) { var p, d, m, g, v, y, x, b, _ = r * o + a, w = t(c); for (p = r + 1; p <= n; ++p) { for ( d = p, m = _ += o, v = 0, y = _, g = 0; g < c; ++g ) (w[v++] = i[y]), (y += u); t: for (; d-- > r; ) { (v = 0), (y = m - o); e: for (g = 0; g < c; ++g) { if ((x = i[y]) < (b = w[v])) break t; if (x > b) break e; (y += f), (v += h); } for ( v = m, y = m - o, g = 0; g < c; ++g ) (i[v] = i[y]), (v += u), (y += u); m -= o; } for (v = m, y = 0, g = 0; g < c; ++g) (i[v] = w[y++]), (v += u); } e(w); }; }, }; var o = { "uint32,1,0": function (t, e, r) { return function n( i, a, o, s, l, c, u, f, h, p, d, ) { var m, g, v, y, x, b, _, w, T, k, A, M, S, E, L, C, P, I, O, z, D, R, F, B, N, j = ((a - i + 1) / 6) | 0, U = i + j, V = a - j, H = (i + a) >> 1, q = H - j, G = H + j, Y = U, W = q, Z = H, X = G, J = V, K = i + 1, Q = a - 1, $ = !0, tt = 0, et = 0, rt = 0, nt = f, it = e(nt), at = e(nt); (A = l * Y), (M = l * W), (N = s); t: for (k = 0; k < f; ++k) { if ( ((w = M + N), (rt = o[(_ = A + N)] - o[w]) > 0) ) { (g = Y), (Y = W), (W = g); break t; } if (rt < 0) break t; N += p; } (A = l * X), (M = l * J), (N = s); t: for (k = 0; k < f; ++k) { if ( ((w = M + N), (rt = o[(_ = A + N)] - o[w]) > 0) ) { (g = X), (X = J), (J = g); break t; } if (rt < 0) break t; N += p; } (A = l * Y), (M = l * Z), (N = s); t: for (k = 0; k < f; ++k) { if ( ((w = M + N), (rt = o[(_ = A + N)] - o[w]) > 0) ) { (g = Y), (Y = Z), (Z = g); break t; } if (rt < 0) break t; N += p; } (A = l * W), (M = l * Z), (N = s); t: for (k = 0; k < f; ++k) { if ( ((w = M + N), (rt = o[(_ = A + N)] - o[w]) > 0) ) { (g = W), (W = Z), (Z = g); break t; } if (rt < 0) break t; N += p; } (A = l * Y), (M = l * X), (N = s); t: for (k = 0; k < f; ++k) { if ( ((w = M + N), (rt = o[(_ = A + N)] - o[w]) > 0) ) { (g = Y), (Y = X), (X = g); break t; } if (rt < 0) break t; N += p; } (A = l * Z), (M = l * X), (N = s); t: for (k = 0; k < f; ++k) { if ( ((w = M + N), (rt = o[(_ = A + N)] - o[w]) > 0) ) { (g = Z), (Z = X), (X = g); break t; } if (rt < 0) break t; N += p; } (A = l * W), (M = l * J), (N = s); t: for (k = 0; k < f; ++k) { if ( ((w = M + N), (rt = o[(_ = A + N)] - o[w]) > 0) ) { (g = W), (W = J), (J = g); break t; } if (rt < 0) break t; N += p; } (A = l * W), (M = l * Z), (N = s); t: for (k = 0; k < f; ++k) { if ( ((w = M + N), (rt = o[(_ = A + N)] - o[w]) > 0) ) { (g = W), (W = Z), (Z = g); break t; } if (rt < 0) break t; N += p; } (A = l * X), (M = l * J), (N = s); t: for (k = 0; k < f; ++k) { if ( ((w = M + N), (rt = o[(_ = A + N)] - o[w]) > 0) ) { (g = X), (X = J), (J = g); break t; } if (rt < 0) break t; N += p; } for ( A = l * Y, M = l * W, S = l * Z, E = l * X, L = l * J, C = l * U, P = l * H, I = l * V, B = 0, N = s, k = 0; k < f; ++k ) (_ = A + N), (w = M + N), (T = S + N), (O = E + N), (z = L + N), (D = C + N), (R = P + N), (F = I + N), (it[B] = o[w]), (at[B] = o[O]), ($ = $ && it[B] === at[B]), (v = o[_]), (y = o[T]), (x = o[z]), (o[D] = v), (o[R] = y), (o[F] = x), ++B, (N += h); for ( A = l * q, M = l * i, N = s, k = 0; k < f; ++k ) (w = M + N), (o[(_ = A + N)] = o[w]), (N += h); for ( A = l * G, M = l * a, N = s, k = 0; k < f; ++k ) (w = M + N), (o[(_ = A + N)] = o[w]), (N += h); if ($) for (b = K; b <= Q; ++b) { (_ = s + b * l), (B = 0); t: for ( k = 0; k < f && 0 === (rt = o[_] - it[B]); ++k ) (B += d), (_ += p); if (0 !== rt) if (rt < 0) { if (b !== K) for ( A = l * b, M = l * K, N = s, k = 0; k < f; ++k ) (w = M + N), (m = o[(_ = A + N)]), (o[_] = o[w]), (o[w] = m), (N += h); ++K; } else for (;;) { (_ = s + Q * l), (B = 0); t: for ( k = 0; k < f && 0 === (rt = o[_] - it[B]); ++k ) (B += d), (_ += p); if (!(rt > 0)) { if (rt < 0) { for ( A = l * b, M = l * K, S = l * Q, N = s, k = 0; k < f; ++k ) (w = M + N), (T = S + N), (m = o[(_ = A + N)]), (o[_] = o[w]), (o[w] = o[T]), (o[T] = m), (N += h); ++K, --Q; break; } for ( A = l * b, M = l * Q, N = s, k = 0; k < f; ++k ) (w = M + N), (m = o[(_ = A + N)]), (o[_] = o[w]), (o[w] = m), (N += h); --Q; break; } Q--; } } else for (b = K; b <= Q; ++b) { (_ = s + b * l), (B = 0); t: for ( k = 0; k < f && 0 === (tt = o[_] - it[B]); ++k ) (B += d), (_ += p); if (tt < 0) { if (b !== K) for ( A = l * b, M = l * K, N = s, k = 0; k < f; ++k ) (w = M + N), (m = o[(_ = A + N)]), (o[_] = o[w]), (o[w] = m), (N += h); ++K; } else { (_ = s + b * l), (B = 0); t: for ( k = 0; k < f && 0 === (et = o[_] - at[B]); ++k ) (B += d), (_ += p); if (et > 0) for (;;) { (_ = s + Q * l), (B = 0); t: for ( k = 0; k < f && 0 === (rt = o[_] - at[B]); ++k ) (B += d), (_ += p); if (!(rt > 0)) { (_ = s + Q * l), (B = 0); t: for ( k = 0; k < f && 0 === (rt = o[_] - it[B]); ++k ) (B += d), (_ += p); if (rt < 0) { for ( A = l * b, M = l * K, S = l * Q, N = s, k = 0; k < f; ++k ) (w = M + N), (T = S + N), (m = o[(_ = A + N)]), (o[_] = o[w]), (o[w] = o[T]), (o[T] = m), (N += h); ++K, --Q; } else { for ( A = l * b, M = l * Q, N = s, k = 0; k < f; ++k ) (w = M + N), (m = o[(_ = A + N)]), (o[_] = o[w]), (o[w] = m), (N += h); --Q; } break; } if (--Q < b) break; } } } for ( A = l * i, M = l * (K - 1), B = 0, N = s, k = 0; k < f; ++k ) (w = M + N), (o[(_ = A + N)] = o[w]), (o[w] = it[B]), ++B, (N += h); for ( A = l * a, M = l * (Q + 1), B = 0, N = s, k = 0; k < f; ++k ) (w = M + N), (o[(_ = A + N)] = o[w]), (o[w] = at[B]), ++B, (N += h); if ( (K - 2 - i <= 32 ? t( i, K - 2, o, s, l, c, u, f, h, p, d, ) : n( i, K - 2, o, s, l, c, u, f, h, p, d, ), a - (Q + 2) <= 32 ? t( Q + 2, a, o, s, l, c, u, f, h, p, d, ) : n( Q + 2, a, o, s, l, c, u, f, h, p, d, ), $) ) return r(it), void r(at); if (K < U && Q > V) { t: for (;;) { for ( _ = s + K * l, B = 0, N = s, k = 0; k < f; ++k ) { if (o[_] !== it[B]) break t; ++B, (_ += h); } ++K; } t: for (;;) { for ( _ = s + Q * l, B = 0, N = s, k = 0; k < f; ++k ) { if (o[_] !== at[B]) break t; ++B, (_ += h); } --Q; } for (b = K; b <= Q; ++b) { (_ = s + b * l), (B = 0); t: for ( k = 0; k < f && 0 === (tt = o[_] - it[B]); ++k ) (B += d), (_ += p); if (0 === tt) { if (b !== K) for ( A = l * b, M = l * K, N = s, k = 0; k < f; ++k ) (w = M + N), (m = o[(_ = A + N)]), (o[_] = o[w]), (o[w] = m), (N += h); ++K; } else { (_ = s + b * l), (B = 0); t: for ( k = 0; k < f && 0 === (et = o[_] - at[B]); ++k ) (B += d), (_ += p); if (0 === et) for (;;) { (_ = s + Q * l), (B = 0); t: for ( k = 0; k < f && 0 === (rt = o[_] - at[B]); ++k ) (B += d), (_ += p); if (0 !== rt) { (_ = s + Q * l), (B = 0); t: for ( k = 0; k < f && 0 === (rt = o[_] - it[B]); ++k ) (B += d), (_ += p); if (rt < 0) { for ( A = l * b, M = l * K, S = l * Q, N = s, k = 0; k < f; ++k ) (w = M + N), (T = S + N), (m = o[(_ = A + N)]), (o[_] = o[w]), (o[w] = o[T]), (o[T] = m), (N += h); ++K, --Q; } else { for ( A = l * b, M = l * Q, N = s, k = 0; k < f; ++k ) (w = M + N), (m = o[(_ = A + N)]), (o[_] = o[w]), (o[w] = m), (N += h); --Q; } break; } if (--Q < b) break; } } } } r(it), r(at), Q - K <= 32 ? t(K, Q, o, s, l, c, u, f, h, p, d) : n(K, Q, o, s, l, c, u, f, h, p, d); }; }, }; var s = { "uint32,1,0": function (t, e) { return function (r) { var n = r.data, i = 0 | r.offset, a = r.shape, o = r.stride, s = 0 | o[0], l = 0 | a[0], c = 0 | o[1], u = 0 | a[1], f = c, h = c; l <= 32 ? t(0, l - 1, n, i, s, c, l, u, f, h, 1) : e( 0, l - 1, n, i, s, c, l, u, f, h, 1, ); }; }, }; e.exports = function (t, e) { var r = [e, t].join(","), n = s[r], l = (function (t, e) { var r = i(e), n = [e, t].join(","), o = a[n]; return r ? o(r[0], r[1]) : o(); })(t, e), c = (function (t, e, r) { var n = i(e), a = [e, t].join(","), s = o[a]; return t.length > 1 && n ? s(r, n[0], n[1]) : s(r); })(t, e, l); return n(l, c); }; }, { "typedarray-pool": 308 }, ], 258: [ function (t, e, r) { "use strict"; var n = t("./lib/compile_sort.js"), i = {}; e.exports = function (t) { var e = t.order, r = t.dtype, a = [e, r].join(":"), o = i[a]; return o || (i[a] = o = n(e, r)), o(t), t; }; }, { "./lib/compile_sort.js": 257 }, ], 259: [ function (t, e, r) { var n = t("is-buffer"), i = "undefined" != typeof Float64Array; function a(t, e) { return t[0] - e[0]; } function o() { var t, e = this.stride, r = new Array(e.length); for (t = 0; t < r.length; ++t) r[t] = [Math.abs(e[t]), t]; r.sort(a); var n = new Array(r.length); for (t = 0; t < n.length; ++t) n[t] = r[t][1]; return n; } var s = { T: function (t) { function e(t) { this.data = t; } var r = e.prototype; return ( (r.dtype = t), (r.index = function () { return -1; }), (r.size = 0), (r.dimension = -1), (r.shape = r.stride = r.order = []), (r.lo = r.hi = r.transpose = r.step = function () { return new e(this.data); }), (r.get = r.set = function () {}), (r.pick = function () { return null; }), function (t) { return new e(t); } ); }, 0: function (t, e) { function r(t, e) { (this.data = t), (this.offset = e); } var n = r.prototype; return ( (n.dtype = t), (n.index = function () { return this.offset; }), (n.dimension = 0), (n.size = 1), (n.shape = n.stride = n.order = []), (n.lo = n.hi = n.transpose = n.step = function () { return new r( this.data, this.offset, ); }), (n.pick = function () { return e(this.data); }), (n.valueOf = n.get = function () { return "generic" === t ? this.data.get(this.offset) : this.data[this.offset]; }), (n.set = function (e) { return "generic" === t ? this.data.set(this.offset, e) : (this.data[this.offset] = e); }), function (t, e, n, i) { return new r(t, i); } ); }, 1: function (t, e, r) { function n(t, e, r, n) { (this.data = t), (this.shape = [e]), (this.stride = [r]), (this.offset = 0 | n); } var i = n.prototype; return ( (i.dtype = t), (i.dimension = 1), Object.defineProperty(i, "size", { get: function () { return this.shape[0]; }, }), (i.order = [0]), (i.set = function (e, r) { return "generic" === t ? this.data.set( this.offset + this.stride[0] * e, r, ) : (this.data[ this.offset + this.stride[0] * e ] = r); }), (i.get = function (e) { return "generic" === t ? this.data.get( this.offset + this.stride[0] * e, ) : this.data[ this.offset + this.stride[0] * e ]; }), (i.index = function (t) { return this.offset + this.stride[0] * t; }), (i.hi = function (t) { return new n( this.data, "number" != typeof t || t < 0 ? this.shape[0] : 0 | t, this.stride[0], this.offset, ); }), (i.lo = function (t) { var e = this.offset, r = 0, i = this.shape[0], a = this.stride[0]; return ( "number" == typeof t && t >= 0 && ((e += a * (r = 0 | t)), (i -= r)), new n(this.data, i, a, e) ); }), (i.step = function (t) { var e = this.shape[0], r = this.stride[0], i = this.offset, a = 0, o = Math.ceil; return ( "number" == typeof t && ((a = 0 | t) < 0 ? ((i += r * (e - 1)), (e = o(-e / a))) : (e = o(e / a)), (r *= a)), new n(this.data, e, r, i) ); }), (i.transpose = function (t) { t = void 0 === t ? 0 : 0 | t; var e = this.shape, r = this.stride; return new n( this.data, e[t], r[t], this.offset, ); }), (i.pick = function (t) { var r = [], n = [], i = this.offset; return ( "number" == typeof t && t >= 0 ? (i = (i + this.stride[0] * t) | 0) : (r.push(this.shape[0]), n.push(this.stride[0])), (0, e[r.length + 1])( this.data, r, n, i, ) ); }), function (t, e, r, i) { return new n(t, e[0], r[0], i); } ); }, 2: function (t, e, r) { function n(t, e, r, n, i, a) { (this.data = t), (this.shape = [e, r]), (this.stride = [n, i]), (this.offset = 0 | a); } var i = n.prototype; return ( (i.dtype = t), (i.dimension = 2), Object.defineProperty(i, "size", { get: function () { return this.shape[0] * this.shape[1]; }, }), Object.defineProperty(i, "order", { get: function () { return Math.abs(this.stride[0]) > Math.abs(this.stride[1]) ? [1, 0] : [0, 1]; }, }), (i.set = function (e, r, n) { return "generic" === t ? this.data.set( this.offset + this.stride[0] * e + this.stride[1] * r, n, ) : (this.data[ this.offset + this.stride[0] * e + this.stride[1] * r ] = n); }), (i.get = function (e, r) { return "generic" === t ? this.data.get( this.offset + this.stride[0] * e + this.stride[1] * r, ) : this.data[ this.offset + this.stride[0] * e + this.stride[1] * r ]; }), (i.index = function (t, e) { return ( this.offset + this.stride[0] * t + this.stride[1] * e ); }), (i.hi = function (t, e) { return new n( this.data, "number" != typeof t || t < 0 ? this.shape[0] : 0 | t, "number" != typeof e || e < 0 ? this.shape[1] : 0 | e, this.stride[0], this.stride[1], this.offset, ); }), (i.lo = function (t, e) { var r = this.offset, i = 0, a = this.shape[0], o = this.shape[1], s = this.stride[0], l = this.stride[1]; return ( "number" == typeof t && t >= 0 && ((r += s * (i = 0 | t)), (a -= i)), "number" == typeof e && e >= 0 && ((r += l * (i = 0 | e)), (o -= i)), new n(this.data, a, o, s, l, r) ); }), (i.step = function (t, e) { var r = this.shape[0], i = this.shape[1], a = this.stride[0], o = this.stride[1], s = this.offset, l = 0, c = Math.ceil; return ( "number" == typeof t && ((l = 0 | t) < 0 ? ((s += a * (r - 1)), (r = c(-r / l))) : (r = c(r / l)), (a *= l)), "number" == typeof e && ((l = 0 | e) < 0 ? ((s += o * (i - 1)), (i = c(-i / l))) : (i = c(i / l)), (o *= l)), new n(this.data, r, i, a, o, s) ); }), (i.transpose = function (t, e) { (t = void 0 === t ? 0 : 0 | t), (e = void 0 === e ? 1 : 0 | e); var r = this.shape, i = this.stride; return new n( this.data, r[t], r[e], i[t], i[e], this.offset, ); }), (i.pick = function (t, r) { var n = [], i = [], a = this.offset; return ( "number" == typeof t && t >= 0 ? (a = (a + this.stride[0] * t) | 0) : (n.push(this.shape[0]), i.push(this.stride[0])), "number" == typeof r && r >= 0 ? (a = (a + this.stride[1] * r) | 0) : (n.push(this.shape[1]), i.push(this.stride[1])), (0, e[n.length + 1])( this.data, n, i, a, ) ); }), function (t, e, r, i) { return new n( t, e[0], e[1], r[0], r[1], i, ); } ); }, 3: function (t, e, r) { function n(t, e, r, n, i, a, o, s) { (this.data = t), (this.shape = [e, r, n]), (this.stride = [i, a, o]), (this.offset = 0 | s); } var i = n.prototype; return ( (i.dtype = t), (i.dimension = 3), Object.defineProperty(i, "size", { get: function () { return ( this.shape[0] * this.shape[1] * this.shape[2] ); }, }), Object.defineProperty(i, "order", { get: function () { var t = Math.abs(this.stride[0]), e = Math.abs(this.stride[1]), r = Math.abs(this.stride[2]); return t > e ? e > r ? [2, 1, 0] : t > r ? [1, 2, 0] : [1, 0, 2] : t > r ? [2, 0, 1] : r > e ? [0, 1, 2] : [0, 2, 1]; }, }), (i.set = function (e, r, n, i) { return "generic" === t ? this.data.set( this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n, i, ) : (this.data[ this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n ] = i); }), (i.get = function (e, r, n) { return "generic" === t ? this.data.get( this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n, ) : this.data[ this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n ]; }), (i.index = function (t, e, r) { return ( this.offset + this.stride[0] * t + this.stride[1] * e + this.stride[2] * r ); }), (i.hi = function (t, e, r) { return new n( this.data, "number" != typeof t || t < 0 ? this.shape[0] : 0 | t, "number" != typeof e || e < 0 ? this.shape[1] : 0 | e, "number" != typeof r || r < 0 ? this.shape[2] : 0 | r, this.stride[0], this.stride[1], this.stride[2], this.offset, ); }), (i.lo = function (t, e, r) { var i = this.offset, a = 0, o = this.shape[0], s = this.shape[1], l = this.shape[2], c = this.stride[0], u = this.stride[1], f = this.stride[2]; return ( "number" == typeof t && t >= 0 && ((i += c * (a = 0 | t)), (o -= a)), "number" == typeof e && e >= 0 && ((i += u * (a = 0 | e)), (s -= a)), "number" == typeof r && r >= 0 && ((i += f * (a = 0 | r)), (l -= a)), new n(this.data, o, s, l, c, u, f, i) ); }), (i.step = function (t, e, r) { var i = this.shape[0], a = this.shape[1], o = this.shape[2], s = this.stride[0], l = this.stride[1], c = this.stride[2], u = this.offset, f = 0, h = Math.ceil; return ( "number" == typeof t && ((f = 0 | t) < 0 ? ((u += s * (i - 1)), (i = h(-i / f))) : (i = h(i / f)), (s *= f)), "number" == typeof e && ((f = 0 | e) < 0 ? ((u += l * (a - 1)), (a = h(-a / f))) : (a = h(a / f)), (l *= f)), "number" == typeof r && ((f = 0 | r) < 0 ? ((u += c * (o - 1)), (o = h(-o / f))) : (o = h(o / f)), (c *= f)), new n(this.data, i, a, o, s, l, c, u) ); }), (i.transpose = function (t, e, r) { (t = void 0 === t ? 0 : 0 | t), (e = void 0 === e ? 1 : 0 | e), (r = void 0 === r ? 2 : 0 | r); var i = this.shape, a = this.stride; return new n( this.data, i[t], i[e], i[r], a[t], a[e], a[r], this.offset, ); }), (i.pick = function (t, r, n) { var i = [], a = [], o = this.offset; return ( "number" == typeof t && t >= 0 ? (o = (o + this.stride[0] * t) | 0) : (i.push(this.shape[0]), a.push(this.stride[0])), "number" == typeof r && r >= 0 ? (o = (o + this.stride[1] * r) | 0) : (i.push(this.shape[1]), a.push(this.stride[1])), "number" == typeof n && n >= 0 ? (o = (o + this.stride[2] * n) | 0) : (i.push(this.shape[2]), a.push(this.stride[2])), (0, e[i.length + 1])( this.data, i, a, o, ) ); }), function (t, e, r, i) { return new n( t, e[0], e[1], e[2], r[0], r[1], r[2], i, ); } ); }, 4: function (t, e, r) { function n(t, e, r, n, i, a, o, s, l, c) { (this.data = t), (this.shape = [e, r, n, i]), (this.stride = [a, o, s, l]), (this.offset = 0 | c); } var i = n.prototype; return ( (i.dtype = t), (i.dimension = 4), Object.defineProperty(i, "size", { get: function () { return ( this.shape[0] * this.shape[1] * this.shape[2] * this.shape[3] ); }, }), Object.defineProperty(i, "order", { get: r, }), (i.set = function (e, r, n, i, a) { return "generic" === t ? this.data.set( this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n + this.stride[3] * i, a, ) : (this.data[ this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n + this.stride[3] * i ] = a); }), (i.get = function (e, r, n, i) { return "generic" === t ? this.data.get( this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n + this.stride[3] * i, ) : this.data[ this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n + this.stride[3] * i ]; }), (i.index = function (t, e, r, n) { return ( this.offset + this.stride[0] * t + this.stride[1] * e + this.stride[2] * r + this.stride[3] * n ); }), (i.hi = function (t, e, r, i) { return new n( this.data, "number" != typeof t || t < 0 ? this.shape[0] : 0 | t, "number" != typeof e || e < 0 ? this.shape[1] : 0 | e, "number" != typeof r || r < 0 ? this.shape[2] : 0 | r, "number" != typeof i || i < 0 ? this.shape[3] : 0 | i, this.stride[0], this.stride[1], this.stride[2], this.stride[3], this.offset, ); }), (i.lo = function (t, e, r, i) { var a = this.offset, o = 0, s = this.shape[0], l = this.shape[1], c = this.shape[2], u = this.shape[3], f = this.stride[0], h = this.stride[1], p = this.stride[2], d = this.stride[3]; return ( "number" == typeof t && t >= 0 && ((a += f * (o = 0 | t)), (s -= o)), "number" == typeof e && e >= 0 && ((a += h * (o = 0 | e)), (l -= o)), "number" == typeof r && r >= 0 && ((a += p * (o = 0 | r)), (c -= o)), "number" == typeof i && i >= 0 && ((a += d * (o = 0 | i)), (u -= o)), new n( this.data, s, l, c, u, f, h, p, d, a, ) ); }), (i.step = function (t, e, r, i) { var a = this.shape[0], o = this.shape[1], s = this.shape[2], l = this.shape[3], c = this.stride[0], u = this.stride[1], f = this.stride[2], h = this.stride[3], p = this.offset, d = 0, m = Math.ceil; return ( "number" == typeof t && ((d = 0 | t) < 0 ? ((p += c * (a - 1)), (a = m(-a / d))) : (a = m(a / d)), (c *= d)), "number" == typeof e && ((d = 0 | e) < 0 ? ((p += u * (o - 1)), (o = m(-o / d))) : (o = m(o / d)), (u *= d)), "number" == typeof r && ((d = 0 | r) < 0 ? ((p += f * (s - 1)), (s = m(-s / d))) : (s = m(s / d)), (f *= d)), "number" == typeof i && ((d = 0 | i) < 0 ? ((p += h * (l - 1)), (l = m(-l / d))) : (l = m(l / d)), (h *= d)), new n( this.data, a, o, s, l, c, u, f, h, p, ) ); }), (i.transpose = function (t, e, r, i) { (t = void 0 === t ? 0 : 0 | t), (e = void 0 === e ? 1 : 0 | e), (r = void 0 === r ? 2 : 0 | r), (i = void 0 === i ? 3 : 0 | i); var a = this.shape, o = this.stride; return new n( this.data, a[t], a[e], a[r], a[i], o[t], o[e], o[r], o[i], this.offset, ); }), (i.pick = function (t, r, n, i) { var a = [], o = [], s = this.offset; return ( "number" == typeof t && t >= 0 ? (s = (s + this.stride[0] * t) | 0) : (a.push(this.shape[0]), o.push(this.stride[0])), "number" == typeof r && r >= 0 ? (s = (s + this.stride[1] * r) | 0) : (a.push(this.shape[1]), o.push(this.stride[1])), "number" == typeof n && n >= 0 ? (s = (s + this.stride[2] * n) | 0) : (a.push(this.shape[2]), o.push(this.stride[2])), "number" == typeof i && i >= 0 ? (s = (s + this.stride[3] * i) | 0) : (a.push(this.shape[3]), o.push(this.stride[3])), (0, e[a.length + 1])( this.data, a, o, s, ) ); }), function (t, e, r, i) { return new n( t, e[0], e[1], e[2], e[3], r[0], r[1], r[2], r[3], i, ); } ); }, 5: function (t, e, r) { function n( t, e, r, n, i, a, o, s, l, c, u, f, ) { (this.data = t), (this.shape = [e, r, n, i, a]), (this.stride = [o, s, l, c, u]), (this.offset = 0 | f); } var i = n.prototype; return ( (i.dtype = t), (i.dimension = 5), Object.defineProperty(i, "size", { get: function () { return ( this.shape[0] * this.shape[1] * this.shape[2] * this.shape[3] * this.shape[4] ); }, }), Object.defineProperty(i, "order", { get: r, }), (i.set = function (e, r, n, i, a, o) { return "generic" === t ? this.data.set( this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n + this.stride[3] * i + this.stride[4] * a, o, ) : (this.data[ this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n + this.stride[3] * i + this.stride[4] * a ] = o); }), (i.get = function (e, r, n, i, a) { return "generic" === t ? this.data.get( this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n + this.stride[3] * i + this.stride[4] * a, ) : this.data[ this.offset + this.stride[0] * e + this.stride[1] * r + this.stride[2] * n + this.stride[3] * i + this.stride[4] * a ]; }), (i.index = function (t, e, r, n, i) { return ( this.offset + this.stride[0] * t + this.stride[1] * e + this.stride[2] * r + this.stride[3] * n + this.stride[4] * i ); }), (i.hi = function (t, e, r, i, a) { return new n( this.data, "number" != typeof t || t < 0 ? this.shape[0] : 0 | t, "number" != typeof e || e < 0 ? this.shape[1] : 0 | e, "number" != typeof r || r < 0 ? this.shape[2] : 0 | r, "number" != typeof i || i < 0 ? this.shape[3] : 0 | i, "number" != typeof a || a < 0 ? this.shape[4] : 0 | a, this.stride[0], this.stride[1], this.stride[2], this.stride[3], this.stride[4], this.offset, ); }), (i.lo = function (t, e, r, i, a) { var o = this.offset, s = 0, l = this.shape[0], c = this.shape[1], u = this.shape[2], f = this.shape[3], h = this.shape[4], p = this.stride[0], d = this.stride[1], m = this.stride[2], g = this.stride[3], v = this.stride[4]; return ( "number" == typeof t && t >= 0 && ((o += p * (s = 0 | t)), (l -= s)), "number" == typeof e && e >= 0 && ((o += d * (s = 0 | e)), (c -= s)), "number" == typeof r && r >= 0 && ((o += m * (s = 0 | r)), (u -= s)), "number" == typeof i && i >= 0 && ((o += g * (s = 0 | i)), (f -= s)), "number" == typeof a && a >= 0 && ((o += v * (s = 0 | a)), (h -= s)), new n( this.data, l, c, u, f, h, p, d, m, g, v, o, ) ); }), (i.step = function (t, e, r, i, a) { var o = this.shape[0], s = this.shape[1], l = this.shape[2], c = this.shape[3], u = this.shape[4], f = this.stride[0], h = this.stride[1], p = this.stride[2], d = this.stride[3], m = this.stride[4], g = this.offset, v = 0, y = Math.ceil; return ( "number" == typeof t && ((v = 0 | t) < 0 ? ((g += f * (o - 1)), (o = y(-o / v))) : (o = y(o / v)), (f *= v)), "number" == typeof e && ((v = 0 | e) < 0 ? ((g += h * (s - 1)), (s = y(-s / v))) : (s = y(s / v)), (h *= v)), "number" == typeof r && ((v = 0 | r) < 0 ? ((g += p * (l - 1)), (l = y(-l / v))) : (l = y(l / v)), (p *= v)), "number" == typeof i && ((v = 0 | i) < 0 ? ((g += d * (c - 1)), (c = y(-c / v))) : (c = y(c / v)), (d *= v)), "number" == typeof a && ((v = 0 | a) < 0 ? ((g += m * (u - 1)), (u = y(-u / v))) : (u = y(u / v)), (m *= v)), new n( this.data, o, s, l, c, u, f, h, p, d, m, g, ) ); }), (i.transpose = function (t, e, r, i, a) { (t = void 0 === t ? 0 : 0 | t), (e = void 0 === e ? 1 : 0 | e), (r = void 0 === r ? 2 : 0 | r), (i = void 0 === i ? 3 : 0 | i), (a = void 0 === a ? 4 : 0 | a); var o = this.shape, s = this.stride; return new n( this.data, o[t], o[e], o[r], o[i], o[a], s[t], s[e], s[r], s[i], s[a], this.offset, ); }), (i.pick = function (t, r, n, i, a) { var o = [], s = [], l = this.offset; return ( "number" == typeof t && t >= 0 ? (l = (l + this.stride[0] * t) | 0) : (o.push(this.shape[0]), s.push(this.stride[0])), "number" == typeof r && r >= 0 ? (l = (l + this.stride[1] * r) | 0) : (o.push(this.shape[1]), s.push(this.stride[1])), "number" == typeof n && n >= 0 ? (l = (l + this.stride[2] * n) | 0) : (o.push(this.shape[2]), s.push(this.stride[2])), "number" == typeof i && i >= 0 ? (l = (l + this.stride[3] * i) | 0) : (o.push(this.shape[3]), s.push(this.stride[3])), "number" == typeof a && a >= 0 ? (l = (l + this.stride[4] * a) | 0) : (o.push(this.shape[4]), s.push(this.stride[4])), (0, e[o.length + 1])( this.data, o, s, l, ) ); }), function (t, e, r, i) { return new n( t, e[0], e[1], e[2], e[3], e[4], r[0], r[1], r[2], r[3], r[4], i, ); } ); }, }; function l(t, e) { var r = -1 === e ? "T" : String(e), n = s[r]; return -1 === e ? n(t) : 0 === e ? n(t, c[t][0]) : n(t, c[t], o); } var c = { generic: [], buffer: [], array: [], float32: [], float64: [], int8: [], int16: [], int32: [], uint8_clamped: [], uint8: [], uint16: [], uint32: [], bigint64: [], biguint64: [], }; e.exports = function (t, e, r, a) { if (void 0 === t) return (0, c.array[0])([]); "number" == typeof t && (t = [t]), void 0 === e && (e = [t.length]); var o = e.length; if (void 0 === r) { r = new Array(o); for (var s = o - 1, u = 1; s >= 0; --s) (r[s] = u), (u *= e[s]); } if (void 0 === a) { a = 0; for (s = 0; s < o; ++s) r[s] < 0 && (a -= (e[s] - 1) * r[s]); } for ( var f = (function (t) { if (n(t)) return "buffer"; if (i) switch ( Object.prototype.toString.call(t) ) { case "[object Float64Array]": return "float64"; case "[object Float32Array]": return "float32"; case "[object Int8Array]": return "int8"; case "[object Int16Array]": return "int16"; case "[object Int32Array]": return "int32"; case "[object Uint8ClampedArray]": return "uint8_clamped"; case "[object Uint8Array]": return "uint8"; case "[object Uint16Array]": return "uint16"; case "[object Uint32Array]": return "uint32"; case "[object BigInt64Array]": return "bigint64"; case "[object BigUint64Array]": return "biguint64"; } return Array.isArray(t) ? "array" : "generic"; })(t), h = c[f]; h.length <= o + 1; ) h.push(l(f, h.length - 1)); return (0, h[o + 1])(t, e, r, a); }; }, { "is-buffer": 237 }, ], 260: [ function (t, e, r) { "use strict"; var n = t("double-bits"), i = Math.pow(2, -1074); e.exports = function (t, e) { if (isNaN(t) || isNaN(e)) return NaN; if (t === e) return t; if (0 === t) return e < 0 ? -i : i; var r = n.hi(t), a = n.lo(t); e > t == t > 0 ? a === -1 >>> 0 ? ((r += 1), (a = 0)) : (a += 1) : 0 === a ? ((a = -1 >>> 0), (r -= 1)) : (a -= 1); return n.pack(a, r); }; }, { "double-bits": 64 }, ], 261: [ function (t, e, r) { (r.vertexNormals = function (t, e, r) { for ( var n = e.length, i = new Array(n), a = void 0 === r ? 1e-6 : r, o = 0; o < n; ++o ) i[o] = [0, 0, 0]; for (o = 0; o < t.length; ++o) for ( var s = t[o], l = 0, c = s[s.length - 1], u = s[0], f = 0; f < s.length; ++f ) { (l = c), (c = u), (u = s[(f + 1) % s.length]); for ( var h = e[l], p = e[c], d = e[u], m = new Array(3), g = 0, v = new Array(3), y = 0, x = 0; x < 3; ++x ) (m[x] = h[x] - p[x]), (g += m[x] * m[x]), (v[x] = d[x] - p[x]), (y += v[x] * v[x]); if (g * y > a) { var b = i[c], _ = 1 / Math.sqrt(g * y); for (x = 0; x < 3; ++x) { var w = (x + 1) % 3, T = (x + 2) % 3; b[x] += _ * (v[w] * m[T] - v[T] * m[w]); } } } for (o = 0; o < n; ++o) { b = i[o]; var k = 0; for (x = 0; x < 3; ++x) k += b[x] * b[x]; if (k > a) for ( _ = 1 / Math.sqrt(k), x = 0; x < 3; ++x ) b[x] *= _; else for (x = 0; x < 3; ++x) b[x] = 0; } return i; }), (r.faceNormals = function (t, e, r) { for ( var n = t.length, i = new Array(n), a = void 0 === r ? 1e-6 : r, o = 0; o < n; ++o ) { for ( var s = t[o], l = new Array(3), c = 0; c < 3; ++c ) l[c] = e[s[c]]; var u = new Array(3), f = new Array(3); for (c = 0; c < 3; ++c) (u[c] = l[1][c] - l[0][c]), (f[c] = l[2][c] - l[0][c]); var h = new Array(3), p = 0; for (c = 0; c < 3; ++c) { var d = (c + 1) % 3, m = (c + 2) % 3; (h[c] = u[d] * f[m] - u[m] * f[d]), (p += h[c] * h[c]); } p = p > a ? 1 / Math.sqrt(p) : 0; for (c = 0; c < 3; ++c) h[c] *= p; i[o] = h; } return i; }); }, {}, ], 262: [ function (t, e, r) { "use strict"; e.exports = function ( t, e, r, n, i, a, o, s, l, c, ) { var u = e + a + c; if (f > 0) { var f = Math.sqrt(u + 1); (t[0] = (0.5 * (o - l)) / f), (t[1] = (0.5 * (s - n)) / f), (t[2] = (0.5 * (r - a)) / f), (t[3] = 0.5 * f); } else { var h = Math.max(e, a, c); f = Math.sqrt(2 * h - u + 1); e >= h ? ((t[0] = 0.5 * f), (t[1] = (0.5 * (i + r)) / f), (t[2] = (0.5 * (s + n)) / f), (t[3] = (0.5 * (o - l)) / f)) : a >= h ? ((t[0] = (0.5 * (r + i)) / f), (t[1] = 0.5 * f), (t[2] = (0.5 * (l + o)) / f), (t[3] = (0.5 * (s - n)) / f)) : ((t[0] = (0.5 * (n + s)) / f), (t[1] = (0.5 * (o + l)) / f), (t[2] = 0.5 * f), (t[3] = (0.5 * (r - i)) / f)); } return t; }; }, {}, ], 263: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = (t = t || {}).center || [0, 0, 0], r = t.rotation || [0, 0, 0, 1], n = t.radius || 1; (e = [].slice.call(e, 0, 3)), u((r = [].slice.call(r, 0, 4)), r); var i = new f(r, e, Math.log(n)); i.setDistanceLimits(t.zoomMin, t.zoomMax), ("eye" in t || "up" in t) && i.lookAt(0, t.eye, t.center, t.up); return i; }; var n = t("filtered-vector"), i = t("gl-mat4/lookAt"), a = t("gl-mat4/fromQuat"), o = t("gl-mat4/invert"), s = t("./lib/quatFromFrame"); function l(t, e, r) { return Math.sqrt( Math.pow(t, 2) + Math.pow(e, 2) + Math.pow(r, 2), ); } function c(t, e, r, n) { return Math.sqrt( Math.pow(t, 2) + Math.pow(e, 2) + Math.pow(r, 2) + Math.pow(n, 2), ); } function u(t, e) { var r = e[0], n = e[1], i = e[2], a = e[3], o = c(r, n, i, a); o > 1e-6 ? ((t[0] = r / o), (t[1] = n / o), (t[2] = i / o), (t[3] = a / o)) : ((t[0] = t[1] = t[2] = 0), (t[3] = 1)); } function f(t, e, r) { (this.radius = n([r])), (this.center = n(e)), (this.rotation = n(t)), (this.computedRadius = this.radius.curve(0)), (this.computedCenter = this.center.curve(0)), (this.computedRotation = this.rotation.curve(0)), (this.computedUp = [0.1, 0, 0]), (this.computedEye = [0.1, 0, 0]), (this.computedMatrix = [ 0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]), this.recalcMatrix(0); } var h = f.prototype; (h.lastT = function () { return Math.max( this.radius.lastT(), this.center.lastT(), this.rotation.lastT(), ); }), (h.recalcMatrix = function (t) { this.radius.curve(t), this.center.curve(t), this.rotation.curve(t); var e = this.computedRotation; u(e, e); var r = this.computedMatrix; a(r, e); var n = this.computedCenter, i = this.computedEye, o = this.computedUp, s = Math.exp(this.computedRadius[0]); (i[0] = n[0] + s * r[2]), (i[1] = n[1] + s * r[6]), (i[2] = n[2] + s * r[10]), (o[0] = r[1]), (o[1] = r[5]), (o[2] = r[9]); for (var l = 0; l < 3; ++l) { for (var c = 0, f = 0; f < 3; ++f) c += r[l + 4 * f] * i[f]; r[12 + l] = -c; } }), (h.getMatrix = function (t, e) { this.recalcMatrix(t); var r = this.computedMatrix; if (e) { for (var n = 0; n < 16; ++n) e[n] = r[n]; return e; } return r; }), (h.idle = function (t) { this.center.idle(t), this.radius.idle(t), this.rotation.idle(t); }), (h.flush = function (t) { this.center.flush(t), this.radius.flush(t), this.rotation.flush(t); }), (h.pan = function (t, e, r, n) { (e = e || 0), (r = r || 0), (n = n || 0), this.recalcMatrix(t); var i = this.computedMatrix, a = i[1], o = i[5], s = i[9], c = l(a, o, s); (a /= c), (o /= c), (s /= c); var u = i[0], f = i[4], h = i[8], p = u * a + f * o + h * s, d = l( (u -= a * p), (f -= o * p), (h -= s * p), ); (u /= d), (f /= d), (h /= d); var m = i[2], g = i[6], v = i[10], y = m * a + g * o + v * s, x = m * u + g * f + v * h, b = l( (m -= y * a + x * u), (g -= y * o + x * f), (v -= y * s + x * h), ); (m /= b), (g /= b), (v /= b); var _ = u * e + a * r, w = f * e + o * r, T = h * e + s * r; this.center.move(t, _, w, T); var k = Math.exp(this.computedRadius[0]); (k = Math.max(1e-4, k + n)), this.radius.set(t, Math.log(k)); }), (h.rotate = function (t, e, r, n) { this.recalcMatrix(t), (e = e || 0), (r = r || 0); var i = this.computedMatrix, a = i[0], o = i[4], s = i[8], u = i[1], f = i[5], h = i[9], p = i[2], d = i[6], m = i[10], g = e * a + r * u, v = e * o + r * f, y = e * s + r * h, x = -(d * y - m * v), b = -(m * g - p * y), _ = -(p * v - d * g), w = Math.sqrt( Math.max( 0, 1 - Math.pow(x, 2) - Math.pow(b, 2) - Math.pow(_, 2), ), ), T = c(x, b, _, w); T > 1e-6 ? ((x /= T), (b /= T), (_ /= T), (w /= T)) : ((x = b = _ = 0), (w = 1)); var k = this.computedRotation, A = k[0], M = k[1], S = k[2], E = k[3], L = A * w + E * x + M * _ - S * b, C = M * w + E * b + S * x - A * _, P = S * w + E * _ + A * b - M * x, I = E * w - A * x - M * b - S * _; if (n) { (x = p), (b = d), (_ = m); var O = Math.sin(n) / l(x, b, _); (x *= O), (b *= O), (_ *= O), (I = I * (w = Math.cos(e)) - (L = L * w + I * x + C * _ - P * b) * x - (C = C * w + I * b + P * x - L * _) * b - (P = P * w + I * _ + L * b - C * x) * _); } var z = c(L, C, P, I); z > 1e-6 ? ((L /= z), (C /= z), (P /= z), (I /= z)) : ((L = C = P = 0), (I = 1)), this.rotation.set(t, L, C, P, I); }), (h.lookAt = function (t, e, r, n) { this.recalcMatrix(t), (r = r || this.computedCenter), (e = e || this.computedEye), (n = n || this.computedUp); var a = this.computedMatrix; i(a, e, r, n); var o = this.computedRotation; s( o, a[0], a[1], a[2], a[4], a[5], a[6], a[8], a[9], a[10], ), u(o, o), this.rotation.set( t, o[0], o[1], o[2], o[3], ); for (var l = 0, c = 0; c < 3; ++c) l += Math.pow(r[c] - e[c], 2); this.radius.set( t, 0.5 * Math.log(Math.max(l, 1e-6)), ), this.center.set(t, r[0], r[1], r[2]); }), (h.translate = function (t, e, r, n) { this.center.move(t, e || 0, r || 0, n || 0); }), (h.setMatrix = function (t, e) { var r = this.computedRotation; s( r, e[0], e[1], e[2], e[4], e[5], e[6], e[8], e[9], e[10], ), u(r, r), this.rotation.set( t, r[0], r[1], r[2], r[3], ); var n = this.computedMatrix; o(n, e); var i = n[15]; if (Math.abs(i) > 1e-6) { var a = n[12] / i, l = n[13] / i, c = n[14] / i; this.recalcMatrix(t); var f = Math.exp(this.computedRadius[0]); this.center.set( t, a - n[2] * f, l - n[6] * f, c - n[10] * f, ), this.radius.idle(t); } else this.center.idle(t), this.radius.idle(t); }), (h.setDistance = function (t, e) { e > 0 && this.radius.set(t, Math.log(e)); }), (h.setDistanceLimits = function (t, e) { (t = t > 0 ? Math.log(t) : -1 / 0), (e = e > 0 ? Math.log(e) : 1 / 0), (e = Math.max(e, t)), (this.radius.bounds[0][0] = t), (this.radius.bounds[1][0] = e); }), (h.getDistanceLimits = function (t) { var e = this.radius.bounds; return t ? ((t[0] = Math.exp(e[0][0])), (t[1] = Math.exp(e[1][0])), t) : [Math.exp(e[0][0]), Math.exp(e[1][0])]; }), (h.toJSON = function () { return ( this.recalcMatrix(this.lastT()), { center: this.computedCenter.slice(), rotation: this.computedRotation.slice(), distance: Math.log( this.computedRadius[0], ), zoomMin: this.radius.bounds[0][0], zoomMax: this.radius.bounds[1][0], } ); }), (h.fromJSON = function (t) { var e = this.lastT(), r = t.center; r && this.center.set(e, r[0], r[1], r[2]); var n = t.rotation; n && this.rotation.set( e, n[0], n[1], n[2], n[3], ); var i = t.distance; i && i > 0 && this.radius.set(e, Math.log(i)), this.setDistanceLimits( t.zoomMin, t.zoomMax, ); }); }, { "./lib/quatFromFrame": 262, "filtered-vector": 68, "gl-mat4/fromQuat": 95, "gl-mat4/invert": 98, "gl-mat4/lookAt": 99, }, ], 264: [ function (t, e, r) { /*! * pad-left * * Copyright (c) 2014-2015, Jon Schlinkert. * Licensed under the MIT license. */ "use strict"; var n = t("repeat-string"); e.exports = function (t, e, r) { return ( n((r = void 0 !== r ? r + "" : " "), e) + t ); }; }, { "repeat-string": 277 }, ], 265: [ function (t, e, r) { e.exports = function (t, e) { e || (e = [0, ""]), (t = String(t)); var r = parseFloat(t, 10); return ( (e[0] = r), (e[1] = t.match(/[\d.\-\+]*\s*(.*)/)[1] || ""), e ); }; }, {}, ], 266: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { for ( var r = 0 | e.length, i = t.length, a = [new Array(r), new Array(r)], o = 0; o < r; ++o ) (a[0][o] = []), (a[1][o] = []); for (o = 0; o < i; ++o) { var s = t[o]; a[0][s[0]].push(s), a[1][s[1]].push(s); } var l = []; for (o = 0; o < r; ++o) a[0][o].length + a[1][o].length === 0 && l.push([o]); function c(t, e) { var r = a[e][t[e]]; r.splice(r.indexOf(t), 1); } function u(t, r, i) { for (var o, s, l, u = 0; u < 2; ++u) if (a[u][r].length > 0) { (o = a[u][r][0]), (l = u); break; } s = o[1 ^ l]; for (var f = 0; f < 2; ++f) for ( var h = a[f][r], p = 0; p < h.length; ++p ) { var d = h[p], m = d[1 ^ f]; n(e[t], e[r], e[s], e[m]) > 0 && ((o = d), (s = m), (l = f)); } return i || (o && c(o, l)), s; } function f(t, r) { var i = a[r][t][0], o = [t]; c(i, r); for (var s = i[1 ^ r]; ; ) { for (; s !== t; ) o.push(s), (s = u(o[o.length - 2], s, !1)); if (a[0][t].length + a[1][t].length === 0) break; var l = o[o.length - 1], f = t, h = o[1], p = u(l, f, !0); if (n(e[l], e[f], e[h], e[p]) < 0) break; o.push(t), (s = u(l, f)); } return o; } function h(t, e) { return e[1] === e[e.length - 1]; } for (o = 0; o < r; ++o) for (var p = 0; p < 2; ++p) { for (var d = []; a[p][o].length > 0; ) { a[0][o].length; var m = f(o, p); h(0, m) ? d.push.apply(d, m) : (d.length > 0 && l.push(d), (d = m)); } d.length > 0 && l.push(d); } return l; }; var n = t("compare-angle"); }, { "compare-angle": 54 }, ], 267: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { for ( var r = n(t, e.length), i = new Array(e.length), a = new Array(e.length), o = [], s = 0; s < e.length; ++s ) { var l = r[s].length; (a[s] = l), (i[s] = !0), l <= 1 && o.push(s); } for (; o.length > 0; ) { var c = o.pop(); i[c] = !1; var u = r[c]; for (s = 0; s < u.length; ++s) { var f = u[s]; 0 == --a[f] && o.push(f); } } var h = new Array(e.length), p = []; for (s = 0; s < e.length; ++s) if (i[s]) { c = p.length; (h[s] = c), p.push(e[s]); } else h[s] = -1; var d = []; for (s = 0; s < t.length; ++s) { var m = t[s]; i[m[0]] && i[m[1]] && d.push([h[m[0]], h[m[1]]]); } return [d, p]; }; var n = t("edges-to-adjacency-list"); }, { "edges-to-adjacency-list": 66 }, ], 268: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r = c(t, e); t = r[0]; for ( var f = (e = r[1]).length, h = (t.length, n(t, e.length)), p = 0; p < f; ++p ) if (h[p].length % 2 == 1) throw new Error( "planar-graph-to-polyline: graph must be manifold", ); var d = i(t, e); var m = (d = d.filter(function (t) { for ( var r = t.length, n = [0], i = 0; i < r; ++i ) { var a = e[t[i]], l = e[t[(i + 1) % r]], c = o(-a[0], a[1]), u = o(-a[0], l[1]), f = o(l[0], a[1]), h = o(l[0], l[1]); n = s(n, s(s(c, u), s(f, h))); } return n[n.length - 1] > 0; })).length, g = new Array(m), v = new Array(m); for (p = 0; p < m; ++p) { g[p] = p; var y = new Array(m), x = d[p].map(function (t) { return e[t]; }), b = a([x]), _ = 0; t: for (var w = 0; w < m; ++w) if (((y[w] = 0), p !== w)) { for ( var T = (H = d[w]).length, k = 0; k < T; ++k ) { var A = b(e[H[k]]); if (0 !== A) { A < 0 && ((y[w] = 1), (_ += 1)); continue t; } } (y[w] = 1), (_ += 1); } v[p] = [_, p, y]; } v.sort(function (t, e) { return e[0] - t[0]; }); for (p = 0; p < m; ++p) { var M = (y = v[p])[1], S = y[2]; for (w = 0; w < m; ++w) S[w] && (g[w] = M); } var E = (function (t) { for ( var e = new Array(t), r = 0; r < t; ++r ) e[r] = []; return e; })(m); for (p = 0; p < m; ++p) E[p].push(g[p]), E[g[p]].push(p); var L = {}, C = u(f, !1); for (p = 0; p < m; ++p) for ( T = (H = d[p]).length, w = 0; w < T; ++w ) { var P = H[w], I = H[(w + 1) % T], O = Math.min(P, I) + ":" + Math.max(P, I); if (O in L) { var z = L[O]; E[z].push(p), E[p].push(z), (C[P] = C[I] = !0); } else L[O] = p; } function D(t) { for (var e = t.length, r = 0; r < e; ++r) if (!C[t[r]]) return !1; return !0; } var R = [], F = u(m, -1); for (p = 0; p < m; ++p) g[p] !== p || D(d[p]) ? (F[p] = -1) : (R.push(p), (F[p] = 0)); r = []; for (; R.length > 0; ) { var B = R.pop(), N = E[B]; l(N, function (t, e) { return t - e; }); var j, U = N.length, V = F[B]; if (0 === V) { var H = d[B]; j = [H]; } for (p = 0; p < U; ++p) { var q = N[p]; if (!(F[q] >= 0)) if ( ((F[q] = 1 ^ V), R.push(q), 0 === V) ) D((H = d[q])) || (H.reverse(), j.push(H)); } 0 === V && r.push(j); } return r; }; var n = t("edges-to-adjacency-list"), i = t("planar-dual"), a = t("point-in-big-polygon"), o = t("two-product"), s = t("robust-sum"), l = t("uniq"), c = t("./lib/trim-leaves"); function u(t, e) { for (var r = new Array(t), n = 0; n < t; ++n) r[n] = e; return r; } }, { "./lib/trim-leaves": 267, "edges-to-adjacency-list": 66, "planar-dual": 266, "point-in-big-polygon": 269, "robust-sum": 289, "two-product": 306, uniq: 310, }, ], 269: [ function (t, e, r) { e.exports = function (t) { for ( var e = t.length, r = [], a = [], s = 0; s < e; ++s ) for ( var u = t[s], f = u.length, h = f - 1, p = 0; p < f; h = p++ ) { var d = u[h], m = u[p]; d[0] === m[0] ? a.push([d, m]) : r.push([d, m]); } if (0 === r.length) return 0 === a.length ? c : ((g = l(a)), function (t) { return g(t[0], t[1]) ? 0 : 1; }); var g; var v = i(r), y = (function (t, e) { return function (r) { var i = o.le(e, r[0]); if (i < 0) return 1; var a = t[i]; if (!a) { if (!(i > 0 && e[i] === r[0])) return 1; a = t[i - 1]; } for (var s = 1; a; ) { var l = a.key, c = n(r, l[0], l[1]); if (l[0][0] < l[1][0]) if (c < 0) a = a.left; else { if (!(c > 0)) return 0; (s = -1), (a = a.right); } else if (c > 0) a = a.left; else { if (!(c < 0)) return 0; (s = 1), (a = a.right); } } return s; }; })(v.slabs, v.coordinates); return 0 === a.length ? y : (function (t, e) { return function (r) { return t(r[0], r[1]) ? 0 : e(r); }; })(l(a), y); }; var n = t("robust-orientation")[3], i = t("slab-decomposition"), a = t("interval-tree-1d"), o = t("binary-search-bounds"); function s() { return !0; } function l(t) { for (var e = {}, r = 0; r < t.length; ++r) { var n = t[r], i = n[0][0], o = n[0][1], l = n[1][1], c = [Math.min(o, l), Math.max(o, l)]; i in e ? e[i].push(c) : (e[i] = [c]); } var u = {}, f = Object.keys(e); for (r = 0; r < f.length; ++r) { var h = e[f[r]]; u[f[r]] = a(h); } return (function (t) { return function (e, r) { var n = t[e]; return !!n && !!n.queryPoint(r, s); }; })(u); } function c(t) { return 1; } }, { "binary-search-bounds": 31, "interval-tree-1d": 234, "robust-orientation": 284, "slab-decomposition": 299, }, ], 270: [ function (t, e, r) { "use strict"; var n = new Float64Array(4), i = new Float64Array(4), a = new Float64Array(4); e.exports = function (t, e, r, o, s) { n.length < o.length && ((n = new Float64Array(o.length)), (i = new Float64Array(o.length)), (a = new Float64Array(o.length))); for (var l = 0; l < o.length; ++l) (n[l] = t[l] - o[l]), (i[l] = e[l] - t[l]), (a[l] = r[l] - t[l]); var c = 0, u = 0, f = 0, h = 0, p = 0, d = 0; for (l = 0; l < o.length; ++l) { var m = i[l], g = a[l], v = n[l]; (c += m * m), (u += m * g), (f += g * g), (h += v * m), (p += v * g), (d += v * v); } var y, x, b, _, w, T = Math.abs(c * f - u * u), k = u * p - f * h, A = u * h - c * p; if (k + A <= T) if (k < 0) A < 0 && h < 0 ? ((A = 0), -h >= c ? ((k = 1), (y = c + 2 * h + d)) : (y = h * (k = -h / c) + d)) : ((k = 0), p >= 0 ? ((A = 0), (y = d)) : -p >= f ? ((A = 1), (y = f + 2 * p + d)) : (y = p * (A = -p / f) + d)); else if (A < 0) (A = 0), h >= 0 ? ((k = 0), (y = d)) : -h >= c ? ((k = 1), (y = c + 2 * h + d)) : (y = h * (k = -h / c) + d); else { var M = 1 / T; y = (k *= M) * (c * k + u * (A *= M) + 2 * h) + A * (u * k + f * A + 2 * p) + d; } else k < 0 ? (b = f + p) > (x = u + h) ? (_ = b - x) >= (w = c - 2 * u + f) ? ((k = 1), (A = 0), (y = c + 2 * h + d)) : (y = (k = _ / w) * (c * k + u * (A = 1 - k) + 2 * h) + A * (u * k + f * A + 2 * p) + d) : ((k = 0), b <= 0 ? ((A = 1), (y = f + 2 * p + d)) : p >= 0 ? ((A = 0), (y = d)) : (y = p * (A = -p / f) + d)) : A < 0 ? (b = c + h) > (x = u + p) ? (_ = b - x) >= (w = c - 2 * u + f) ? ((A = 1), (k = 0), (y = f + 2 * p + d)) : (y = (k = 1 - (A = _ / w)) * (c * k + u * A + 2 * h) + A * (u * k + f * A + 2 * p) + d) : ((A = 0), b <= 0 ? ((k = 1), (y = c + 2 * h + d)) : h >= 0 ? ((k = 0), (y = d)) : (y = h * (k = -h / c) + d)) : (_ = f + p - u - h) <= 0 ? ((k = 0), (A = 1), (y = f + 2 * p + d)) : _ >= (w = c - 2 * u + f) ? ((k = 1), (A = 0), (y = c + 2 * h + d)) : (y = (k = _ / w) * (c * k + u * (A = 1 - k) + 2 * h) + A * (u * k + f * A + 2 * p) + d); var S = 1 - k - A; for (l = 0; l < o.length; ++l) s[l] = S * t[l] + k * e[l] + A * r[l]; return y < 0 ? 0 : y; }; }, {}, ], 271: [ function (t, e, r) { e.exports = t("gl-quat/slerp"); }, { "gl-quat/slerp": 124 }, ], 272: [ function (t, e, r) { "use strict"; var n = t("big-rat/add"); e.exports = function (t, e) { for ( var r = t.length, i = new Array(r), a = 0; a < r; ++a ) i[a] = n(t[a], e[a]); return i; }; }, { "big-rat/add": 15 }, ], 273: [ function (t, e, r) { "use strict"; e.exports = function (t) { for ( var e = new Array(t.length), r = 0; r < t.length; ++r ) e[r] = n(t[r]); return e; }; var n = t("big-rat"); }, { "big-rat": 18 }, ], 274: [ function (t, e, r) { "use strict"; var n = t("big-rat"), i = t("big-rat/mul"); e.exports = function (t, e) { for ( var r = n(e), a = t.length, o = new Array(a), s = 0; s < a; ++s ) o[s] = i(t[s], r); return o; }; }, { "big-rat": 18, "big-rat/mul": 27 }, ], 275: [ function (t, e, r) { "use strict"; var n = t("big-rat/sub"); e.exports = function (t, e) { for ( var r = t.length, i = new Array(r), a = 0; a < r; ++a ) i[a] = n(t[a], e[a]); return i; }; }, { "big-rat/sub": 29 }, ], 276: [ function (t, e, r) { "use strict"; var n = t("compare-cell"), i = t("compare-oriented-cell"), a = t("cell-orientation"); e.exports = function (t) { t.sort(i); for ( var e = t.length, r = 0, o = 0; o < e; ++o ) { var s = t[o], l = a(s); if (0 !== l) { if (r > 0) { var c = t[r - 1]; if (0 === n(s, c) && a(c) !== l) { r -= 1; continue; } } t[r++] = s; } } return (t.length = r), t; }; }, { "cell-orientation": 47, "compare-cell": 56, "compare-oriented-cell": 57, }, ], 277: [ function (t, e, r) { /*! * repeat-string * * Copyright (c) 2014-2015, Jon Schlinkert. * Licensed under the MIT License. */ "use strict"; var n, i = ""; e.exports = function (t, e) { if ("string" != typeof t) throw new TypeError("expected a string"); if (1 === e) return t; if (2 === e) return t + t; var r = t.length * e; if (n !== t || void 0 === n) (n = t), (i = ""); else if (i.length >= r) return i.substr(0, r); for (; r > i.length && e > 1; ) 1 & e && (i += t), (e >>= 1), (t += t); return (i = (i += t).substr(0, r)); }; }, {}, ], 278: [ function (t, e, r) { (function (t) { (function () { e.exports = t.performance && t.performance.now ? function () { return performance.now(); } : Date.now || function () { return +new Date(); }; }).call(this); }).call( this, void 0 !== n ? n : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, ); }, {}, ], 279: [ function (t, e, r) { "use strict"; e.exports = function (t) { for ( var e = t.length, r = t[t.length - 1], n = e, i = e - 2; i >= 0; --i ) { var a = r, o = t[i]; (l = o - ((r = a + o) - a)) && ((t[--n] = r), (r = l)); } var s = 0; for (i = n; i < e; ++i) { var l; a = t[i]; (l = (o = r) - ((r = a + o) - a)) && (t[s++] = l); } return (t[s++] = r), (t.length = s), t; }; }, {}, ], 280: [ function (t, e, r) { "use strict"; var n = t("two-product"), i = t("robust-sum"), a = t("robust-scale"), o = t("robust-compress"); function s(t, e, r, n) { return function (e) { return n( t( r(e[0][0], e[1][1]), r(-e[0][1], e[1][0]), ), ); }; } function l(t, e, r, n) { return function (i) { return n( t( e( t( r(i[1][1], i[2][2]), r(-i[1][2], i[2][1]), ), i[0][0], ), t( e( t( r(i[1][0], i[2][2]), r(-i[1][2], i[2][0]), ), -i[0][1], ), e( t( r(i[1][0], i[2][1]), r(-i[1][1], i[2][0]), ), i[0][2], ), ), ), ); }; } function c(t, e, r, n) { return function (i) { return n( t( t( e( t( e( t( r(i[2][2], i[3][3]), r(-i[2][3], i[3][2]), ), i[1][1], ), t( e( t( r(i[2][1], i[3][3]), r(-i[2][3], i[3][1]), ), -i[1][2], ), e( t( r(i[2][1], i[3][2]), r(-i[2][2], i[3][1]), ), i[1][3], ), ), ), i[0][0], ), e( t( e( t( r(i[2][2], i[3][3]), r(-i[2][3], i[3][2]), ), i[1][0], ), t( e( t( r(i[2][0], i[3][3]), r(-i[2][3], i[3][0]), ), -i[1][2], ), e( t( r(i[2][0], i[3][2]), r(-i[2][2], i[3][0]), ), i[1][3], ), ), ), -i[0][1], ), ), t( e( t( e( t( r(i[2][1], i[3][3]), r(-i[2][3], i[3][1]), ), i[1][0], ), t( e( t( r(i[2][0], i[3][3]), r(-i[2][3], i[3][0]), ), -i[1][1], ), e( t( r(i[2][0], i[3][1]), r(-i[2][1], i[3][0]), ), i[1][3], ), ), ), i[0][2], ), e( t( e( t( r(i[2][1], i[3][2]), r(-i[2][2], i[3][1]), ), i[1][0], ), t( e( t( r(i[2][0], i[3][2]), r(-i[2][2], i[3][0]), ), -i[1][1], ), e( t( r(i[2][0], i[3][1]), r(-i[2][1], i[3][0]), ), i[1][2], ), ), ), -i[0][3], ), ), ), ); }; } function u(t, e, r, n) { return function (i) { return n( t( t( e( t( t( e( t( e( t( r(i[3][3], i[4][4]), r(-i[3][4], i[4][3]), ), i[2][2], ), t( e( t( r(i[3][2], i[4][4]), r(-i[3][4], i[4][2]), ), -i[2][3], ), e( t( r(i[3][2], i[4][3]), r(-i[3][3], i[4][2]), ), i[2][4], ), ), ), i[1][1], ), e( t( e( t( r(i[3][3], i[4][4]), r(-i[3][4], i[4][3]), ), i[2][1], ), t( e( t( r(i[3][1], i[4][4]), r(-i[3][4], i[4][1]), ), -i[2][3], ), e( t( r(i[3][1], i[4][3]), r(-i[3][3], i[4][1]), ), i[2][4], ), ), ), -i[1][2], ), ), t( e( t( e( t( r(i[3][2], i[4][4]), r(-i[3][4], i[4][2]), ), i[2][1], ), t( e( t( r(i[3][1], i[4][4]), r(-i[3][4], i[4][1]), ), -i[2][2], ), e( t( r(i[3][1], i[4][2]), r(-i[3][2], i[4][1]), ), i[2][4], ), ), ), i[1][3], ), e( t( e( t( r(i[3][2], i[4][3]), r(-i[3][3], i[4][2]), ), i[2][1], ), t( e( t( r(i[3][1], i[4][3]), r(-i[3][3], i[4][1]), ), -i[2][2], ), e( t( r(i[3][1], i[4][2]), r(-i[3][2], i[4][1]), ), i[2][3], ), ), ), -i[1][4], ), ), ), i[0][0], ), e( t( t( e( t( e( t( r(i[3][3], i[4][4]), r(-i[3][4], i[4][3]), ), i[2][2], ), t( e( t( r(i[3][2], i[4][4]), r(-i[3][4], i[4][2]), ), -i[2][3], ), e( t( r(i[3][2], i[4][3]), r(-i[3][3], i[4][2]), ), i[2][4], ), ), ), i[1][0], ), e( t( e( t( r(i[3][3], i[4][4]), r(-i[3][4], i[4][3]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][4]), r(-i[3][4], i[4][0]), ), -i[2][3], ), e( t( r(i[3][0], i[4][3]), r(-i[3][3], i[4][0]), ), i[2][4], ), ), ), -i[1][2], ), ), t( e( t( e( t( r(i[3][2], i[4][4]), r(-i[3][4], i[4][2]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][4]), r(-i[3][4], i[4][0]), ), -i[2][2], ), e( t( r(i[3][0], i[4][2]), r(-i[3][2], i[4][0]), ), i[2][4], ), ), ), i[1][3], ), e( t( e( t( r(i[3][2], i[4][3]), r(-i[3][3], i[4][2]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][3]), r(-i[3][3], i[4][0]), ), -i[2][2], ), e( t( r(i[3][0], i[4][2]), r(-i[3][2], i[4][0]), ), i[2][3], ), ), ), -i[1][4], ), ), ), -i[0][1], ), ), t( e( t( t( e( t( e( t( r(i[3][3], i[4][4]), r(-i[3][4], i[4][3]), ), i[2][1], ), t( e( t( r(i[3][1], i[4][4]), r(-i[3][4], i[4][1]), ), -i[2][3], ), e( t( r(i[3][1], i[4][3]), r(-i[3][3], i[4][1]), ), i[2][4], ), ), ), i[1][0], ), e( t( e( t( r(i[3][3], i[4][4]), r(-i[3][4], i[4][3]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][4]), r(-i[3][4], i[4][0]), ), -i[2][3], ), e( t( r(i[3][0], i[4][3]), r(-i[3][3], i[4][0]), ), i[2][4], ), ), ), -i[1][1], ), ), t( e( t( e( t( r(i[3][1], i[4][4]), r(-i[3][4], i[4][1]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][4]), r(-i[3][4], i[4][0]), ), -i[2][1], ), e( t( r(i[3][0], i[4][1]), r(-i[3][1], i[4][0]), ), i[2][4], ), ), ), i[1][3], ), e( t( e( t( r(i[3][1], i[4][3]), r(-i[3][3], i[4][1]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][3]), r(-i[3][3], i[4][0]), ), -i[2][1], ), e( t( r(i[3][0], i[4][1]), r(-i[3][1], i[4][0]), ), i[2][3], ), ), ), -i[1][4], ), ), ), i[0][2], ), t( e( t( t( e( t( e( t( r(i[3][2], i[4][4]), r(-i[3][4], i[4][2]), ), i[2][1], ), t( e( t( r(i[3][1], i[4][4]), r( -i[3][4], i[4][1], ), ), -i[2][2], ), e( t( r(i[3][1], i[4][2]), r( -i[3][2], i[4][1], ), ), i[2][4], ), ), ), i[1][0], ), e( t( e( t( r(i[3][2], i[4][4]), r(-i[3][4], i[4][2]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][4]), r( -i[3][4], i[4][0], ), ), -i[2][2], ), e( t( r(i[3][0], i[4][2]), r( -i[3][2], i[4][0], ), ), i[2][4], ), ), ), -i[1][1], ), ), t( e( t( e( t( r(i[3][1], i[4][4]), r(-i[3][4], i[4][1]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][4]), r( -i[3][4], i[4][0], ), ), -i[2][1], ), e( t( r(i[3][0], i[4][1]), r( -i[3][1], i[4][0], ), ), i[2][4], ), ), ), i[1][2], ), e( t( e( t( r(i[3][1], i[4][2]), r(-i[3][2], i[4][1]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][2]), r( -i[3][2], i[4][0], ), ), -i[2][1], ), e( t( r(i[3][0], i[4][1]), r( -i[3][1], i[4][0], ), ), i[2][2], ), ), ), -i[1][4], ), ), ), -i[0][3], ), e( t( t( e( t( e( t( r(i[3][2], i[4][3]), r(-i[3][3], i[4][2]), ), i[2][1], ), t( e( t( r(i[3][1], i[4][3]), r( -i[3][3], i[4][1], ), ), -i[2][2], ), e( t( r(i[3][1], i[4][2]), r( -i[3][2], i[4][1], ), ), i[2][3], ), ), ), i[1][0], ), e( t( e( t( r(i[3][2], i[4][3]), r(-i[3][3], i[4][2]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][3]), r( -i[3][3], i[4][0], ), ), -i[2][2], ), e( t( r(i[3][0], i[4][2]), r( -i[3][2], i[4][0], ), ), i[2][3], ), ), ), -i[1][1], ), ), t( e( t( e( t( r(i[3][1], i[4][3]), r(-i[3][3], i[4][1]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][3]), r( -i[3][3], i[4][0], ), ), -i[2][1], ), e( t( r(i[3][0], i[4][1]), r( -i[3][1], i[4][0], ), ), i[2][3], ), ), ), i[1][2], ), e( t( e( t( r(i[3][1], i[4][2]), r(-i[3][2], i[4][1]), ), i[2][0], ), t( e( t( r(i[3][0], i[4][2]), r( -i[3][2], i[4][0], ), ), -i[2][1], ), e( t( r(i[3][0], i[4][1]), r( -i[3][1], i[4][0], ), ), i[2][2], ), ), ), -i[1][3], ), ), ), i[0][4], ), ), ), ), ); }; } function f(t) { return ( 2 === t ? s : 3 === t ? l : 4 === t ? c : 5 === t ? u : void 0 )(i, a, n, o); } var h = [ function () { return [0]; }, function (t) { return [t[0][0]]; }, ]; function p(t, e, r, n, i, a, o, s) { return function (l) { switch (l.length) { case 0: return t(l); case 1: return e(l); case 2: return r(l); case 3: return n(l); case 4: return i(l); case 5: return a(l); } var c = o[l.length]; return ( c || (c = o[l.length] = s(l.length)), c(l) ); }; } !(function () { for (; h.length < 6; ) h.push(f(h.length)); e.exports = p.apply(void 0, h.concat([h, f])); for (var t = 0; t < h.length; ++t) e.exports[t] = h[t]; })(); }, { "robust-compress": 279, "robust-scale": 286, "robust-sum": 289, "two-product": 306, }, ], 281: [ function (t, e, r) { "use strict"; var n = t("two-product"), i = t("robust-sum"); e.exports = function (t, e) { for ( var r = n(t[0], e[0]), a = 1; a < t.length; ++a ) r = i(r, n(t[a], e[a])); return r; }; }, { "robust-sum": 289, "two-product": 306 }, ], 282: [ function (t, e, r) { "use strict"; var n = t("two-product"), i = t("robust-sum"), a = t("robust-subtract"), o = t("robust-scale"); function s(t) { return ( 3 === t ? l : 4 === t ? c : 5 === t ? u : f )(i, a, n, o); } function l(t, e, r, n) { return function (i, a, o) { var s = r(i[0], i[0]), l = n(s, a[0]), c = n(s, o[0]), u = r(a[0], a[0]), f = n(u, i[0]), h = n(u, o[0]), p = r(o[0], o[0]), d = n(p, i[0]), m = n(p, a[0]), g = t(e(m, h), e(f, l)), v = e(d, c), y = e(g, v); return y[y.length - 1]; }; } function c(t, e, r, n) { return function (i, a, o, s) { var l = t(r(i[0], i[0]), r(i[1], i[1])), c = n(l, a[0]), u = n(l, o[0]), f = n(l, s[0]), h = t(r(a[0], a[0]), r(a[1], a[1])), p = n(h, i[0]), d = n(h, o[0]), m = n(h, s[0]), g = t(r(o[0], o[0]), r(o[1], o[1])), v = n(g, i[0]), y = n(g, a[0]), x = n(g, s[0]), b = t(r(s[0], s[0]), r(s[1], s[1])), _ = n(b, i[0]), w = n(b, a[0]), T = n(b, o[0]), k = t( t( n(e(T, x), a[1]), t( n(e(w, m), -o[1]), n(e(y, d), s[1]), ), ), t( n(e(w, m), i[1]), t( n(e(_, f), -a[1]), n(e(p, c), s[1]), ), ), ), A = t( t( n(e(T, x), i[1]), t( n(e(_, f), -o[1]), n(e(v, u), s[1]), ), ), t( n(e(y, d), i[1]), t( n(e(v, u), -a[1]), n(e(p, c), o[1]), ), ), ), M = e(k, A); return M[M.length - 1]; }; } function u(t, e, r, n) { return function (i, a, o, s, l) { var c = t( r(i[0], i[0]), t(r(i[1], i[1]), r(i[2], i[2])), ), u = n(c, a[0]), f = n(c, o[0]), h = n(c, s[0]), p = n(c, l[0]), d = t( r(a[0], a[0]), t(r(a[1], a[1]), r(a[2], a[2])), ), m = n(d, i[0]), g = n(d, o[0]), v = n(d, s[0]), y = n(d, l[0]), x = t( r(o[0], o[0]), t(r(o[1], o[1]), r(o[2], o[2])), ), b = n(x, i[0]), _ = n(x, a[0]), w = n(x, s[0]), T = n(x, l[0]), k = t( r(s[0], s[0]), t(r(s[1], s[1]), r(s[2], s[2])), ), A = n(k, i[0]), M = n(k, a[0]), S = n(k, o[0]), E = n(k, l[0]), L = t( r(l[0], l[0]), t(r(l[1], l[1]), r(l[2], l[2])), ), C = n(L, i[0]), P = n(L, a[0]), I = n(L, o[0]), O = n(L, s[0]), z = t( t( t( n( t( n(e(O, E), o[1]), t( n(e(I, T), -s[1]), n(e(S, w), l[1]), ), ), a[2], ), t( n( t( n(e(O, E), a[1]), t( n(e(P, y), -s[1]), n(e(M, v), l[1]), ), ), -o[2], ), n( t( n(e(I, T), a[1]), t( n(e(P, y), -o[1]), n(e(_, g), l[1]), ), ), s[2], ), ), ), t( n( t( n(e(S, w), a[1]), t( n(e(M, v), -o[1]), n(e(_, g), s[1]), ), ), -l[2], ), t( n( t( n(e(O, E), a[1]), t( n(e(P, y), -s[1]), n(e(M, v), l[1]), ), ), i[2], ), n( t( n(e(O, E), i[1]), t( n(e(C, p), -s[1]), n(e(A, h), l[1]), ), ), -a[2], ), ), ), ), t( t( n( t( n(e(P, y), i[1]), t( n(e(C, p), -a[1]), n(e(m, u), l[1]), ), ), s[2], ), t( n( t( n(e(M, v), i[1]), t( n(e(A, h), -a[1]), n(e(m, u), s[1]), ), ), -l[2], ), n( t( n(e(S, w), a[1]), t( n(e(M, v), -o[1]), n(e(_, g), s[1]), ), ), i[2], ), ), ), t( n( t( n(e(S, w), i[1]), t( n(e(A, h), -o[1]), n(e(b, f), s[1]), ), ), -a[2], ), t( n( t( n(e(M, v), i[1]), t( n(e(A, h), -a[1]), n(e(m, u), s[1]), ), ), o[2], ), n( t( n(e(_, g), i[1]), t( n(e(b, f), -a[1]), n(e(m, u), o[1]), ), ), -s[2], ), ), ), ), ), D = t( t( t( n( t( n(e(O, E), o[1]), t( n(e(I, T), -s[1]), n(e(S, w), l[1]), ), ), i[2], ), n( t( n(e(O, E), i[1]), t( n(e(C, p), -s[1]), n(e(A, h), l[1]), ), ), -o[2], ), ), t( n( t( n(e(I, T), i[1]), t( n(e(C, p), -o[1]), n(e(b, f), l[1]), ), ), s[2], ), n( t( n(e(S, w), i[1]), t( n(e(A, h), -o[1]), n(e(b, f), s[1]), ), ), -l[2], ), ), ), t( t( n( t( n(e(I, T), a[1]), t( n(e(P, y), -o[1]), n(e(_, g), l[1]), ), ), i[2], ), n( t( n(e(I, T), i[1]), t( n(e(C, p), -o[1]), n(e(b, f), l[1]), ), ), -a[2], ), ), t( n( t( n(e(P, y), i[1]), t( n(e(C, p), -a[1]), n(e(m, u), l[1]), ), ), o[2], ), n( t( n(e(_, g), i[1]), t( n(e(b, f), -a[1]), n(e(m, u), o[1]), ), ), -l[2], ), ), ), ), R = e(z, D); return R[R.length - 1]; }; } function f(t, e, r, n) { return function (i, a, o, s, l, c) { var u = t( t(r(i[0], i[0]), r(i[1], i[1])), t(r(i[2], i[2]), r(i[3], i[3])), ), f = n(u, a[0]), h = n(u, o[0]), p = n(u, s[0]), d = n(u, l[0]), m = n(u, c[0]), g = t( t(r(a[0], a[0]), r(a[1], a[1])), t(r(a[2], a[2]), r(a[3], a[3])), ), v = n(g, i[0]), y = n(g, o[0]), x = n(g, s[0]), b = n(g, l[0]), _ = n(g, c[0]), w = t( t(r(o[0], o[0]), r(o[1], o[1])), t(r(o[2], o[2]), r(o[3], o[3])), ), T = n(w, i[0]), k = n(w, a[0]), A = n(w, s[0]), M = n(w, l[0]), S = n(w, c[0]), E = t( t(r(s[0], s[0]), r(s[1], s[1])), t(r(s[2], s[2]), r(s[3], s[3])), ), L = n(E, i[0]), C = n(E, a[0]), P = n(E, o[0]), I = n(E, l[0]), O = n(E, c[0]), z = t( t(r(l[0], l[0]), r(l[1], l[1])), t(r(l[2], l[2]), r(l[3], l[3])), ), D = n(z, i[0]), R = n(z, a[0]), F = n(z, o[0]), B = n(z, s[0]), N = n(z, c[0]), j = t( t(r(c[0], c[0]), r(c[1], c[1])), t(r(c[2], c[2]), r(c[3], c[3])), ), U = n(j, i[0]), V = n(j, a[0]), H = n(j, o[0]), q = n(j, s[0]), G = n(j, l[0]), Y = t( t( t( n( t( t( n( t( n(e(G, N), s[1]), t( n(e(q, O), -l[1]), n(e(B, I), c[1]), ), ), o[2], ), n( t( n(e(G, N), o[1]), t( n(e(H, S), -l[1]), n(e(F, M), c[1]), ), ), -s[2], ), ), t( n( t( n(e(q, O), o[1]), t( n(e(H, S), -s[1]), n(e(P, A), c[1]), ), ), l[2], ), n( t( n(e(B, I), o[1]), t( n(e(F, M), -s[1]), n(e(P, A), l[1]), ), ), -c[2], ), ), ), a[3], ), t( n( t( t( n( t( n(e(G, N), s[1]), t( n(e(q, O), -l[1]), n(e(B, I), c[1]), ), ), a[2], ), n( t( n(e(G, N), a[1]), t( n(e(V, _), -l[1]), n(e(R, b), c[1]), ), ), -s[2], ), ), t( n( t( n(e(q, O), a[1]), t( n(e(V, _), -s[1]), n(e(C, x), c[1]), ), ), l[2], ), n( t( n(e(B, I), a[1]), t( n(e(R, b), -s[1]), n(e(C, x), l[1]), ), ), -c[2], ), ), ), -o[3], ), n( t( t( n( t( n(e(G, N), o[1]), t( n(e(H, S), -l[1]), n(e(F, M), c[1]), ), ), a[2], ), n( t( n(e(G, N), a[1]), t( n(e(V, _), -l[1]), n(e(R, b), c[1]), ), ), -o[2], ), ), t( n( t( n(e(H, S), a[1]), t( n(e(V, _), -o[1]), n(e(k, y), c[1]), ), ), l[2], ), n( t( n(e(F, M), a[1]), t( n(e(R, b), -o[1]), n(e(k, y), l[1]), ), ), -c[2], ), ), ), s[3], ), ), ), t( t( n( t( t( n( t( n(e(q, O), o[1]), t( n(e(H, S), -s[1]), n(e(P, A), c[1]), ), ), a[2], ), n( t( n(e(q, O), a[1]), t( n(e(V, _), -s[1]), n(e(C, x), c[1]), ), ), -o[2], ), ), t( n( t( n(e(H, S), a[1]), t( n(e(V, _), -o[1]), n(e(k, y), c[1]), ), ), s[2], ), n( t( n(e(P, A), a[1]), t( n(e(C, x), -o[1]), n(e(k, y), s[1]), ), ), -c[2], ), ), ), -l[3], ), n( t( t( n( t( n(e(B, I), o[1]), t( n(e(F, M), -s[1]), n(e(P, A), l[1]), ), ), a[2], ), n( t( n(e(B, I), a[1]), t( n(e(R, b), -s[1]), n(e(C, x), l[1]), ), ), -o[2], ), ), t( n( t( n(e(F, M), a[1]), t( n(e(R, b), -o[1]), n(e(k, y), l[1]), ), ), s[2], ), n( t( n(e(P, A), a[1]), t( n(e(C, x), -o[1]), n(e(k, y), s[1]), ), ), -l[2], ), ), ), c[3], ), ), t( n( t( t( n( t( n(e(G, N), s[1]), t( n(e(q, O), -l[1]), n(e(B, I), c[1]), ), ), a[2], ), n( t( n(e(G, N), a[1]), t( n(e(V, _), -l[1]), n(e(R, b), c[1]), ), ), -s[2], ), ), t( n( t( n(e(q, O), a[1]), t( n(e(V, _), -s[1]), n(e(C, x), c[1]), ), ), l[2], ), n( t( n(e(B, I), a[1]), t( n(e(R, b), -s[1]), n(e(C, x), l[1]), ), ), -c[2], ), ), ), i[3], ), n( t( t( n( t( n(e(G, N), s[1]), t( n(e(q, O), -l[1]), n(e(B, I), c[1]), ), ), i[2], ), n( t( n(e(G, N), i[1]), t( n(e(U, m), -l[1]), n(e(D, d), c[1]), ), ), -s[2], ), ), t( n( t( n(e(q, O), i[1]), t( n(e(U, m), -s[1]), n(e(L, p), c[1]), ), ), l[2], ), n( t( n(e(B, I), i[1]), t( n(e(D, d), -s[1]), n(e(L, p), l[1]), ), ), -c[2], ), ), ), -a[3], ), ), ), ), t( t( t( n( t( t( n( t( n(e(G, N), a[1]), t( n(e(V, _), -l[1]), n(e(R, b), c[1]), ), ), i[2], ), n( t( n(e(G, N), i[1]), t( n(e(U, m), -l[1]), n(e(D, d), c[1]), ), ), -a[2], ), ), t( n( t( n(e(V, _), i[1]), t( n(e(U, m), -a[1]), n(e(v, f), c[1]), ), ), l[2], ), n( t( n(e(R, b), i[1]), t( n(e(D, d), -a[1]), n(e(v, f), l[1]), ), ), -c[2], ), ), ), s[3], ), n( t( t( n( t( n(e(q, O), a[1]), t( n(e(V, _), -s[1]), n(e(C, x), c[1]), ), ), i[2], ), n( t( n(e(q, O), i[1]), t( n(e(U, m), -s[1]), n(e(L, p), c[1]), ), ), -a[2], ), ), t( n( t( n(e(V, _), i[1]), t( n(e(U, m), -a[1]), n(e(v, f), c[1]), ), ), s[2], ), n( t( n(e(C, x), i[1]), t( n(e(L, p), -a[1]), n(e(v, f), s[1]), ), ), -c[2], ), ), ), -l[3], ), ), t( n( t( t( n( t( n(e(B, I), a[1]), t( n(e(R, b), -s[1]), n(e(C, x), l[1]), ), ), i[2], ), n( t( n(e(B, I), i[1]), t( n(e(D, d), -s[1]), n(e(L, p), l[1]), ), ), -a[2], ), ), t( n( t( n(e(R, b), i[1]), t( n(e(D, d), -a[1]), n(e(v, f), l[1]), ), ), s[2], ), n( t( n(e(C, x), i[1]), t( n(e(L, p), -a[1]), n(e(v, f), s[1]), ), ), -l[2], ), ), ), c[3], ), n( t( t( n( t( n(e(q, O), o[1]), t( n(e(H, S), -s[1]), n(e(P, A), c[1]), ), ), a[2], ), n( t( n(e(q, O), a[1]), t( n(e(V, _), -s[1]), n(e(C, x), c[1]), ), ), -o[2], ), ), t( n( t( n(e(H, S), a[1]), t( n(e(V, _), -o[1]), n(e(k, y), c[1]), ), ), s[2], ), n( t( n(e(P, A), a[1]), t( n(e(C, x), -o[1]), n(e(k, y), s[1]), ), ), -c[2], ), ), ), i[3], ), ), ), t( t( n( t( t( n( t( n(e(q, O), o[1]), t( n(e(H, S), -s[1]), n(e(P, A), c[1]), ), ), i[2], ), n( t( n(e(q, O), i[1]), t( n(e(U, m), -s[1]), n(e(L, p), c[1]), ), ), -o[2], ), ), t( n( t( n(e(H, S), i[1]), t( n(e(U, m), -o[1]), n(e(T, h), c[1]), ), ), s[2], ), n( t( n(e(P, A), i[1]), t( n(e(L, p), -o[1]), n(e(T, h), s[1]), ), ), -c[2], ), ), ), -a[3], ), n( t( t( n( t( n(e(q, O), a[1]), t( n(e(V, _), -s[1]), n(e(C, x), c[1]), ), ), i[2], ), n( t( n(e(q, O), i[1]), t( n(e(U, m), -s[1]), n(e(L, p), c[1]), ), ), -a[2], ), ), t( n( t( n(e(V, _), i[1]), t( n(e(U, m), -a[1]), n(e(v, f), c[1]), ), ), s[2], ), n( t( n(e(C, x), i[1]), t( n(e(L, p), -a[1]), n(e(v, f), s[1]), ), ), -c[2], ), ), ), o[3], ), ), t( n( t( t( n( t( n(e(H, S), a[1]), t( n(e(V, _), -o[1]), n(e(k, y), c[1]), ), ), i[2], ), n( t( n(e(H, S), i[1]), t( n(e(U, m), -o[1]), n(e(T, h), c[1]), ), ), -a[2], ), ), t( n( t( n(e(V, _), i[1]), t( n(e(U, m), -a[1]), n(e(v, f), c[1]), ), ), o[2], ), n( t( n(e(k, y), i[1]), t( n(e(T, h), -a[1]), n(e(v, f), o[1]), ), ), -c[2], ), ), ), -s[3], ), n( t( t( n( t( n(e(P, A), a[1]), t( n(e(C, x), -o[1]), n(e(k, y), s[1]), ), ), i[2], ), n( t( n(e(P, A), i[1]), t( n(e(L, p), -o[1]), n(e(T, h), s[1]), ), ), -a[2], ), ), t( n( t( n(e(C, x), i[1]), t( n(e(L, p), -a[1]), n(e(v, f), s[1]), ), ), o[2], ), n( t( n(e(k, y), i[1]), t( n(e(T, h), -a[1]), n(e(v, f), o[1]), ), ), -s[2], ), ), ), c[3], ), ), ), ), ), W = t( t( t( n( t( t( n( t( n(e(G, N), s[1]), t( n(e(q, O), -l[1]), n(e(B, I), c[1]), ), ), o[2], ), n( t( n(e(G, N), o[1]), t( n(e(H, S), -l[1]), n(e(F, M), c[1]), ), ), -s[2], ), ), t( n( t( n(e(q, O), o[1]), t( n(e(H, S), -s[1]), n(e(P, A), c[1]), ), ), l[2], ), n( t( n(e(B, I), o[1]), t( n(e(F, M), -s[1]), n(e(P, A), l[1]), ), ), -c[2], ), ), ), i[3], ), t( n( t( t( n( t( n(e(G, N), s[1]), t( n(e(q, O), -l[1]), n(e(B, I), c[1]), ), ), i[2], ), n( t( n(e(G, N), i[1]), t( n(e(U, m), -l[1]), n(e(D, d), c[1]), ), ), -s[2], ), ), t( n( t( n(e(q, O), i[1]), t( n(e(U, m), -s[1]), n(e(L, p), c[1]), ), ), l[2], ), n( t( n(e(B, I), i[1]), t( n(e(D, d), -s[1]), n(e(L, p), l[1]), ), ), -c[2], ), ), ), -o[3], ), n( t( t( n( t( n(e(G, N), o[1]), t( n(e(H, S), -l[1]), n(e(F, M), c[1]), ), ), i[2], ), n( t( n(e(G, N), i[1]), t( n(e(U, m), -l[1]), n(e(D, d), c[1]), ), ), -o[2], ), ), t( n( t( n(e(H, S), i[1]), t( n(e(U, m), -o[1]), n(e(T, h), c[1]), ), ), l[2], ), n( t( n(e(F, M), i[1]), t( n(e(D, d), -o[1]), n(e(T, h), l[1]), ), ), -c[2], ), ), ), s[3], ), ), ), t( t( n( t( t( n( t( n(e(q, O), o[1]), t( n(e(H, S), -s[1]), n(e(P, A), c[1]), ), ), i[2], ), n( t( n(e(q, O), i[1]), t( n(e(U, m), -s[1]), n(e(L, p), c[1]), ), ), -o[2], ), ), t( n( t( n(e(H, S), i[1]), t( n(e(U, m), -o[1]), n(e(T, h), c[1]), ), ), s[2], ), n( t( n(e(P, A), i[1]), t( n(e(L, p), -o[1]), n(e(T, h), s[1]), ), ), -c[2], ), ), ), -l[3], ), n( t( t( n( t( n(e(B, I), o[1]), t( n(e(F, M), -s[1]), n(e(P, A), l[1]), ), ), i[2], ), n( t( n(e(B, I), i[1]), t( n(e(D, d), -s[1]), n(e(L, p), l[1]), ), ), -o[2], ), ), t( n( t( n(e(F, M), i[1]), t( n(e(D, d), -o[1]), n(e(T, h), l[1]), ), ), s[2], ), n( t( n(e(P, A), i[1]), t( n(e(L, p), -o[1]), n(e(T, h), s[1]), ), ), -l[2], ), ), ), c[3], ), ), t( n( t( t( n( t( n(e(G, N), o[1]), t( n(e(H, S), -l[1]), n(e(F, M), c[1]), ), ), a[2], ), n( t( n(e(G, N), a[1]), t( n(e(V, _), -l[1]), n(e(R, b), c[1]), ), ), -o[2], ), ), t( n( t( n(e(H, S), a[1]), t( n(e(V, _), -o[1]), n(e(k, y), c[1]), ), ), l[2], ), n( t( n(e(F, M), a[1]), t( n(e(R, b), -o[1]), n(e(k, y), l[1]), ), ), -c[2], ), ), ), i[3], ), n( t( t( n( t( n(e(G, N), o[1]), t( n(e(H, S), -l[1]), n(e(F, M), c[1]), ), ), i[2], ), n( t( n(e(G, N), i[1]), t( n(e(U, m), -l[1]), n(e(D, d), c[1]), ), ), -o[2], ), ), t( n( t( n(e(H, S), i[1]), t( n(e(U, m), -o[1]), n(e(T, h), c[1]), ), ), l[2], ), n( t( n(e(F, M), i[1]), t( n(e(D, d), -o[1]), n(e(T, h), l[1]), ), ), -c[2], ), ), ), -a[3], ), ), ), ), t( t( t( n( t( t( n( t( n(e(G, N), a[1]), t( n(e(V, _), -l[1]), n(e(R, b), c[1]), ), ), i[2], ), n( t( n(e(G, N), i[1]), t( n(e(U, m), -l[1]), n(e(D, d), c[1]), ), ), -a[2], ), ), t( n( t( n(e(V, _), i[1]), t( n(e(U, m), -a[1]), n(e(v, f), c[1]), ), ), l[2], ), n( t( n(e(R, b), i[1]), t( n(e(D, d), -a[1]), n(e(v, f), l[1]), ), ), -c[2], ), ), ), o[3], ), n( t( t( n( t( n(e(H, S), a[1]), t( n(e(V, _), -o[1]), n(e(k, y), c[1]), ), ), i[2], ), n( t( n(e(H, S), i[1]), t( n(e(U, m), -o[1]), n(e(T, h), c[1]), ), ), -a[2], ), ), t( n( t( n(e(V, _), i[1]), t( n(e(U, m), -a[1]), n(e(v, f), c[1]), ), ), o[2], ), n( t( n(e(k, y), i[1]), t( n(e(T, h), -a[1]), n(e(v, f), o[1]), ), ), -c[2], ), ), ), -l[3], ), ), t( n( t( t( n( t( n(e(F, M), a[1]), t( n(e(R, b), -o[1]), n(e(k, y), l[1]), ), ), i[2], ), n( t( n(e(F, M), i[1]), t( n(e(D, d), -o[1]), n(e(T, h), l[1]), ), ), -a[2], ), ), t( n( t( n(e(R, b), i[1]), t( n(e(D, d), -a[1]), n(e(v, f), l[1]), ), ), o[2], ), n( t( n(e(k, y), i[1]), t( n(e(T, h), -a[1]), n(e(v, f), o[1]), ), ), -l[2], ), ), ), c[3], ), n( t( t( n( t( n(e(B, I), o[1]), t( n(e(F, M), -s[1]), n(e(P, A), l[1]), ), ), a[2], ), n( t( n(e(B, I), a[1]), t( n(e(R, b), -s[1]), n(e(C, x), l[1]), ), ), -o[2], ), ), t( n( t( n(e(F, M), a[1]), t( n(e(R, b), -o[1]), n(e(k, y), l[1]), ), ), s[2], ), n( t( n(e(P, A), a[1]), t( n(e(C, x), -o[1]), n(e(k, y), s[1]), ), ), -l[2], ), ), ), i[3], ), ), ), t( t( n( t( t( n( t( n(e(B, I), o[1]), t( n(e(F, M), -s[1]), n(e(P, A), l[1]), ), ), i[2], ), n( t( n(e(B, I), i[1]), t( n(e(D, d), -s[1]), n(e(L, p), l[1]), ), ), -o[2], ), ), t( n( t( n(e(F, M), i[1]), t( n(e(D, d), -o[1]), n(e(T, h), l[1]), ), ), s[2], ), n( t( n(e(P, A), i[1]), t( n(e(L, p), -o[1]), n(e(T, h), s[1]), ), ), -l[2], ), ), ), -a[3], ), n( t( t( n( t( n(e(B, I), a[1]), t( n(e(R, b), -s[1]), n(e(C, x), l[1]), ), ), i[2], ), n( t( n(e(B, I), i[1]), t( n(e(D, d), -s[1]), n(e(L, p), l[1]), ), ), -a[2], ), ), t( n( t( n(e(R, b), i[1]), t( n(e(D, d), -a[1]), n(e(v, f), l[1]), ), ), s[2], ), n( t( n(e(C, x), i[1]), t( n(e(L, p), -a[1]), n(e(v, f), s[1]), ), ), -l[2], ), ), ), o[3], ), ), t( n( t( t( n( t( n(e(F, M), a[1]), t( n(e(R, b), -o[1]), n(e(k, y), l[1]), ), ), i[2], ), n( t( n(e(F, M), i[1]), t( n(e(D, d), -o[1]), n(e(T, h), l[1]), ), ), -a[2], ), ), t( n( t( n(e(R, b), i[1]), t( n(e(D, d), -a[1]), n(e(v, f), l[1]), ), ), o[2], ), n( t( n(e(k, y), i[1]), t( n(e(T, h), -a[1]), n(e(v, f), o[1]), ), ), -l[2], ), ), ), -s[3], ), n( t( t( n( t( n(e(P, A), a[1]), t( n(e(C, x), -o[1]), n(e(k, y), s[1]), ), ), i[2], ), n( t( n(e(P, A), i[1]), t( n(e(L, p), -o[1]), n(e(T, h), s[1]), ), ), -a[2], ), ), t( n( t( n(e(C, x), i[1]), t( n(e(L, p), -a[1]), n(e(v, f), s[1]), ), ), o[2], ), n( t( n(e(k, y), i[1]), t( n(e(T, h), -a[1]), n(e(v, f), o[1]), ), ), -s[2], ), ), ), l[3], ), ), ), ), ), Z = e(Y, W); return Z[Z.length - 1]; }; } var h = [ function () { return 0; }, function () { return 0; }, function () { return 0; }, ]; function p(t) { var e = h[t.length]; return ( e || (e = h[t.length] = s(t.length)), e.apply(void 0, t) ); } function d(t, e, r, n, i, a, o, s) { return function (e, r, l, c, u, f) { switch (arguments.length) { case 0: case 1: return 0; case 2: return n(e, r); case 3: return i(e, r, l); case 4: return a(e, r, l, c); case 5: return o(e, r, l, c, u); case 6: return s(e, r, l, c, u, f); } for ( var h = new Array(arguments.length), p = 0; p < arguments.length; ++p ) h[p] = arguments[p]; return t(h); }; } !(function () { for (; h.length <= 6; ) h.push(s(h.length)); e.exports = d.apply(void 0, [p].concat(h)); for (var t = 0; t <= 6; ++t) e.exports[t] = h[t]; })(); }, { "robust-scale": 286, "robust-subtract": 288, "robust-sum": 289, "two-product": 306, }, ], 283: [ function (t, e, r) { "use strict"; var n = t("robust-determinant"); function i(t) { var e = 2 === t ? a : 3 === t ? o : 4 === t ? s : 5 === t ? l : c; return e(t < 6 ? n[t] : n); } function a(t) { return function (e, r) { return [ t([ [+r[0], +e[0][1]], [+r[1], +e[1][1]], ]), t([ [+e[0][0], +r[0]], [+e[1][0], +r[1]], ]), t(e), ]; }; } function o(t) { return function (e, r) { return [ t([ [+r[0], +e[0][1], +e[0][2]], [+r[1], +e[1][1], +e[1][2]], [+r[2], +e[2][1], +e[2][2]], ]), t([ [+e[0][0], +r[0], +e[0][2]], [+e[1][0], +r[1], +e[1][2]], [+e[2][0], +r[2], +e[2][2]], ]), t([ [+e[0][0], +e[0][1], +r[0]], [+e[1][0], +e[1][1], +r[1]], [+e[2][0], +e[2][1], +r[2]], ]), t(e), ]; }; } function s(t) { return function (e, r) { return [ t([ [+r[0], +e[0][1], +e[0][2], +e[0][3]], [+r[1], +e[1][1], +e[1][2], +e[1][3]], [+r[2], +e[2][1], +e[2][2], +e[2][3]], [+r[3], +e[3][1], +e[3][2], +e[3][3]], ]), t([ [+e[0][0], +r[0], +e[0][2], +e[0][3]], [+e[1][0], +r[1], +e[1][2], +e[1][3]], [+e[2][0], +r[2], +e[2][2], +e[2][3]], [+e[3][0], +r[3], +e[3][2], +e[3][3]], ]), t([ [+e[0][0], +e[0][1], +r[0], +e[0][3]], [+e[1][0], +e[1][1], +r[1], +e[1][3]], [+e[2][0], +e[2][1], +r[2], +e[2][3]], [+e[3][0], +e[3][1], +r[3], +e[3][3]], ]), t([ [+e[0][0], +e[0][1], +e[0][2], +r[0]], [+e[1][0], +e[1][1], +e[1][2], +r[1]], [+e[2][0], +e[2][1], +e[2][2], +r[2]], [+e[3][0], +e[3][1], +e[3][2], +r[3]], ]), t(e), ]; }; } function l(t) { return function (e, r) { return [ t([ [ +r[0], +e[0][1], +e[0][2], +e[0][3], +e[0][4], ], [ +r[1], +e[1][1], +e[1][2], +e[1][3], +e[1][4], ], [ +r[2], +e[2][1], +e[2][2], +e[2][3], +e[2][4], ], [ +r[3], +e[3][1], +e[3][2], +e[3][3], +e[3][4], ], [ +r[4], +e[4][1], +e[4][2], +e[4][3], +e[4][4], ], ]), t([ [ +e[0][0], +r[0], +e[0][2], +e[0][3], +e[0][4], ], [ +e[1][0], +r[1], +e[1][2], +e[1][3], +e[1][4], ], [ +e[2][0], +r[2], +e[2][2], +e[2][3], +e[2][4], ], [ +e[3][0], +r[3], +e[3][2], +e[3][3], +e[3][4], ], [ +e[4][0], +r[4], +e[4][2], +e[4][3], +e[4][4], ], ]), t([ [ +e[0][0], +e[0][1], +r[0], +e[0][3], +e[0][4], ], [ +e[1][0], +e[1][1], +r[1], +e[1][3], +e[1][4], ], [ +e[2][0], +e[2][1], +r[2], +e[2][3], +e[2][4], ], [ +e[3][0], +e[3][1], +r[3], +e[3][3], +e[3][4], ], [ +e[4][0], +e[4][1], +r[4], +e[4][3], +e[4][4], ], ]), t([ [ +e[0][0], +e[0][1], +e[0][2], +r[0], +e[0][4], ], [ +e[1][0], +e[1][1], +e[1][2], +r[1], +e[1][4], ], [ +e[2][0], +e[2][1], +e[2][2], +r[2], +e[2][4], ], [ +e[3][0], +e[3][1], +e[3][2], +r[3], +e[3][4], ], [ +e[4][0], +e[4][1], +e[4][2], +r[4], +e[4][4], ], ]), t([ [ +e[0][0], +e[0][1], +e[0][2], +e[0][3], +r[0], ], [ +e[1][0], +e[1][1], +e[1][2], +e[1][3], +r[1], ], [ +e[2][0], +e[2][1], +e[2][2], +e[2][3], +r[2], ], [ +e[3][0], +e[3][1], +e[3][2], +e[3][3], +r[3], ], [ +e[4][0], +e[4][1], +e[4][2], +e[4][3], +r[4], ], ]), t(e), ]; }; } function c(t) { return function (e, r) { return [ t([ [ +r[0], +e[0][1], +e[0][2], +e[0][3], +e[0][4], +e[0][5], ], [ +r[1], +e[1][1], +e[1][2], +e[1][3], +e[1][4], +e[1][5], ], [ +r[2], +e[2][1], +e[2][2], +e[2][3], +e[2][4], +e[2][5], ], [ +r[3], +e[3][1], +e[3][2], +e[3][3], +e[3][4], +e[3][5], ], [ +r[4], +e[4][1], +e[4][2], +e[4][3], +e[4][4], +e[4][5], ], [ +r[5], +e[5][1], +e[5][2], +e[5][3], +e[5][4], +e[5][5], ], ]), t([ [ +e[0][0], +r[0], +e[0][2], +e[0][3], +e[0][4], +e[0][5], ], [ +e[1][0], +r[1], +e[1][2], +e[1][3], +e[1][4], +e[1][5], ], [ +e[2][0], +r[2], +e[2][2], +e[2][3], +e[2][4], +e[2][5], ], [ +e[3][0], +r[3], +e[3][2], +e[3][3], +e[3][4], +e[3][5], ], [ +e[4][0], +r[4], +e[4][2], +e[4][3], +e[4][4], +e[4][5], ], [ +e[5][0], +r[5], +e[5][2], +e[5][3], +e[5][4], +e[5][5], ], ]), t([ [ +e[0][0], +e[0][1], +r[0], +e[0][3], +e[0][4], +e[0][5], ], [ +e[1][0], +e[1][1], +r[1], +e[1][3], +e[1][4], +e[1][5], ], [ +e[2][0], +e[2][1], +r[2], +e[2][3], +e[2][4], +e[2][5], ], [ +e[3][0], +e[3][1], +r[3], +e[3][3], +e[3][4], +e[3][5], ], [ +e[4][0], +e[4][1], +r[4], +e[4][3], +e[4][4], +e[4][5], ], [ +e[5][0], +e[5][1], +r[5], +e[5][3], +e[5][4], +e[5][5], ], ]), t([ [ +e[0][0], +e[0][1], +e[0][2], +r[0], +e[0][4], +e[0][5], ], [ +e[1][0], +e[1][1], +e[1][2], +r[1], +e[1][4], +e[1][5], ], [ +e[2][0], +e[2][1], +e[2][2], +r[2], +e[2][4], +e[2][5], ], [ +e[3][0], +e[3][1], +e[3][2], +r[3], +e[3][4], +e[3][5], ], [ +e[4][0], +e[4][1], +e[4][2], +r[4], +e[4][4], +e[4][5], ], [ +e[5][0], +e[5][1], +e[5][2], +r[5], +e[5][4], +e[5][5], ], ]), t([ [ +e[0][0], +e[0][1], +e[0][2], +e[0][3], +r[0], +e[0][5], ], [ +e[1][0], +e[1][1], +e[1][2], +e[1][3], +r[1], +e[1][5], ], [ +e[2][0], +e[2][1], +e[2][2], +e[2][3], +r[2], +e[2][5], ], [ +e[3][0], +e[3][1], +e[3][2], +e[3][3], +r[3], +e[3][5], ], [ +e[4][0], +e[4][1], +e[4][2], +e[4][3], +r[4], +e[4][5], ], [ +e[5][0], +e[5][1], +e[5][2], +e[5][3], +r[5], +e[5][5], ], ]), t([ [ +e[0][0], +e[0][1], +e[0][2], +e[0][3], +e[0][4], +r[0], ], [ +e[1][0], +e[1][1], +e[1][2], +e[1][3], +e[1][4], +r[1], ], [ +e[2][0], +e[2][1], +e[2][2], +e[2][3], +e[2][4], +r[2], ], [ +e[3][0], +e[3][1], +e[3][2], +e[3][3], +e[3][4], +r[3], ], [ +e[4][0], +e[4][1], +e[4][2], +e[4][3], +e[4][4], +r[4], ], [ +e[5][0], +e[5][1], +e[5][2], +e[5][3], +e[5][4], +r[5], ], ]), t(e), ]; }; } var u = [ function () { return [[0]]; }, function (t, e) { return [[e[0]], [t[0][0]]]; }, ]; function f(t, e, r, n, i, a, o, s) { return function (l, c) { switch (l.length) { case 0: return t(l, c); case 1: return e(l, c); case 2: return r(l, c); case 3: return n(l, c); case 4: return i(l, c); case 5: return a(l, c); } var u = o[l.length]; return ( u || (u = o[l.length] = s(l.length)), u(l, c) ); }; } !(function () { for (; u.length < 6; ) u.push(i(u.length)); e.exports = f.apply(void 0, u.concat([u, i])); for (var t = 0; t < 6; ++t) e.exports[t] = u[t]; })(); }, { "robust-determinant": 280 }, ], 284: [ function (t, e, r) { "use strict"; var n = t("two-product"), i = t("robust-sum"), a = t("robust-scale"), o = t("robust-subtract"); function s(t, e, r, n) { return function (r, i, a) { var o = t( t(e(i[1], a[0]), e(-a[1], i[0])), t(e(r[1], i[0]), e(-i[1], r[0])), ), s = t(e(r[1], a[0]), e(-a[1], r[0])), l = n(o, s); return l[l.length - 1]; }; } function l(t, e, r, n) { return function (i, a, o, s) { var l = t( t( r( t(e(o[1], s[0]), e(-s[1], o[0])), a[2], ), t( r( t(e(a[1], s[0]), e(-s[1], a[0])), -o[2], ), r( t(e(a[1], o[0]), e(-o[1], a[0])), s[2], ), ), ), t( r( t(e(a[1], s[0]), e(-s[1], a[0])), i[2], ), t( r( t(e(i[1], s[0]), e(-s[1], i[0])), -a[2], ), r( t(e(i[1], a[0]), e(-a[1], i[0])), s[2], ), ), ), ), c = t( t( r( t(e(o[1], s[0]), e(-s[1], o[0])), i[2], ), t( r( t(e(i[1], s[0]), e(-s[1], i[0])), -o[2], ), r( t(e(i[1], o[0]), e(-o[1], i[0])), s[2], ), ), ), t( r( t(e(a[1], o[0]), e(-o[1], a[0])), i[2], ), t( r( t(e(i[1], o[0]), e(-o[1], i[0])), -a[2], ), r( t(e(i[1], a[0]), e(-a[1], i[0])), o[2], ), ), ), ), u = n(l, c); return u[u.length - 1]; }; } function c(t, e, r, n) { return function (i, a, o, s, l) { var c = t( t( t( r( t( r( t( e(s[1], l[0]), e(-l[1], s[0]), ), o[2], ), t( r( t( e(o[1], l[0]), e(-l[1], o[0]), ), -s[2], ), r( t( e(o[1], s[0]), e(-s[1], o[0]), ), l[2], ), ), ), a[3], ), t( r( t( r( t( e(s[1], l[0]), e(-l[1], s[0]), ), a[2], ), t( r( t( e(a[1], l[0]), e(-l[1], a[0]), ), -s[2], ), r( t( e(a[1], s[0]), e(-s[1], a[0]), ), l[2], ), ), ), -o[3], ), r( t( r( t( e(o[1], l[0]), e(-l[1], o[0]), ), a[2], ), t( r( t( e(a[1], l[0]), e(-l[1], a[0]), ), -o[2], ), r( t( e(a[1], o[0]), e(-o[1], a[0]), ), l[2], ), ), ), s[3], ), ), ), t( r( t( r( t( e(o[1], s[0]), e(-s[1], o[0]), ), a[2], ), t( r( t( e(a[1], s[0]), e(-s[1], a[0]), ), -o[2], ), r( t( e(a[1], o[0]), e(-o[1], a[0]), ), s[2], ), ), ), -l[3], ), t( r( t( r( t( e(s[1], l[0]), e(-l[1], s[0]), ), a[2], ), t( r( t( e(a[1], l[0]), e(-l[1], a[0]), ), -s[2], ), r( t( e(a[1], s[0]), e(-s[1], a[0]), ), l[2], ), ), ), i[3], ), r( t( r( t( e(s[1], l[0]), e(-l[1], s[0]), ), i[2], ), t( r( t( e(i[1], l[0]), e(-l[1], i[0]), ), -s[2], ), r( t( e(i[1], s[0]), e(-s[1], i[0]), ), l[2], ), ), ), -a[3], ), ), ), ), t( t( r( t( r( t( e(a[1], l[0]), e(-l[1], a[0]), ), i[2], ), t( r( t( e(i[1], l[0]), e(-l[1], i[0]), ), -a[2], ), r( t( e(i[1], a[0]), e(-a[1], i[0]), ), l[2], ), ), ), s[3], ), t( r( t( r( t( e(a[1], s[0]), e(-s[1], a[0]), ), i[2], ), t( r( t( e(i[1], s[0]), e(-s[1], i[0]), ), -a[2], ), r( t( e(i[1], a[0]), e(-a[1], i[0]), ), s[2], ), ), ), -l[3], ), r( t( r( t( e(o[1], s[0]), e(-s[1], o[0]), ), a[2], ), t( r( t( e(a[1], s[0]), e(-s[1], a[0]), ), -o[2], ), r( t( e(a[1], o[0]), e(-o[1], a[0]), ), s[2], ), ), ), i[3], ), ), ), t( r( t( r( t( e(o[1], s[0]), e(-s[1], o[0]), ), i[2], ), t( r( t( e(i[1], s[0]), e(-s[1], i[0]), ), -o[2], ), r( t( e(i[1], o[0]), e(-o[1], i[0]), ), s[2], ), ), ), -a[3], ), t( r( t( r( t( e(a[1], s[0]), e(-s[1], a[0]), ), i[2], ), t( r( t( e(i[1], s[0]), e(-s[1], i[0]), ), -a[2], ), r( t( e(i[1], a[0]), e(-a[1], i[0]), ), s[2], ), ), ), o[3], ), r( t( r( t( e(a[1], o[0]), e(-o[1], a[0]), ), i[2], ), t( r( t( e(i[1], o[0]), e(-o[1], i[0]), ), -a[2], ), r( t( e(i[1], a[0]), e(-a[1], i[0]), ), o[2], ), ), ), -s[3], ), ), ), ), ), u = t( t( t( r( t( r( t( e(s[1], l[0]), e(-l[1], s[0]), ), o[2], ), t( r( t( e(o[1], l[0]), e(-l[1], o[0]), ), -s[2], ), r( t( e(o[1], s[0]), e(-s[1], o[0]), ), l[2], ), ), ), i[3], ), r( t( r( t( e(s[1], l[0]), e(-l[1], s[0]), ), i[2], ), t( r( t( e(i[1], l[0]), e(-l[1], i[0]), ), -s[2], ), r( t( e(i[1], s[0]), e(-s[1], i[0]), ), l[2], ), ), ), -o[3], ), ), t( r( t( r( t( e(o[1], l[0]), e(-l[1], o[0]), ), i[2], ), t( r( t( e(i[1], l[0]), e(-l[1], i[0]), ), -o[2], ), r( t( e(i[1], o[0]), e(-o[1], i[0]), ), l[2], ), ), ), s[3], ), r( t( r( t( e(o[1], s[0]), e(-s[1], o[0]), ), i[2], ), t( r( t( e(i[1], s[0]), e(-s[1], i[0]), ), -o[2], ), r( t( e(i[1], o[0]), e(-o[1], i[0]), ), s[2], ), ), ), -l[3], ), ), ), t( t( r( t( r( t( e(o[1], l[0]), e(-l[1], o[0]), ), a[2], ), t( r( t( e(a[1], l[0]), e(-l[1], a[0]), ), -o[2], ), r( t( e(a[1], o[0]), e(-o[1], a[0]), ), l[2], ), ), ), i[3], ), r( t( r( t( e(o[1], l[0]), e(-l[1], o[0]), ), i[2], ), t( r( t( e(i[1], l[0]), e(-l[1], i[0]), ), -o[2], ), r( t( e(i[1], o[0]), e(-o[1], i[0]), ), l[2], ), ), ), -a[3], ), ), t( r( t( r( t( e(a[1], l[0]), e(-l[1], a[0]), ), i[2], ), t( r( t( e(i[1], l[0]), e(-l[1], i[0]), ), -a[2], ), r( t( e(i[1], a[0]), e(-a[1], i[0]), ), l[2], ), ), ), o[3], ), r( t( r( t( e(a[1], o[0]), e(-o[1], a[0]), ), i[2], ), t( r( t( e(i[1], o[0]), e(-o[1], i[0]), ), -a[2], ), r( t( e(i[1], a[0]), e(-a[1], i[0]), ), o[2], ), ), ), -l[3], ), ), ), ), f = n(c, u); return f[f.length - 1]; }; } function u(t) { return (3 === t ? s : 4 === t ? l : c)( i, n, a, o, ); } var f = u(3), h = u(4), p = [ function () { return 0; }, function () { return 0; }, function (t, e) { return e[0] - t[0]; }, function (t, e, r) { var n, i = (t[1] - r[1]) * (e[0] - r[0]), a = (t[0] - r[0]) * (e[1] - r[1]), o = i - a; if (i > 0) { if (a <= 0) return o; n = i + a; } else { if (!(i < 0)) return o; if (a >= 0) return o; n = -(i + a); } var s = 33306690738754716e-32 * n; return o >= s || o <= -s ? o : f(t, e, r); }, function (t, e, r, n) { var i = t[0] - n[0], a = e[0] - n[0], o = r[0] - n[0], s = t[1] - n[1], l = e[1] - n[1], c = r[1] - n[1], u = t[2] - n[2], f = e[2] - n[2], p = r[2] - n[2], d = a * c, m = o * l, g = o * s, v = i * c, y = i * l, x = a * s, b = u * (d - m) + f * (g - v) + p * (y - x), _ = 7771561172376103e-31 * ((Math.abs(d) + Math.abs(m)) * Math.abs(u) + (Math.abs(g) + Math.abs(v)) * Math.abs(f) + (Math.abs(y) + Math.abs(x)) * Math.abs(p)); return b > _ || -b > _ ? b : h(t, e, r, n); }, ]; function d(t) { var e = p[t.length]; return ( e || (e = p[t.length] = u(t.length)), e.apply(void 0, t) ); } function m(t, e, r, n, i, a, o) { return function (e, r, s, l, c) { switch (arguments.length) { case 0: case 1: return 0; case 2: return n(e, r); case 3: return i(e, r, s); case 4: return a(e, r, s, l); case 5: return o(e, r, s, l, c); } for ( var u = new Array(arguments.length), f = 0; f < arguments.length; ++f ) u[f] = arguments[f]; return t(u); }; } !(function () { for (; p.length <= 5; ) p.push(u(p.length)); e.exports = m.apply(void 0, [d].concat(p)); for (var t = 0; t <= 5; ++t) e.exports[t] = p[t]; })(); }, { "robust-scale": 286, "robust-subtract": 288, "robust-sum": 289, "two-product": 306, }, ], 285: [ function (t, e, r) { "use strict"; var n = t("robust-sum"), i = t("robust-scale"); e.exports = function (t, e) { if (1 === t.length) return i(e, t[0]); if (1 === e.length) return i(t, e[0]); if (0 === t.length || 0 === e.length) return [0]; var r = [0]; if (t.length < e.length) for (var a = 0; a < t.length; ++a) r = n(r, i(e, t[a])); else for (a = 0; a < e.length; ++a) r = n(r, i(t, e[a])); return r; }; }, { "robust-scale": 286, "robust-sum": 289 }, ], 286: [ function (t, e, r) { "use strict"; var n = t("two-product"), i = t("two-sum"); e.exports = function (t, e) { var r = t.length; if (1 === r) { var a = n(t[0], e); return a[0] ? a : [a[1]]; } var o = new Array(2 * r), s = [0.1, 0.1], l = [0.1, 0.1], c = 0; n(t[0], e, s), s[0] && (o[c++] = s[0]); for (var u = 1; u < r; ++u) { n(t[u], e, l); var f = s[1]; i(f, l[0], s), s[0] && (o[c++] = s[0]); var h = l[1], p = s[1], d = h + p, m = p - (d - h); (s[1] = d), m && (o[c++] = m); } s[1] && (o[c++] = s[1]); 0 === c && (o[c++] = 0); return (o.length = c), o; }; }, { "two-product": 306, "two-sum": 307 }, ], 287: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, i) { var a = n(t, r, i), o = n(e, r, i); if ((a > 0 && o > 0) || (a < 0 && o < 0)) return !1; var s = n(r, t, e), l = n(i, t, e); if ((s > 0 && l > 0) || (s < 0 && l < 0)) return !1; if (0 === a && 0 === o && 0 === s && 0 === l) return (function (t, e, r, n) { for (var i = 0; i < 2; ++i) { var a = t[i], o = e[i], s = Math.min(a, o), l = Math.max(a, o), c = r[i], u = n[i], f = Math.min(c, u); if (Math.max(c, u) < s || l < f) return !1; } return !0; })(t, e, r, i); return !0; }; var n = t("robust-orientation")[3]; }, { "robust-orientation": 284 }, ], 288: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r = 0 | t.length, n = 0 | e.length; if (1 === r && 1 === n) return (function (t, e) { var r = t + e, n = r - t, i = t - (r - n) + (e - n); if (i) return [i, r]; return [r]; })(t[0], -e[0]); var i, a, o = new Array(r + n), s = 0, l = 0, c = 0, u = Math.abs, f = t[l], h = u(f), p = -e[c], d = u(p); h < d ? ((a = f), (l += 1) < r && ((f = t[l]), (h = u(f)))) : ((a = p), (c += 1) < n && ((p = -e[c]), (d = u(p)))); (l < r && h < d) || c >= n ? ((i = f), (l += 1) < r && ((f = t[l]), (h = u(f)))) : ((i = p), (c += 1) < n && ((p = -e[c]), (d = u(p)))); var m, g, v = i + a, y = v - i, x = a - y, b = x, _ = v; for (; l < r && c < n; ) h < d ? ((i = f), (l += 1) < r && ((f = t[l]), (h = u(f)))) : ((i = p), (c += 1) < n && ((p = -e[c]), (d = u(p)))), (x = (a = b) - (y = (v = i + a) - i)) && (o[s++] = x), (b = _ - ((m = _ + v) - (g = m - _)) + (v - g)), (_ = m); for (; l < r; ) (x = (a = b) - (y = (v = (i = f) + a) - i)) && (o[s++] = x), (b = _ - ((m = _ + v) - (g = m - _)) + (v - g)), (_ = m), (l += 1) < r && (f = t[l]); for (; c < n; ) (x = (a = b) - (y = (v = (i = p) + a) - i)) && (o[s++] = x), (b = _ - ((m = _ + v) - (g = m - _)) + (v - g)), (_ = m), (c += 1) < n && (p = -e[c]); b && (o[s++] = b); _ && (o[s++] = _); s || (o[s++] = 0); return (o.length = s), o; }; }, {}, ], 289: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r = 0 | t.length, n = 0 | e.length; if (1 === r && 1 === n) return (function (t, e) { var r = t + e, n = r - t, i = t - (r - n) + (e - n); if (i) return [i, r]; return [r]; })(t[0], e[0]); var i, a, o = new Array(r + n), s = 0, l = 0, c = 0, u = Math.abs, f = t[l], h = u(f), p = e[c], d = u(p); h < d ? ((a = f), (l += 1) < r && ((f = t[l]), (h = u(f)))) : ((a = p), (c += 1) < n && ((p = e[c]), (d = u(p)))); (l < r && h < d) || c >= n ? ((i = f), (l += 1) < r && ((f = t[l]), (h = u(f)))) : ((i = p), (c += 1) < n && ((p = e[c]), (d = u(p)))); var m, g, v = i + a, y = v - i, x = a - y, b = x, _ = v; for (; l < r && c < n; ) h < d ? ((i = f), (l += 1) < r && ((f = t[l]), (h = u(f)))) : ((i = p), (c += 1) < n && ((p = e[c]), (d = u(p)))), (x = (a = b) - (y = (v = i + a) - i)) && (o[s++] = x), (b = _ - ((m = _ + v) - (g = m - _)) + (v - g)), (_ = m); for (; l < r; ) (x = (a = b) - (y = (v = (i = f) + a) - i)) && (o[s++] = x), (b = _ - ((m = _ + v) - (g = m - _)) + (v - g)), (_ = m), (l += 1) < r && (f = t[l]); for (; c < n; ) (x = (a = b) - (y = (v = (i = p) + a) - i)) && (o[s++] = x), (b = _ - ((m = _ + v) - (g = m - _)) + (v - g)), (_ = m), (c += 1) < n && (p = e[c]); b && (o[s++] = b); _ && (o[s++] = _); s || (o[s++] = 0); return (o.length = s), o; }; }, {}, ], 290: [ function (t, e, r) { "use strict"; e.exports = function (t) { return i(n(t)); }; var n = t("boundary-cells"), i = t("reduce-simplicial-complex"); }, { "boundary-cells": 34, "reduce-simplicial-complex": 276, }, ], 291: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r, s) { (r = r || 0), void 0 === s && (s = (function (t) { for ( var e = t.length, r = 0, n = 0; n < e; ++n ) r = 0 | Math.max(r, t[n].length); return r - 1; })(t)); if (0 === t.length || s < 1) return { cells: [], vertexIds: [], vertexWeights: [], }; var l = (function (t, e) { for ( var r = t.length, n = i.mallocUint8(r), a = 0; a < r; ++a ) n[a] = (t[a] < e) | 0; return n; })(e, +r), c = (function (t, e) { for ( var r = t.length, o = (((e * (e + 1)) / 2) * r) | 0, s = i.mallocUint32(2 * o), l = 0, c = 0; c < r; ++c ) for ( var u = t[c], f = ((e = u.length), 0); f < e; ++f ) for (var h = 0; h < f; ++h) { var p = u[h], d = u[f]; (s[l++] = 0 | Math.min(p, d)), (s[l++] = 0 | Math.max(p, d)); } a(n(s, [(l / 2) | 0, 2])); var m = 2; for (c = 2; c < l; c += 2) (s[c - 2] === s[c] && s[c - 1] === s[c + 1]) || ((s[m++] = s[c]), (s[m++] = s[c + 1])); return n(s, [(m / 2) | 0, 2]); })(t, s), u = (function (t, e, r, a) { for ( var o = t.data, s = t.shape[0], l = i.mallocDouble(s), c = 0, u = 0; u < s; ++u ) { var f = o[2 * u], h = o[2 * u + 1]; if (r[f] !== r[h]) { var p = e[f], d = e[h]; (o[2 * c] = f), (o[2 * c + 1] = h), (l[c++] = (d - a) / (d - p)); } } return (t.shape[0] = c), n(l, [c]); })(c, e, l, +r), f = (function (t, e) { var r = i.mallocInt32(2 * e), n = t.shape[0], a = t.data; r[0] = 0; for (var o = 0, s = 0; s < n; ++s) { var l = a[2 * s]; if (l !== o) { for (r[2 * o + 1] = s; ++o < l; ) (r[2 * o] = s), (r[2 * o + 1] = s); r[2 * o] = s; } } r[2 * o + 1] = n; for (; ++o < e; ) r[2 * o] = r[2 * o + 1] = n; return r; })(c, 0 | e.length), h = o(s)(t, c.data, f, l), p = (function (t) { for ( var e = 0 | t.shape[0], r = t.data, n = new Array(e), i = 0; i < e; ++i ) n[i] = [r[2 * i], r[2 * i + 1]]; return n; })(c), d = [].slice.call(u.data, 0, u.shape[0]); return ( i.free(l), i.free(c.data), i.free(u.data), i.free(f), { cells: h, vertexIds: p, vertexWeights: d } ); }; var n = t("ndarray"), i = t("typedarray-pool"), a = t("ndarray-sort"), o = t("./lib/codegen"); }, { "./lib/codegen": 292, ndarray: 259, "ndarray-sort": 258, "typedarray-pool": 308, }, ], 292: [ function (t, e, r) { "use strict"; e.exports = function (t) { return n[t](); }; var n = [ function () { return function (t, e, r, n) { for (var i = t.length, a = 0; a < i; ++a) t[a].length; return []; }; }, function () { function t(t, e, r, n) { for ( var i = 0 | Math.min(r, n), a = 0 | Math.max(r, n), o = t[2 * i], s = t[2 * i + 1]; o < s; ) { var l = (o + s) >> 1, c = e[2 * l + 1]; if (c === a) return l; a < c ? (s = l) : (o = l + 1); } return o; } return function (e, r, n, i) { for ( var a = e.length, o = [], s = 0; s < a; ++s ) { var l = e[s]; if (2 === l.length) { var c = (i[l[0]] << 0) + (i[l[1]] << 1); if (0 === c || 3 === c) continue; switch (c) { case 0: break; case 1: o.push([t(n, r, l[0], l[1])]); break; case 2: o.push([t(n, r, l[1], l[0])]); } } } return o; }; }, function () { function t(t, e, r, n) { for ( var i = 0 | Math.min(r, n), a = 0 | Math.max(r, n), o = t[2 * i], s = t[2 * i + 1]; o < s; ) { var l = (o + s) >> 1, c = e[2 * l + 1]; if (c === a) return l; a < c ? (s = l) : (o = l + 1); } return o; } return function (e, r, n, i) { for ( var a = e.length, o = [], s = 0; s < a; ++s ) { var l = e[s], c = l.length; if (3 === c) { if ( 0 === (u = (i[l[0]] << 0) + (i[l[1]] << 1) + (i[l[2]] << 2)) || 7 === u ) continue; switch (u) { case 0: break; case 1: o.push([ t(n, r, l[0], l[2]), t(n, r, l[0], l[1]), ]); break; case 2: o.push([ t(n, r, l[1], l[0]), t(n, r, l[1], l[2]), ]); break; case 3: o.push([ t(n, r, l[0], l[2]), t(n, r, l[1], l[2]), ]); break; case 4: o.push([ t(n, r, l[2], l[1]), t(n, r, l[2], l[0]), ]); break; case 5: o.push([ t(n, r, l[2], l[1]), t(n, r, l[0], l[1]), ]); break; case 6: o.push([ t(n, r, l[1], l[0]), t(n, r, l[2], l[0]), ]); } } else if (2 === c) { var u; if ( 0 === (u = (i[l[0]] << 0) + (i[l[1]] << 1)) || 3 === u ) continue; switch (u) { case 0: break; case 1: o.push([t(n, r, l[0], l[1])]); break; case 2: o.push([t(n, r, l[1], l[0])]); } } } return o; }; }, function () { function t(t, e, r, n) { for ( var i = 0 | Math.min(r, n), a = 0 | Math.max(r, n), o = t[2 * i], s = t[2 * i + 1]; o < s; ) { var l = (o + s) >> 1, c = e[2 * l + 1]; if (c === a) return l; a < c ? (s = l) : (o = l + 1); } return o; } return function (e, r, n, i) { for ( var a = e.length, o = [], s = 0; s < a; ++s ) { var l = e[s], c = l.length; if (4 === c) { if ( 0 === (u = (i[l[0]] << 0) + (i[l[1]] << 1) + (i[l[2]] << 2) + (i[l[3]] << 3)) || 15 === u ) continue; switch (u) { case 0: break; case 1: o.push([ t(n, r, l[0], l[1]), t(n, r, l[0], l[2]), t(n, r, l[0], l[3]), ]); break; case 2: o.push([ t(n, r, l[1], l[2]), t(n, r, l[1], l[0]), t(n, r, l[1], l[3]), ]); break; case 3: o.push( [ t(n, r, l[1], l[2]), t(n, r, l[0], l[2]), t(n, r, l[0], l[3]), ], [ t(n, r, l[1], l[3]), t(n, r, l[1], l[2]), t(n, r, l[0], l[3]), ], ); break; case 4: o.push([ t(n, r, l[2], l[0]), t(n, r, l[2], l[1]), t(n, r, l[2], l[3]), ]); break; case 5: o.push( [ t(n, r, l[0], l[1]), t(n, r, l[2], l[1]), t(n, r, l[0], l[3]), ], [ t(n, r, l[2], l[1]), t(n, r, l[2], l[3]), t(n, r, l[0], l[3]), ], ); break; case 6: o.push( [ t(n, r, l[2], l[0]), t(n, r, l[1], l[0]), t(n, r, l[1], l[3]), ], [ t(n, r, l[2], l[3]), t(n, r, l[2], l[0]), t(n, r, l[1], l[3]), ], ); break; case 7: o.push([ t(n, r, l[0], l[3]), t(n, r, l[1], l[3]), t(n, r, l[2], l[3]), ]); break; case 8: o.push([ t(n, r, l[3], l[1]), t(n, r, l[3], l[0]), t(n, r, l[3], l[2]), ]); break; case 9: o.push( [ t(n, r, l[3], l[1]), t(n, r, l[0], l[1]), t(n, r, l[0], l[2]), ], [ t(n, r, l[3], l[2]), t(n, r, l[3], l[1]), t(n, r, l[0], l[2]), ], ); break; case 10: o.push( [ t(n, r, l[1], l[0]), t(n, r, l[3], l[0]), t(n, r, l[1], l[2]), ], [ t(n, r, l[3], l[0]), t(n, r, l[3], l[2]), t(n, r, l[1], l[2]), ], ); break; case 11: o.push([ t(n, r, l[1], l[2]), t(n, r, l[0], l[2]), t(n, r, l[3], l[2]), ]); break; case 12: o.push( [ t(n, r, l[3], l[0]), t(n, r, l[2], l[0]), t(n, r, l[2], l[1]), ], [ t(n, r, l[3], l[1]), t(n, r, l[3], l[0]), t(n, r, l[2], l[1]), ], ); break; case 13: o.push([ t(n, r, l[0], l[1]), t(n, r, l[2], l[1]), t(n, r, l[3], l[1]), ]); break; case 14: o.push([ t(n, r, l[2], l[0]), t(n, r, l[1], l[0]), t(n, r, l[3], l[0]), ]); } } else if (3 === c) { if ( 0 === (u = (i[l[0]] << 0) + (i[l[1]] << 1) + (i[l[2]] << 2)) || 7 === u ) continue; switch (u) { case 0: break; case 1: o.push([ t(n, r, l[0], l[2]), t(n, r, l[0], l[1]), ]); break; case 2: o.push([ t(n, r, l[1], l[0]), t(n, r, l[1], l[2]), ]); break; case 3: o.push([ t(n, r, l[0], l[2]), t(n, r, l[1], l[2]), ]); break; case 4: o.push([ t(n, r, l[2], l[1]), t(n, r, l[2], l[0]), ]); break; case 5: o.push([ t(n, r, l[2], l[1]), t(n, r, l[0], l[1]), ]); break; case 6: o.push([ t(n, r, l[1], l[0]), t(n, r, l[2], l[0]), ]); } } else if (2 === c) { var u; if ( 0 === (u = (i[l[0]] << 0) + (i[l[1]] << 1)) || 3 === u ) continue; switch (u) { case 0: break; case 1: o.push([t(n, r, l[0], l[1])]); break; case 2: o.push([t(n, r, l[1], l[0])]); } } } return o; }; }, ]; }, {}, ], 293: [ function (t, e, r) { "use strict"; var n = t("bit-twiddle"), i = t("union-find"); function a(t, e) { var r = t.length, n = t.length - e.length, i = Math.min; if (n) return n; switch (r) { case 0: return 0; case 1: return t[0] - e[0]; case 2: return ( (s = t[0] + t[1] - e[0] - e[1]) || i(t[0], t[1]) - i(e[0], e[1]) ); case 3: var a = t[0] + t[1], o = e[0] + e[1]; if ((s = a + t[2] - (o + e[2]))) return s; var s, l = i(t[0], t[1]), c = i(e[0], e[1]); return ( (s = i(l, t[2]) - i(c, e[2])) || i(l + t[2], a) - i(c + e[2], o) ); default: var u = t.slice(0); u.sort(); var f = e.slice(0); f.sort(); for (var h = 0; h < r; ++h) if ((n = u[h] - f[h])) return n; return 0; } } function o(t, e) { return a(t[0], e[0]); } function s(t, e) { if (e) { for ( var r = t.length, n = new Array(r), i = 0; i < r; ++i ) n[i] = [t[i], e[i]]; n.sort(o); for (i = 0; i < r; ++i) (t[i] = n[i][0]), (e[i] = n[i][1]); return t; } return t.sort(a), t; } function l(t) { if (0 === t.length) return []; for ( var e = 1, r = t.length, n = 1; n < r; ++n ) { var i = t[n]; if (a(i, t[n - 1])) { if (n === e) { e++; continue; } t[e++] = i; } } return (t.length = e), t; } function c(t, e) { for ( var r = 0, n = t.length - 1, i = -1; r <= n; ) { var o = (r + n) >> 1, s = a(t[o], e); s <= 0 ? (0 === s && (i = o), (r = o + 1)) : s > 0 && (n = o - 1); } return i; } function u(t, e) { for ( var r = new Array(t.length), i = 0, o = r.length; i < o; ++i ) r[i] = []; for ( var s = [], l = ((i = 0), e.length); i < l; ++i ) for ( var u = e[i], f = u.length, h = 1, p = 1 << f; h < p; ++h ) { s.length = n.popCount(h); for (var d = 0, m = 0; m < f; ++m) h & (1 << m) && (s[d++] = u[m]); var g = c(t, s); if (!(g < 0)) for ( ; r[g++].push(i), !( g >= t.length || 0 !== a(t[g], s) ); ); } return r; } function f(t, e) { if (e < 0) return []; for ( var r = [], i = (1 << (e + 1)) - 1, a = 0; a < t.length; ++a ) for ( var o = t[a], l = i; l < 1 << o.length; l = n.nextCombination(l) ) { for ( var c = new Array(e + 1), u = 0, f = 0; f < o.length; ++f ) l & (1 << f) && (c[u++] = o[f]); r.push(c); } return s(r); } (r.dimension = function (t) { for ( var e = 0, r = Math.max, n = 0, i = t.length; n < i; ++n ) e = r(e, t[n].length); return e - 1; }), (r.countVertices = function (t) { for ( var e = -1, r = Math.max, n = 0, i = t.length; n < i; ++n ) for ( var a = t[n], o = 0, s = a.length; o < s; ++o ) e = r(e, a[o]); return e + 1; }), (r.cloneCells = function (t) { for ( var e = new Array(t.length), r = 0, n = t.length; r < n; ++r ) e[r] = t[r].slice(0); return e; }), (r.compareCells = a), (r.normalize = s), (r.unique = l), (r.findCell = c), (r.incidence = u), (r.dual = function (t, e) { if (!e) return u(l(f(t, 0)), t); for ( var r = new Array(e), n = 0; n < e; ++n ) r[n] = []; n = 0; for (var i = t.length; n < i; ++n) for ( var a = t[n], o = 0, s = a.length; o < s; ++o ) r[a[o]].push(n); return r; }), (r.explode = function (t) { for ( var e = [], r = 0, n = t.length; r < n; ++r ) for ( var i = t[r], a = 0 | i.length, o = 1, l = 1 << a; o < l; ++o ) { for (var c = [], u = 0; u < a; ++u) (o >>> u) & 1 && c.push(i[u]); e.push(c); } return s(e); }), (r.skeleton = f), (r.boundary = function (t) { for ( var e = [], r = 0, n = t.length; r < n; ++r ) for ( var i = t[r], a = 0, o = i.length; a < o; ++a ) { for ( var l = new Array(i.length - 1), c = 0, u = 0; c < o; ++c ) c !== a && (l[u++] = i[c]); e.push(l); } return s(e); }), (r.connectedComponents = function (t, e) { return e ? (function (t, e) { for ( var r = new i(e), n = 0; n < t.length; ++n ) for ( var a = t[n], o = 0; o < a.length; ++o ) for ( var s = o + 1; s < a.length; ++s ) r.link(a[o], a[s]); var l = [], c = r.ranks; for (n = 0; n < c.length; ++n) c[n] = -1; for (n = 0; n < t.length; ++n) { var u = r.find(t[n][0]); c[u] < 0 ? ((c[u] = l.length), l.push([t[n].slice(0)])) : l[c[u]].push(t[n].slice(0)); } return l; })(t, e) : (function (t) { for ( var e = l(s(f(t, 0))), r = new i(e.length), n = 0; n < t.length; ++n ) for ( var a = t[n], o = 0; o < a.length; ++o ) for ( var u = c(e, [a[o]]), h = o + 1; h < a.length; ++h ) r.link(u, c(e, [a[h]])); var p = [], d = r.ranks; for (n = 0; n < d.length; ++n) d[n] = -1; for (n = 0; n < t.length; ++n) { var m = r.find(c(e, [t[n][0]])); d[m] < 0 ? ((d[m] = p.length), p.push([t[n].slice(0)])) : p[d[m]].push(t[n].slice(0)); } return p; })(t); }); }, { "bit-twiddle": 32, "union-find": 309 }, ], 294: [ function (t, e, r) { arguments[4][32][0].apply(r, arguments); }, { dup: 32 }, ], 295: [ function (t, e, r) { arguments[4][293][0].apply(r, arguments); }, { "bit-twiddle": 294, dup: 293, "union-find": 296, }, ], 296: [ function (t, e, r) { "use strict"; function n(t) { (this.roots = new Array(t)), (this.ranks = new Array(t)); for (var e = 0; e < t; ++e) (this.roots[e] = e), (this.ranks[e] = 0); } (e.exports = n), (n.prototype.length = function () { return this.roots.length; }), (n.prototype.makeSet = function () { var t = this.roots.length; return ( this.roots.push(t), this.ranks.push(0), t ); }), (n.prototype.find = function (t) { for (var e = this.roots; e[t] !== t; ) { var r = e[t]; (e[t] = e[r]), (t = r); } return t; }), (n.prototype.link = function (t, e) { var r = this.find(t), n = this.find(e); if (r !== n) { var i = this.ranks, a = this.roots, o = i[r], s = i[n]; o < s ? (a[r] = n) : s < o ? (a[n] = r) : ((a[n] = r), ++i[r]); } }); }, {}, ], 297: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { for ( var a = e.length, o = t.length, s = new Array(a), l = new Array(a), c = new Array(a), u = new Array(a), f = 0; f < a; ++f ) (s[f] = l[f] = -1), (c[f] = 1 / 0), (u[f] = !1); for (f = 0; f < o; ++f) { var h = t[f]; if (2 !== h.length) throw new Error("Input must be a graph"); var p = h[1], d = h[0]; -1 !== l[d] ? (l[d] = -2) : (l[d] = p), -1 !== s[p] ? (s[p] = -2) : (s[p] = d); } function m(t) { if (u[t]) return 1 / 0; var r, i, a, o, c, f = s[t], h = l[t]; return f < 0 || h < 0 ? 1 / 0 : ((r = e[t]), (i = e[f]), (a = e[h]), (o = Math.abs(n(r, i, a))), (c = Math.sqrt( Math.pow(i[0] - a[0], 2) + Math.pow(i[1] - a[1], 2), )), o / c); } function g(t, e) { var r = k[t], n = k[e]; (k[t] = n), (k[e] = r), (A[r] = e), (A[n] = t); } function v(t) { return c[k[t]]; } function y(t) { return 1 & t ? (t - 1) >> 1 : (t >> 1) - 1; } function x(t) { for (var e = v(t); ; ) { var r = e, n = 2 * t + 1, i = 2 * (t + 1), a = t; if (n < M) { var o = v(n); o < r && ((a = n), (r = o)); } if (i < M) v(i) < r && (a = i); if (a === t) return t; g(t, a), (t = a); } } function b(t) { for (var e = v(t); t > 0; ) { var r = y(t); if (r >= 0) if (e < v(r)) { g(t, r), (t = r); continue; } return t; } } function _() { if (M > 0) { var t = k[0]; return g(0, M - 1), (M -= 1), x(0), t; } return -1; } function w(t, e) { var r = k[t]; return c[r] === e ? t : ((c[r] = -1 / 0), b(t), _(), (c[r] = e), b((M += 1) - 1)); } function T(t) { if (!u[t]) { u[t] = !0; var e = s[t], r = l[t]; s[r] >= 0 && (s[r] = e), l[e] >= 0 && (l[e] = r), A[e] >= 0 && w(A[e], m(e)), A[r] >= 0 && w(A[r], m(r)); } } var k = [], A = new Array(a); for (f = 0; f < a; ++f) { (c[f] = m(f)) < 1 / 0 ? ((A[f] = k.length), k.push(f)) : (A[f] = -1); } var M = k.length; for (f = M >> 1; f >= 0; --f) x(f); for (;;) { var S = _(); if (S < 0 || c[S] > r) break; T(S); } var E = []; for (f = 0; f < a; ++f) u[f] || ((A[f] = E.length), E.push(e[f].slice())); E.length; function L(t, e) { if (t[e] < 0) return e; var r = e, n = e; do { var i = t[n]; if (!u[n] || i < 0 || i === n) break; if ( ((i = t[(n = i)]), !u[n] || i < 0 || i === n) ) break; (n = i), (r = t[r]); } while (r !== n); for (var a = e; a !== n; a = t[a]) t[a] = n; return n; } var C = []; return ( t.forEach(function (t) { var e = L(s, t[0]), r = L(l, t[1]); if (e >= 0 && r >= 0 && e !== r) { var n = A[e], i = A[r]; n !== i && C.push([n, i]); } }), i.unique(i.normalize(C)), { positions: E, edges: C } ); }; var n = t("robust-orientation"), i = t("simplicial-complex"); }, { "robust-orientation": 284, "simplicial-complex": 295, }, ], 298: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r, a, o, s; if (e[0][0] < e[1][0]) (r = e[0]), (a = e[1]); else { if (!(e[0][0] > e[1][0])) return i(e, t); (r = e[1]), (a = e[0]); } if (t[0][0] < t[1][0]) (o = t[0]), (s = t[1]); else { if (!(t[0][0] > t[1][0])) return -i(t, e); (o = t[1]), (s = t[0]); } var l = n(r, a, s), c = n(r, a, o); if (l < 0) { if (c <= 0) return l; } else if (l > 0) { if (c >= 0) return l; } else if (c) return c; if ( ((l = n(s, o, a)), (c = n(s, o, r)), l < 0) ) { if (c <= 0) return l; } else if (l > 0) { if (c >= 0) return l; } else if (c) return c; return a[0] - s[0]; }; var n = t("robust-orientation"); function i(t, e) { var r, i, a, o; if (e[0][0] < e[1][0]) (r = e[0]), (i = e[1]); else { if (!(e[0][0] > e[1][0])) { var s = Math.min(t[0][1], t[1][1]), l = Math.max(t[0][1], t[1][1]), c = Math.min(e[0][1], e[1][1]), u = Math.max(e[0][1], e[1][1]); return l < c ? l - c : s > u ? s - u : l - u; } (r = e[1]), (i = e[0]); } t[0][1] < t[1][1] ? ((a = t[0]), (o = t[1])) : ((a = t[1]), (o = t[0])); var f = n(i, r, a); return f || (f = n(i, r, o)) || o - i; } }, { "robust-orientation": 284 }, ], 299: [ function (t, e, r) { "use strict"; e.exports = function (t) { for ( var e = t.length, r = 2 * e, n = new Array(r), a = 0; a < e; ++a ) { var l = t[a], c = l[0][0] < l[1][0]; (n[2 * a] = new f(l[0][0], l, c, a)), (n[2 * a + 1] = new f(l[1][0], l, !c, a)); } n.sort(function (t, e) { var r = t.x - e.x; return ( r || (r = t.create - e.create) || Math.min( t.segment[0][1], t.segment[1][1], ) - Math.min( e.segment[0][1], e.segment[1][1], ) ); }); var h = i(o), p = [], d = [], m = []; for (a = 0; a < r; ) { for (var g = n[a].x, v = []; a < r; ) { var y = n[a]; if (y.x !== g) break; (a += 1), y.segment[0][0] === y.x && y.segment[1][0] === y.x ? y.create && (y.segment[0][1] < y.segment[1][1] ? (v.push( new u( y.segment[0][1], y.index, !0, !0, ), ), v.push( new u( y.segment[1][1], y.index, !1, !1, ), )) : (v.push( new u( y.segment[1][1], y.index, !0, !1, ), ), v.push( new u( y.segment[0][1], y.index, !1, !0, ), ))) : (h = y.create ? h.insert(y.segment, y.index) : h.remove(y.segment)); } p.push(h.root), d.push(g), m.push(v); } return new s(p, d, m); }; var n = t("binary-search-bounds"), i = t("functional-red-black-tree"), a = t("robust-orientation"), o = t("./lib/order-segments"); function s(t, e, r) { (this.slabs = t), (this.coordinates = e), (this.horizontal = r); } function l(t, e) { return t.y - e; } function c(t, e) { for (var r = null; t; ) { var n, i, o = t.key; o[0][0] < o[1][0] ? ((n = o[0]), (i = o[1])) : ((n = o[1]), (i = o[0])); var s = a(n, i, e); if (s < 0) t = t.left; else if (s > 0) if (e[0] !== o[1][0]) (r = t), (t = t.right); else { if ((l = c(t.right, e))) return l; t = t.left; } else { if (e[0] !== o[1][0]) return t; var l; if ((l = c(t.right, e))) return l; t = t.left; } } return r; } function u(t, e, r, n) { (this.y = t), (this.index = e), (this.start = r), (this.closed = n); } function f(t, e, r, n) { (this.x = t), (this.segment = e), (this.create = r), (this.index = n); } s.prototype.castUp = function (t) { var e = n.le(this.coordinates, t[0]); if (e < 0) return -1; this.slabs[e]; var r = c(this.slabs[e], t), i = -1; if ( (r && (i = r.value), this.coordinates[e] === t[0]) ) { var s = null; if ((r && (s = r.key), e > 0)) { var u = c(this.slabs[e - 1], t); u && (s ? o(u.key, s) > 0 && ((s = u.key), (i = u.value)) : ((i = u.value), (s = u.key))); } var f = this.horizontal[e]; if (f.length > 0) { var h = n.ge(f, t[1], l); if (h < f.length) { var p = f[h]; if (t[1] === p.y) { if (p.closed) return p.index; for ( ; h < f.length - 1 && f[h + 1].y === t[1]; ) if ((p = f[(h += 1)]).closed) return p.index; if (p.y === t[1] && !p.start) { if ((h += 1) >= f.length) return i; p = f[h]; } } if (p.start) if (s) { var d = a(s[0], s[1], [t[0], p.y]); s[0][0] > s[1][0] && (d = -d), d > 0 && (i = p.index); } else i = p.index; else p.y !== t[1] && (i = p.index); } } } return i; }; }, { "./lib/order-segments": 298, "binary-search-bounds": 31, "functional-red-black-tree": 69, "robust-orientation": 284, }, ], 300: [ function (t, e, r) { "use strict"; var n = t("robust-dot-product"), i = t("robust-sum"); function a(t, e) { var r = i(n(t, e), [e[e.length - 1]]); return r[r.length - 1]; } function o(t, e, r, n) { var i = -e / (n - e); i < 0 ? (i = 0) : i > 1 && (i = 1); for ( var a = 1 - i, o = t.length, s = new Array(o), l = 0; l < o; ++l ) s[l] = i * t[l] + a * r[l]; return s; } (e.exports = function (t, e) { for ( var r = [], n = [], i = a(t[t.length - 1], e), s = t[t.length - 1], l = t[0], c = 0; c < t.length; ++c, s = l ) { var u = a((l = t[c]), e); if ((i < 0 && u > 0) || (i > 0 && u < 0)) { var f = o(s, u, l, i); r.push(f), n.push(f.slice()); } u < 0 ? n.push(l.slice()) : u > 0 ? r.push(l.slice()) : (r.push(l.slice()), n.push(l.slice())), (i = u); } return { positive: r, negative: n }; }), (e.exports.positive = function (t, e) { for ( var r = [], n = a(t[t.length - 1], e), i = t[t.length - 1], s = t[0], l = 0; l < t.length; ++l, i = s ) { var c = a((s = t[l]), e); ((n < 0 && c > 0) || (n > 0 && c < 0)) && r.push(o(i, c, s, n)), c >= 0 && r.push(s.slice()), (n = c); } return r; }), (e.exports.negative = function (t, e) { for ( var r = [], n = a(t[t.length - 1], e), i = t[t.length - 1], s = t[0], l = 0; l < t.length; ++l, i = s ) { var c = a((s = t[l]), e); ((n < 0 && c > 0) || (n > 0 && c < 0)) && r.push(o(i, c, s, n)), c <= 0 && r.push(s.slice()), (n = c); } return r; }); }, { "robust-dot-product": 281, "robust-sum": 289 }, ], 301: [ function (t, e, r) { !(function () { "use strict"; var t = { not_string: /[^s]/, not_bool: /[^t]/, not_type: /[^T]/, not_primitive: /[^v]/, number: /[diefg]/, numeric_arg: /[bcdiefguxX]/, json: /[j]/, not_json: /[^j]/, text: /^[^\x25]+/, modulo: /^\x25{2}/, placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/, key: /^([a-z_][a-z_\d]*)/i, key_access: /^\.([a-z_][a-z_\d]*)/i, index_access: /^\[(\d+)\]/, sign: /^[+-]/, }; function e(t) { return i(o(t), arguments); } function n(t, r) { return e.apply(null, [t].concat(r || [])); } function i(r, n) { var i, a, o, s, l, c, u, f, h, p = 1, d = r.length, m = ""; for (a = 0; a < d; a++) if ("string" == typeof r[a]) m += r[a]; else if ("object" == typeof r[a]) { if ((s = r[a]).keys) for ( i = n[p], o = 0; o < s.keys.length; o++ ) { if (null == i) throw new Error( e( '[sprintf] Cannot access property "%s" of undefined value "%s"', s.keys[o], s.keys[o - 1], ), ); i = i[s.keys[o]]; } else i = s.param_no ? n[s.param_no] : n[p++]; if ( (t.not_type.test(s.type) && t.not_primitive.test(s.type) && i instanceof Function && (i = i()), t.numeric_arg.test(s.type) && "number" != typeof i && isNaN(i)) ) throw new TypeError( e( "[sprintf] expecting number but found %T", i, ), ); switch ( (t.number.test(s.type) && (f = i >= 0), s.type) ) { case "b": i = parseInt(i, 10).toString(2); break; case "c": i = String.fromCharCode( parseInt(i, 10), ); break; case "d": case "i": i = parseInt(i, 10); break; case "j": i = JSON.stringify( i, null, s.width ? parseInt(s.width) : 0, ); break; case "e": i = s.precision ? parseFloat(i).toExponential( s.precision, ) : parseFloat(i).toExponential(); break; case "f": i = s.precision ? parseFloat(i).toFixed( s.precision, ) : parseFloat(i); break; case "g": i = s.precision ? String( Number( i.toPrecision(s.precision), ), ) : parseFloat(i); break; case "o": i = ( parseInt(i, 10) >>> 0 ).toString(8); break; case "s": (i = String(i)), (i = s.precision ? i.substring(0, s.precision) : i); break; case "t": (i = String(!!i)), (i = s.precision ? i.substring(0, s.precision) : i); break; case "T": (i = Object.prototype.toString .call(i) .slice(8, -1) .toLowerCase()), (i = s.precision ? i.substring(0, s.precision) : i); break; case "u": i = parseInt(i, 10) >>> 0; break; case "v": (i = i.valueOf()), (i = s.precision ? i.substring(0, s.precision) : i); break; case "x": i = ( parseInt(i, 10) >>> 0 ).toString(16); break; case "X": i = (parseInt(i, 10) >>> 0) .toString(16) .toUpperCase(); } t.json.test(s.type) ? (m += i) : (!t.number.test(s.type) || (f && !s.sign) ? (h = "") : ((h = f ? "+" : "-"), (i = i .toString() .replace(t.sign, ""))), (c = s.pad_char ? "0" === s.pad_char ? "0" : s.pad_char.charAt(1) : " "), (u = s.width - (h + i).length), (l = s.width && u > 0 ? c.repeat(u) : ""), (m += s.align ? h + i + l : "0" === c ? h + l + i : l + h + i)); } return m; } var a = Object.create(null); function o(e) { if (a[e]) return a[e]; for (var r, n = e, i = [], o = 0; n; ) { if (null !== (r = t.text.exec(n))) i.push(r[0]); else if (null !== (r = t.modulo.exec(n))) i.push("%"); else { if ( null === (r = t.placeholder.exec(n)) ) throw new SyntaxError( "[sprintf] unexpected placeholder", ); if (r[2]) { o |= 1; var s = [], l = r[2], c = []; if (null === (c = t.key.exec(l))) throw new SyntaxError( "[sprintf] failed to parse named argument key", ); for ( s.push(c[1]); "" !== (l = l.substring(c[0].length)); ) if ( null !== (c = t.key_access.exec(l)) ) s.push(c[1]); else { if ( null === (c = t.index_access.exec(l)) ) throw new SyntaxError( "[sprintf] failed to parse named argument key", ); s.push(c[1]); } r[2] = s; } else o |= 2; if (3 === o) throw new Error( "[sprintf] mixing positional and named placeholders is not (yet) supported", ); i.push({ placeholder: r[0], param_no: r[1], keys: r[2], sign: r[3], pad_char: r[4], align: r[5], width: r[6], precision: r[7], type: r[8], }); } n = n.substring(r[0].length); } return (a[e] = i); } void 0 !== r && ((r.sprintf = e), (r.vsprintf = n)), "undefined" != typeof window && ((window.sprintf = e), (window.vsprintf = n)); })(); }, {}, ], 302: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { if (t.dimension <= 0) return { positions: [], cells: [] }; if (1 === t.dimension) return (function (t, e) { for ( var r = i(t, e), n = r.length, a = new Array(n), o = new Array(n), s = 0; s < n; ++s ) (a[s] = [r[s]]), (o[s] = [s]); return { positions: a, cells: o }; })(t, e); var r = t.order.join() + "-" + t.dtype, s = o[r]; e = +e || 0; s || (s = o[r] = (function (t, e) { var r = t.length + "d", i = a[r]; if (i) return i(n, t, e); })(t.order, t.dtype)); return s(t, e); }; var n = t("ndarray-extract-contour"), i = t("zero-crossings"), a = { "2d": function (t, e, r) { var n = t({ order: e, scalarArguments: 3, getters: "generic" === r ? [0] : void 0, phase: function (t, e, r, n) { return (t > n) | 0; }, vertex: function ( t, e, r, n, i, a, o, s, l, c, u, f, h, ) { var p = ((o << 0) + (s << 1) + (l << 2) + (c << 3)) | 0; if (0 !== p && 15 !== p) switch (p) { case 0: u.push([t - 0.5, e - 0.5]); break; case 1: u.push([ t - 0.25 - (0.25 * (n + r - 2 * h)) / (r - n), e - 0.25 - (0.25 * (i + r - 2 * h)) / (r - i), ]); break; case 2: u.push([ t - 0.75 - (0.25 * (-n - r + 2 * h)) / (n - r), e - 0.25 - (0.25 * (a + n - 2 * h)) / (n - a), ]); break; case 3: u.push([ t - 0.5, e - 0.5 - (0.5 * (i + r + a + n - 4 * h)) / (r - i + n - a), ]); break; case 4: u.push([ t - 0.25 - (0.25 * (a + i - 2 * h)) / (i - a), e - 0.75 - (0.25 * (-i - r + 2 * h)) / (i - r), ]); break; case 5: u.push([ t - 0.5 - (0.5 * (n + r + a + i - 4 * h)) / (r - n + i - a), e - 0.5, ]); break; case 6: u.push([ t - 0.5 - (0.25 * (-n - r + a + i)) / (n - r + i - a), e - 0.5 - (0.25 * (-i - r + a + n)) / (i - r + n - a), ]); break; case 7: u.push([ t - 0.75 - (0.25 * (a + i - 2 * h)) / (i - a), e - 0.75 - (0.25 * (a + n - 2 * h)) / (n - a), ]); break; case 8: u.push([ t - 0.75 - (0.25 * (-a - i + 2 * h)) / (a - i), e - 0.75 - (0.25 * (-a - n + 2 * h)) / (a - n), ]); break; case 9: u.push([ t - 0.5 - (0.25 * (n + r + -a - i)) / (r - n + a - i), e - 0.5 - (0.25 * (i + r + -a - n)) / (r - i + a - n), ]); break; case 10: u.push([ t - 0.5 - (0.5 * (-n - r - a - i + 4 * h)) / (n - r + a - i), e - 0.5, ]); break; case 11: u.push([ t - 0.25 - (0.25 * (-a - i + 2 * h)) / (a - i), e - 0.75 - (0.25 * (i + r - 2 * h)) / (r - i), ]); break; case 12: u.push([ t - 0.5, e - 0.5 - (0.5 * (-i - r - a - n + 4 * h)) / (i - r + a - n), ]); break; case 13: u.push([ t - 0.75 - (0.25 * (n + r - 2 * h)) / (r - n), e - 0.25 - (0.25 * (-a - n + 2 * h)) / (a - n), ]); break; case 14: u.push([ t - 0.25 - (0.25 * (-n - r + 2 * h)) / (n - r), e - 0.25 - (0.25 * (-i - r + 2 * h)) / (i - r), ]); break; case 15: u.push([t - 0.5, e - 0.5]); } }, cell: function ( t, e, r, n, i, a, o, s, l, ) { i ? s.push([t, e]) : s.push([e, t]); }, }); return function (t, e) { var r = [], i = []; return ( n(t, r, i, e), { positions: r, cells: i } ); }; }, }; var o = {}; }, { "ndarray-extract-contour": 251, "zero-crossings": 318, }, ], 303: [ function (t, e, r) { (function (r) { (function () { "use strict"; e.exports = function t(e, r, i) { i = i || {}; var o = a[e]; o || (o = a[e] = { " ": { data: new Float32Array(0), shape: 0.2, }, }); var s = o[r]; if (!s) if (r.length <= 1 || !/\d/.test(r)) s = o[r] = (function (t) { for ( var e = t.cells, r = t.positions, n = new Float32Array( 6 * e.length, ), i = 0, a = 0, o = 0; o < e.length; ++o ) for ( var s = e[o], l = 0; l < 3; ++l ) { var c = r[s[l]]; (n[i++] = c[0]), (n[i++] = c[1] + 1.4), (a = Math.max(c[0], a)); } return { data: n, shape: a }; })( n(r, { triangles: !0, font: e, textAlign: i.textAlign || "left", textBaseline: "alphabetic", styletags: { breaklines: !0, bolds: !0, italics: !0, subscripts: !0, superscripts: !0, }, }), ); else { for ( var l = r.split(/(\d|\s)/), c = new Array(l.length), u = 0, f = 0, h = 0; h < l.length; ++h ) (c[h] = t(e, l[h])), (u += c[h].data.length), (f += c[h].shape), h > 0 && (f += 0.02); var p = new Float32Array(u), d = 0, m = -0.5 * f; for (h = 0; h < c.length; ++h) { for ( var g = c[h].data, v = 0; v < g.length; v += 2 ) (p[d++] = g[v] + m), (p[d++] = g[v + 1]); m += c[h].shape + 0.02; } s = o[r] = { data: p, shape: f }; } return s; }; var n = t("vectorize-text"), i = window || r.global || {}, a = i.__TEXT_CACHE || {}; i.__TEXT_CACHE = {}; }).call(this); }).call(this, t("_process")); }, { _process: 5, "vectorize-text": 311 }, ], 304: [ function (t, e, r) { "use strict"; var n = t("parse-unit"); e.exports = a; function i(t, e) { var r = n( getComputedStyle(t).getPropertyValue(e), ); return r[0] * a(r[1], t); } function a(t, e) { switch ( ((e = e || document.body), (t = (t || "px").trim().toLowerCase()), (e !== window && e !== document) || (e = document.body), t) ) { case "%": return e.clientHeight / 100; case "ch": case "ex": return (function (t, e) { var r = document.createElement("div"); (r.style["font-size"] = "128" + t), e.appendChild(r); var n = i(r, "font-size") / 128; return e.removeChild(r), n; })(t, e); case "em": return i(e, "font-size"); case "rem": return i(document.body, "font-size"); case "vw": return window.innerWidth / 100; case "vh": return window.innerHeight / 100; case "vmin": return ( Math.min( window.innerWidth, window.innerHeight, ) / 100 ); case "vmax": return ( Math.max( window.innerWidth, window.innerHeight, ) / 100 ); case "in": return 96; case "cm": return 96 / 2.54; case "mm": return 96 / 25.4; case "pt": return 96 / 72; case "pc": return 16; } return 1; } }, { "parse-unit": 265 }, ], 305: [ function (t, e, r) { "use strict"; e.exports = function (t) { var e = (t = t || {}).center || [0, 0, 0], r = t.up || [0, 1, 0], n = t.right || f(r), i = t.radius || 1, a = t.theta || 0, u = t.phi || 0; if ( ((e = [].slice.call(e, 0, 3)), (r = [].slice.call(r, 0, 3)), s(r, r), (n = [].slice.call(n, 0, 3)), s(n, n), "eye" in t) ) { var p = t.eye, d = [ p[0] - e[0], p[1] - e[1], p[2] - e[2], ]; o(n, d, r), c(n[0], n[1], n[2]) < 1e-6 ? (n = f(r)) : s(n, n), (i = c(d[0], d[1], d[2])); var m = l(r, d) / i, g = l(n, d) / i; (u = Math.acos(m)), (a = Math.acos(g)); } return ( (i = Math.log(i)), new h( t.zoomMin, t.zoomMax, e, r, n, i, a, u, ) ); }; var n = t("filtered-vector"), i = t("gl-mat4/invert"), a = t("gl-mat4/rotate"), o = t("gl-vec3/cross"), s = t("gl-vec3/normalize"), l = t("gl-vec3/dot"); function c(t, e, r) { return Math.sqrt( Math.pow(t, 2) + Math.pow(e, 2) + Math.pow(r, 2), ); } function u(t) { return Math.min(1, Math.max(-1, t)); } function f(t) { var e = Math.abs(t[0]), r = Math.abs(t[1]), n = Math.abs(t[2]), i = [0, 0, 0]; e > Math.max(r, n) ? (i[2] = 1) : r > Math.max(e, n) ? (i[0] = 1) : (i[1] = 1); for (var a = 0, o = 0, l = 0; l < 3; ++l) (a += t[l] * t[l]), (o += i[l] * t[l]); for (l = 0; l < 3; ++l) i[l] -= (o / a) * t[l]; return s(i, i), i; } function h(t, e, r, i, a, o, s, l) { (this.center = n(r)), (this.up = n(i)), (this.right = n(a)), (this.radius = n([o])), (this.angle = n([s, l])), (this.angle.bounds = [ [-1 / 0, -Math.PI / 2], [1 / 0, Math.PI / 2], ]), this.setDistanceLimits(t, e), (this.computedCenter = this.center.curve(0)), (this.computedUp = this.up.curve(0)), (this.computedRight = this.right.curve(0)), (this.computedRadius = this.radius.curve(0)), (this.computedAngle = this.angle.curve(0)), (this.computedToward = [0, 0, 0]), (this.computedEye = [0, 0, 0]), (this.computedMatrix = new Array(16)); for (var c = 0; c < 16; ++c) this.computedMatrix[c] = 0.5; this.recalcMatrix(0); } var p = h.prototype; (p.setDistanceLimits = function (t, e) { (t = t > 0 ? Math.log(t) : -1 / 0), (e = e > 0 ? Math.log(e) : 1 / 0), (e = Math.max(e, t)), (this.radius.bounds[0][0] = t), (this.radius.bounds[1][0] = e); }), (p.getDistanceLimits = function (t) { var e = this.radius.bounds[0]; return t ? ((t[0] = Math.exp(e[0][0])), (t[1] = Math.exp(e[1][0])), t) : [Math.exp(e[0][0]), Math.exp(e[1][0])]; }), (p.recalcMatrix = function (t) { this.center.curve(t), this.up.curve(t), this.right.curve(t), this.radius.curve(t), this.angle.curve(t); for ( var e = this.computedUp, r = this.computedRight, n = 0, i = 0, a = 0; a < 3; ++a ) (i += e[a] * r[a]), (n += e[a] * e[a]); var l = Math.sqrt(n), u = 0; for (a = 0; a < 3; ++a) (r[a] -= (e[a] * i) / n), (u += r[a] * r[a]), (e[a] /= l); var f = Math.sqrt(u); for (a = 0; a < 3; ++a) r[a] /= f; var h = this.computedToward; o(h, e, r), s(h, h); var p = Math.exp(this.computedRadius[0]), d = this.computedAngle[0], m = this.computedAngle[1], g = Math.cos(d), v = Math.sin(d), y = Math.cos(m), x = Math.sin(m), b = this.computedCenter, _ = g * y, w = v * y, T = x, k = -g * x, A = -v * x, M = y, S = this.computedEye, E = this.computedMatrix; for (a = 0; a < 3; ++a) { var L = _ * r[a] + w * h[a] + T * e[a]; (E[4 * a + 1] = k * r[a] + A * h[a] + M * e[a]), (E[4 * a + 2] = L), (E[4 * a + 3] = 0); } var C = E[1], P = E[5], I = E[9], O = E[2], z = E[6], D = E[10], R = P * D - I * z, F = I * O - C * D, B = C * z - P * O, N = c(R, F, B); (R /= N), (F /= N), (B /= N), (E[0] = R), (E[4] = F), (E[8] = B); for (a = 0; a < 3; ++a) S[a] = b[a] + E[2 + 4 * a] * p; for (a = 0; a < 3; ++a) { u = 0; for (var j = 0; j < 3; ++j) u += E[a + 4 * j] * S[j]; E[12 + a] = -u; } E[15] = 1; }), (p.getMatrix = function (t, e) { this.recalcMatrix(t); var r = this.computedMatrix; if (e) { for (var n = 0; n < 16; ++n) e[n] = r[n]; return e; } return r; }); var d = [0, 0, 0]; (p.rotate = function (t, e, r, n) { if ((this.angle.move(t, e, r), n)) { this.recalcMatrix(t); var i = this.computedMatrix; (d[0] = i[2]), (d[1] = i[6]), (d[2] = i[10]); for ( var o = this.computedUp, s = this.computedRight, l = this.computedToward, c = 0; c < 3; ++c ) (i[4 * c] = o[c]), (i[4 * c + 1] = s[c]), (i[4 * c + 2] = l[c]); a(i, i, n, d); for (c = 0; c < 3; ++c) (o[c] = i[4 * c]), (s[c] = i[4 * c + 1]); this.up.set(t, o[0], o[1], o[2]), this.right.set(t, s[0], s[1], s[2]); } }), (p.pan = function (t, e, r, n) { (e = e || 0), (r = r || 0), (n = n || 0), this.recalcMatrix(t); var i = this.computedMatrix, a = (Math.exp(this.computedRadius[0]), i[1]), o = i[5], s = i[9], l = c(a, o, s); (a /= l), (o /= l), (s /= l); var u = i[0], f = i[4], h = i[8], p = u * a + f * o + h * s, d = c( (u -= a * p), (f -= o * p), (h -= s * p), ), m = (u /= d) * e + a * r, g = (f /= d) * e + o * r, v = (h /= d) * e + s * r; this.center.move(t, m, g, v); var y = Math.exp(this.computedRadius[0]); (y = Math.max(1e-4, y + n)), this.radius.set(t, Math.log(y)); }), (p.translate = function (t, e, r, n) { this.center.move(t, e || 0, r || 0, n || 0); }), (p.setMatrix = function (t, e, r, n) { var a = 1; "number" == typeof r && (a = 0 | r), (a < 0 || a > 3) && (a = 1); var o = (a + 2) % 3; e || (this.recalcMatrix(t), (e = this.computedMatrix)); var s = e[a], l = e[a + 4], f = e[a + 8]; if (n) { var h = Math.abs(s), p = Math.abs(l), d = Math.abs(f), m = Math.max(h, p, d); h === m ? ((s = s < 0 ? -1 : 1), (l = f = 0)) : d === m ? ((f = f < 0 ? -1 : 1), (s = l = 0)) : ((l = l < 0 ? -1 : 1), (s = f = 0)); } else { var g = c(s, l, f); (s /= g), (l /= g), (f /= g); } var v, y, x = e[o], b = e[o + 4], _ = e[o + 8], w = x * s + b * l + _ * f, T = c( (x -= s * w), (b -= l * w), (_ -= f * w), ), k = l * (_ /= T) - f * (b /= T), A = f * (x /= T) - s * _, M = s * b - l * x, S = c(k, A, M); if ( ((k /= S), (A /= S), (M /= S), this.center.jump(t, q, G, Y), this.radius.idle(t), this.up.jump(t, s, l, f), this.right.jump(t, x, b, _), 2 === a) ) { var E = e[1], L = e[5], C = e[9], P = E * x + L * b + C * _, I = E * k + L * A + C * M; (v = R < 0 ? -Math.PI / 2 : Math.PI / 2), (y = Math.atan2(I, P)); } else { var O = e[2], z = e[6], D = e[10], R = O * s + z * l + D * f, F = O * x + z * b + D * _, B = O * k + z * A + D * M; (v = Math.asin(u(R))), (y = Math.atan2(B, F)); } this.angle.jump(t, y, v), this.recalcMatrix(t); var N = e[2], j = e[6], U = e[10], V = this.computedMatrix; i(V, e); var H = V[15], q = V[12] / H, G = V[13] / H, Y = V[14] / H, W = Math.exp(this.computedRadius[0]); this.center.jump( t, q - N * W, G - j * W, Y - U * W, ); }), (p.lastT = function () { return Math.max( this.center.lastT(), this.up.lastT(), this.right.lastT(), this.radius.lastT(), this.angle.lastT(), ); }), (p.idle = function (t) { this.center.idle(t), this.up.idle(t), this.right.idle(t), this.radius.idle(t), this.angle.idle(t); }), (p.flush = function (t) { this.center.flush(t), this.up.flush(t), this.right.flush(t), this.radius.flush(t), this.angle.flush(t); }), (p.setDistance = function (t, e) { e > 0 && this.radius.set(t, Math.log(e)); }), (p.lookAt = function (t, e, r, n) { this.recalcMatrix(t), (e = e || this.computedEye), (r = r || this.computedCenter); var i = (n = n || this.computedUp)[0], a = n[1], o = n[2], s = c(i, a, o); if (!(s < 1e-6)) { (i /= s), (a /= s), (o /= s); var l = e[0] - r[0], f = e[1] - r[1], h = e[2] - r[2], p = c(l, f, h); if (!(p < 1e-6)) { (l /= p), (f /= p), (h /= p); var d = this.computedRight, m = d[0], g = d[1], v = d[2], y = i * m + a * g + o * v, x = c( (m -= y * i), (g -= y * a), (v -= y * o), ); if ( !( x < 0.01 && (x = c( (m = a * h - o * f), (g = o * l - i * h), (v = i * f - a * l), )) < 1e-6 ) ) { (m /= x), (g /= x), (v /= x), this.up.set(t, i, a, o), this.right.set(t, m, g, v), this.center.set( t, r[0], r[1], r[2], ), this.radius.set(t, Math.log(p)); var b = a * v - o * g, _ = o * m - i * v, w = i * g - a * m, T = c(b, _, w), k = i * l + a * f + o * h, A = m * l + g * f + v * h, M = (b /= T) * l + (_ /= T) * f + (w /= T) * h, S = Math.asin(u(k)), E = Math.atan2(M, A), L = this.angle._state, C = L[L.length - 1], P = L[L.length - 2]; C %= 2 * Math.PI; var I = Math.abs(C + 2 * Math.PI - E), O = Math.abs(C - E), z = Math.abs(C - 2 * Math.PI - E); I < O && (C += 2 * Math.PI), z < O && (C -= 2 * Math.PI), this.angle.jump( this.angle.lastT(), C, P, ), this.angle.set(t, E, S); } } } }); }, { "filtered-vector": 68, "gl-mat4/invert": 98, "gl-mat4/rotate": 103, "gl-vec3/cross": 157, "gl-vec3/dot": 162, "gl-vec3/normalize": 179, }, ], 306: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { var i = t * e, a = n * t, o = a - (a - t), s = t - o, l = n * e, c = l - (l - e), u = e - c, f = s * u - (i - o * c - s * c - o * u); if (r) return (r[0] = f), (r[1] = i), r; return [f, i]; }; var n = +(Math.pow(2, 27) + 1); }, {}, ], 307: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { var n = t + e, i = n - t, a = e - i, o = t - (n - i); if (r) return (r[0] = o + a), (r[1] = n), r; return [o + a, n]; }; }, {}, ], 308: [ function (t, e, r) { (function (e) { (function () { "use strict"; var n = t("bit-twiddle"), i = t("dup"), a = t("buffer").Buffer; e.__TYPEDARRAY_POOL || (e.__TYPEDARRAY_POOL = { UINT8: i([32, 0]), UINT16: i([32, 0]), UINT32: i([32, 0]), BIGUINT64: i([32, 0]), INT8: i([32, 0]), INT16: i([32, 0]), INT32: i([32, 0]), BIGINT64: i([32, 0]), FLOAT: i([32, 0]), DOUBLE: i([32, 0]), DATA: i([32, 0]), UINT8C: i([32, 0]), BUFFER: i([32, 0]), }); var o = "undefined" != typeof Uint8ClampedArray, s = "undefined" != typeof BigUint64Array, l = "undefined" != typeof BigInt64Array, c = e.__TYPEDARRAY_POOL; c.UINT8C || (c.UINT8C = i([32, 0])), c.BIGUINT64 || (c.BIGUINT64 = i([32, 0])), c.BIGINT64 || (c.BIGINT64 = i([32, 0])), c.BUFFER || (c.BUFFER = i([32, 0])); var u = c.DATA, f = c.BUFFER; function h(t) { if (t) { var e = t.length || t.byteLength, r = n.log2(e); u[r].push(t); } } function p(t) { t = n.nextPow2(t); var e = n.log2(t), r = u[e]; return r.length > 0 ? r.pop() : new ArrayBuffer(t); } function d(t) { return new Uint8Array(p(t), 0, t); } function m(t) { return new Uint16Array(p(2 * t), 0, t); } function g(t) { return new Uint32Array(p(4 * t), 0, t); } function v(t) { return new Int8Array(p(t), 0, t); } function y(t) { return new Int16Array(p(2 * t), 0, t); } function x(t) { return new Int32Array(p(4 * t), 0, t); } function b(t) { return new Float32Array(p(4 * t), 0, t); } function _(t) { return new Float64Array(p(8 * t), 0, t); } function w(t) { return o ? new Uint8ClampedArray(p(t), 0, t) : d(t); } function T(t) { return s ? new BigUint64Array(p(8 * t), 0, t) : null; } function k(t) { return l ? new BigInt64Array(p(8 * t), 0, t) : null; } function A(t) { return new DataView(p(t), 0, t); } function M(t) { t = n.nextPow2(t); var e = n.log2(t), r = f[e]; return r.length > 0 ? r.pop() : new a(t); } (r.free = function (t) { if (a.isBuffer(t)) f[n.log2(t.length)].push(t); else { if ( ("[object ArrayBuffer]" !== Object.prototype.toString.call(t) && (t = t.buffer), !t) ) return; var e = t.length || t.byteLength, r = 0 | n.log2(e); u[r].push(t); } }), (r.freeUint8 = r.freeUint16 = r.freeUint32 = r.freeBigUint64 = r.freeInt8 = r.freeInt16 = r.freeInt32 = r.freeBigInt64 = r.freeFloat32 = r.freeFloat = r.freeFloat64 = r.freeDouble = r.freeUint8Clamped = r.freeDataView = function (t) { h(t.buffer); }), (r.freeArrayBuffer = h), (r.freeBuffer = function (t) { f[n.log2(t.length)].push(t); }), (r.malloc = function (t, e) { if (void 0 === e || "arraybuffer" === e) return p(t); switch (e) { case "uint8": return d(t); case "uint16": return m(t); case "uint32": return g(t); case "int8": return v(t); case "int16": return y(t); case "int32": return x(t); case "float": case "float32": return b(t); case "double": case "float64": return _(t); case "uint8_clamped": return w(t); case "bigint64": return k(t); case "biguint64": return T(t); case "buffer": return M(t); case "data": case "dataview": return A(t); default: return null; } return null; }), (r.mallocArrayBuffer = p), (r.mallocUint8 = d), (r.mallocUint16 = m), (r.mallocUint32 = g), (r.mallocInt8 = v), (r.mallocInt16 = y), (r.mallocInt32 = x), (r.mallocFloat32 = r.mallocFloat = b), (r.mallocFloat64 = r.mallocDouble = _), (r.mallocUint8Clamped = w), (r.mallocBigUint64 = T), (r.mallocBigInt64 = k), (r.mallocDataView = A), (r.mallocBuffer = M), (r.clearCache = function () { for (var t = 0; t < 32; ++t) (c.UINT8[t].length = 0), (c.UINT16[t].length = 0), (c.UINT32[t].length = 0), (c.INT8[t].length = 0), (c.INT16[t].length = 0), (c.INT32[t].length = 0), (c.FLOAT[t].length = 0), (c.DOUBLE[t].length = 0), (c.BIGUINT64[t].length = 0), (c.BIGINT64[t].length = 0), (c.UINT8C[t].length = 0), (u[t].length = 0), (f[t].length = 0); }); }).call(this); }).call( this, void 0 !== n ? n : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, ); }, { "bit-twiddle": 32, buffer: 3, dup: 65 }, ], 309: [ function (t, e, r) { "use strict"; function n(t) { (this.roots = new Array(t)), (this.ranks = new Array(t)); for (var e = 0; e < t; ++e) (this.roots[e] = e), (this.ranks[e] = 0); } e.exports = n; var i = n.prototype; Object.defineProperty(i, "length", { get: function () { return this.roots.length; }, }), (i.makeSet = function () { var t = this.roots.length; return ( this.roots.push(t), this.ranks.push(0), t ); }), (i.find = function (t) { for ( var e = t, r = this.roots; r[t] !== t; ) t = r[t]; for (; r[e] !== t; ) { var n = r[e]; (r[e] = t), (e = n); } return t; }), (i.link = function (t, e) { var r = this.find(t), n = this.find(e); if (r !== n) { var i = this.ranks, a = this.roots, o = i[r], s = i[n]; o < s ? (a[r] = n) : s < o ? (a[n] = r) : ((a[n] = r), ++i[r]); } }); }, {}, ], 310: [ function (t, e, r) { "use strict"; e.exports = function (t, e, r) { return 0 === t.length ? t : e ? (r || t.sort(e), (function (t, e) { for ( var r = 1, n = t.length, i = t[0], a = t[0], o = 1; o < n; ++o ) if (((a = i), e((i = t[o]), a))) { if (o === r) { r++; continue; } t[r++] = i; } return (t.length = r), t; })(t, e)) : (r || t.sort(), (function (t) { for ( var e = 1, r = t.length, n = t[0], i = t[0], a = 1; a < r; ++a, i = n ) if (((i = n), (n = t[a]) !== i)) { if (a === e) { e++; continue; } t[e++] = n; } return (t.length = e), t; })(t)); }; }, {}, ], 311: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { ("object" == typeof e && null !== e) || (e = {}); return n(t, e.canvas || i, e.context || a, e); }; var n = t("./lib/vtext"), i = null, a = null; "undefined" != typeof document && (((i = document.createElement("canvas")).width = 8192), (i.height = 1024), (a = i.getContext("2d"))); }, { "./lib/vtext": 312 }, ], 312: [ function (t, e, r) { (e.exports = function (t, e, r, n) { var a = 64, o = 1.25, s = { breaklines: !1, bolds: !1, italics: !1, subscripts: !1, superscripts: !1, }; n && (n.size && n.size > 0 && (a = n.size), n.lineSpacing && n.lineSpacing > 0 && (o = n.lineSpacing), n.styletags && n.styletags.breaklines && (s.breaklines = !!n.styletags.breaklines), n.styletags && n.styletags.bolds && (s.bolds = !!n.styletags.bolds), n.styletags && n.styletags.italics && (s.italics = !!n.styletags.italics), n.styletags && n.styletags.subscripts && (s.subscripts = !!n.styletags.subscripts), n.styletags && n.styletags.superscripts && (s.superscripts = !!n.styletags.superscripts)); return ( (r.font = [ n.fontStyle, n.fontVariant, n.fontWeight, a + "px", n.font, ] .filter(function (t) { return t; }) .join(" ")), (r.textAlign = "start"), (r.textBaseline = "alphabetic"), (r.direction = "ltr"), h( (function (t, e, r, n, a, o) { (r = r.replace(/\n/g, "")), (r = !0 === o.breaklines ? r.replace(/\/g, "\n") : r.replace(/\/g, " ")); var s = "", l = []; for (p = 0; p < r.length; ++p) l[p] = s; !0 === o.bolds && (l = c("b", "b|", r, l)); !0 === o.italics && (l = c("i", "i|", r, l)); !0 === o.superscripts && (l = c("sup", "+1", r, l)); !0 === o.subscripts && (l = c("sub", "-1", r, l)); var u = [], f = ""; for (p = 0; p < r.length; ++p) null !== l[p] && ((f += r[p]), u.push(l[p])); var h, p, d, m, g, v = f.split("\n"), y = v.length, x = Math.round(a * n), b = n, _ = 2 * n, w = 0, T = y * x + _; t.height < T && (t.height = T); (e.fillStyle = "#000"), e.fillRect(0, 0, t.width, t.height), (e.fillStyle = "#fff"); var k = 0, A = ""; function M() { if ("" !== A) { var t = e.measureText(A).width; e.fillText(A, b + d, _ + m), (d += t); } } function S() { return Math.round(g) + "px "; } function E(t, r) { var n = "" + e.font; if (!0 === o.subscripts) { var i = t.indexOf("-"), a = r.indexOf("-"), s = i > -1 ? parseInt(t[1 + i]) : 0, l = a > -1 ? parseInt(r[1 + a]) : 0; s !== l && ((n = n.replace(S(), "?px ")), (g *= Math.pow(0.75, l - s)), (n = n.replace("?px ", S()))), (m += 0.25 * x * (l - s)); } if (!0 === o.superscripts) { var c = t.indexOf("+"), u = r.indexOf("+"), f = c > -1 ? parseInt(t[1 + c]) : 0, h = u > -1 ? parseInt(r[1 + u]) : 0; f !== h && ((n = n.replace(S(), "?px ")), (g *= Math.pow(0.75, h - f)), (n = n.replace("?px ", S()))), (m -= 0.25 * x * (h - f)); } if (!0 === o.bolds) { var p = t.indexOf("b|") > -1, d = r.indexOf("b|") > -1; !p && d && (n = v ? n.replace( "italic ", "italic bold ", ) : "bold " + n), p && !d && (n = n.replace("bold ", "")); } if (!0 === o.italics) { var v = t.indexOf("i|") > -1, y = r.indexOf("i|") > -1; !v && y && (n = "italic " + n), v && !y && (n = n.replace("italic ", "")); } e.font = n; } for (h = 0; h < y; ++h) { var L = v[h] + "\n"; for ( d = 0, m = h * x, g = n, A = "", p = 0; p < L.length; ++p ) { var C = p + k < u.length ? u[p + k] : u[u.length - 1]; s === C ? (A += L[p]) : (M(), (A = L[p]), void 0 !== C && (E(s, C), (s = C))); } M(), (k += L.length); var P = 0 | Math.round(d + 2 * b); w < P && (w = P); } var I = w, O = _ + x * y; return i( e.getImageData(0, 0, I, O).data, [O, I, 4], ) .pick(-1, -1, 0) .transpose(1, 0); })(e, r, t, a, o, s), n, a, ) ); }), (e.exports.processPixels = h); var n = t("surface-nets"), i = t("ndarray"), a = t("simplify-planar-graph"), o = t("clean-pslg"), s = t("cdt2d"), l = t("planar-graph-to-polyline"); function c(t, e, r, n) { for ( var i = "<" + t + ">", a = "", o = i.length, s = a.length, l = "+" === e[0] || "-" === e[0], c = 0, u = -s; c > -1 && -1 !== (c = r.indexOf(i, c)) && -1 !== (u = r.indexOf(a, c + o)) && !(u <= c); ) { for (var f = c; f < u + s; ++f) if (f < c + o || f >= u) (n[f] = null), (r = r.substr(0, f) + " " + r.substr(f + 1)); else if (null !== n[f]) { var h = n[f].indexOf(e[0]); -1 === h ? (n[f] += e) : l && (n[f] = n[f].substr(0, h + 1) + (1 + parseInt(n[f][h + 1])) + n[f].substr(h + 2)); } var p = c + o, d = r.substr(p, u - p).indexOf(i); c = -1 !== d ? d : u + s; } return n; } function u(t, e) { var r = n(t, 128); return e ? a(r.cells, r.positions, 0.25) : { edges: r.cells, positions: r.positions, }; } function f(t, e, r, n) { var i = u(t, n), a = (function (t, e, r) { for ( var n = e.textAlign || "start", i = e.textBaseline || "alphabetic", a = [1 << 30, 1 << 30], o = [0, 0], s = t.length, l = 0; l < s; ++l ) for (var c = t[l], u = 0; u < 2; ++u) (a[u] = 0 | Math.min(a[u], c[u])), (o[u] = 0 | Math.max(o[u], c[u])); var f = 0; switch (n) { case "center": f = -0.5 * (a[0] + o[0]); break; case "right": case "end": f = -o[0]; break; case "left": case "start": f = -a[0]; break; default: throw new Error( "vectorize-text: Unrecognized textAlign: '" + n + "'", ); } var h = 0; switch (i) { case "hanging": case "top": h = -a[1]; break; case "middle": h = -0.5 * (a[1] + o[1]); break; case "alphabetic": case "ideographic": h = -3 * r; break; case "bottom": h = -o[1]; break; default: throw new Error( "vectorize-text: Unrecoginized textBaseline: '" + i + "'", ); } var p = 1 / r; return ( "lineHeight" in e ? (p *= +e.lineHeight) : "width" in e ? (p = e.width / (o[0] - a[0])) : "height" in e && (p = e.height / (o[1] - a[1])), t.map(function (t) { return [ p * (t[0] + f), p * (t[1] + h), ]; }) ); })(i.positions, e, r), c = i.edges, f = "ccw" === e.orientation; if ( (o(a, c), e.polygons || e.polygon || e.polyline) ) { for ( var h = l(c, a), p = new Array(h.length), d = 0; d < h.length; ++d ) { for ( var m = h[d], g = new Array(m.length), v = 0; v < m.length; ++v ) { for ( var y = m[v], x = new Array(y.length), b = 0; b < y.length; ++b ) x[b] = a[y[b]].slice(); f && x.reverse(), (g[v] = x); } p[d] = g; } return p; } return e.triangles || e.triangulate || e.triangle ? { cells: s(a, c, { delaunay: !1, exterior: !1, interior: !0, }), positions: a, } : { edges: c, positions: a }; } function h(t, e, r) { try { return f(t, e, r, !0); } catch (t) {} try { return f(t, e, r, !1); } catch (t) {} return e.polygons || e.polyline || e.polygon ? [] : e.triangles || e.triangulate || e.triangle ? { cells: [], positions: [] } : { edges: [], positions: [] }; } }, { cdt2d: 42, "clean-pslg": 50, ndarray: 259, "planar-graph-to-polyline": 268, "simplify-planar-graph": 297, "surface-nets": 302, }, ], 313: [ function (t, e, r) { !(function () { "use strict"; if ( "undefined" == typeof ses || !ses.ok || ses.ok() ) { "undefined" != typeof ses && (ses.weakMapPermitHostObjects = m); var t = !1; if ("function" == typeof WeakMap) { var r = WeakMap; if ( "undefined" != typeof navigator && /Firefox/.test(navigator.userAgent) ); else { var n = new r(), i = Object.freeze({}); if ((n.set(i, 1), 1 === n.get(i))) return void (e.exports = WeakMap); t = !0; } } Object.prototype.hasOwnProperty; var a = Object.getOwnPropertyNames, o = Object.defineProperty, s = Object.isExtensible, l = "weakmap:ident:" + Math.random() + "___"; if ( "undefined" != typeof crypto && "function" == typeof crypto.getRandomValues && "function" == typeof ArrayBuffer && "function" == typeof Uint8Array ) { var c = new ArrayBuffer(25), u = new Uint8Array(c); crypto.getRandomValues(u), (l = "weakmap:rand:" + Array.prototype.map .call(u, function (t) { return (t % 36).toString(36); }) .join("") + "___"); } if ( (o(Object, "getOwnPropertyNames", { value: function (t) { return a(t).filter(g); }, }), "getPropertyNames" in Object) ) { var f = Object.getPropertyNames; o(Object, "getPropertyNames", { value: function (t) { return f(t).filter(g); }, }); } !(function () { var t = Object.freeze; o(Object, "freeze", { value: function (e) { return v(e), t(e); }, }); var e = Object.seal; o(Object, "seal", { value: function (t) { return v(t), e(t); }, }); var r = Object.preventExtensions; o(Object, "preventExtensions", { value: function (t) { return v(t), r(t); }, }); })(); var h = !1, p = 0, d = function () { this instanceof d || x(); var t = [], e = [], r = p++; return Object.create(d.prototype, { get___: { value: y(function (n, i) { var a, o = v(n); return o ? r in o ? o[r] : i : (a = t.indexOf(n)) >= 0 ? e[a] : i; }), }, has___: { value: y(function (e) { var n = v(e); return n ? r in n : t.indexOf(e) >= 0; }), }, set___: { value: y(function (n, i) { var a, o = v(n); return ( o ? (o[r] = i) : (a = t.indexOf(n)) >= 0 ? (e[a] = i) : ((a = t.length), (e[a] = i), (t[a] = n)), this ); }), }, delete___: { value: y(function (n) { var i, a, o = v(n); return o ? r in o && delete o[r] : !((i = t.indexOf(n)) < 0) && ((a = t.length - 1), (t[i] = void 0), (e[i] = e[a]), (t[i] = t[a]), (t.length = a), (e.length = a), !0); }), }, }); }; (d.prototype = Object.create( Object.prototype, { get: { value: function (t, e) { return this.get___(t, e); }, writable: !0, configurable: !0, }, has: { value: function (t) { return this.has___(t); }, writable: !0, configurable: !0, }, set: { value: function (t, e) { return this.set___(t, e); }, writable: !0, configurable: !0, }, delete: { value: function (t) { return this.delete___(t); }, writable: !0, configurable: !0, }, }, )), "function" == typeof r ? (function () { function n() { this instanceof d || x(); var e, n = new r(), i = void 0, a = !1; return ( (e = t ? function (t, e) { return ( n.set(t, e), n.has(t) || (i || (i = new d()), i.set(t, e)), this ); } : function (t, e) { if (a) try { n.set(t, e); } catch (r) { i || (i = new d()), i.set___(t, e); } else n.set(t, e); return this; }), Object.create(d.prototype, { get___: { value: y(function (t, e) { return i ? n.has(t) ? n.get(t) : i.get___(t, e) : n.get(t, e); }), }, has___: { value: y(function (t) { return ( n.has(t) || (!!i && i.has___(t)) ); }), }, set___: { value: y(e) }, delete___: { value: y(function (t) { var e = !!n.delete(t); return ( (i && i.delete___(t)) || e ); }), }, permitHostObjects___: { value: y(function (t) { if (t !== m) throw new Error( "bogus call to permitHostObjects___", ); a = !0; }), }, }) ); } t && "undefined" != typeof Proxy && (Proxy = void 0), (n.prototype = d.prototype), (e.exports = n), Object.defineProperty( WeakMap.prototype, "constructor", { value: WeakMap, enumerable: !1, configurable: !0, writable: !0, }, ); })() : ("undefined" != typeof Proxy && (Proxy = void 0), (e.exports = d)); } function m(t) { t.permitHostObjects___ && t.permitHostObjects___(m); } function g(t) { return !( "weakmap:" == t.substr(0, "weakmap:".length) && "___" === t.substr(t.length - 3) ); } function v(t) { if (t !== Object(t)) throw new TypeError( "Not an object: " + t, ); var e = t[l]; if (e && e.key === t) return e; if (s(t)) { e = { key: t }; try { return ( o(t, l, { value: e, writable: !1, enumerable: !1, configurable: !1, }), e ); } catch (t) { return; } } } function y(t) { return ( (t.prototype = null), Object.freeze(t) ); } function x() { h || "undefined" == typeof console || ((h = !0), console.warn( "WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future.", )); } })(); }, {}, ], 314: [ function (t, e, r) { var n = t("./hidden-store.js"); e.exports = function () { var t = {}; return function (e) { if ( ("object" != typeof e || null === e) && "function" != typeof e ) throw new Error( "Weakmap-shim: Key must be object", ); var r = e.valueOf(t); return r && r.identity === t ? r : n(e, t); }; }; }, { "./hidden-store.js": 315 }, ], 315: [ function (t, e, r) { e.exports = function (t, e) { var r = { identity: e }, n = t.valueOf; return ( Object.defineProperty(t, "valueOf", { value: function (t) { return t !== e ? n.apply(this, arguments) : r; }, writable: !0, }), r ); }; }, {}, ], 316: [ function (t, e, r) { var n = t("./create-store.js"); e.exports = function () { var t = n(); return { get: function (e, r) { var n = t(e); return n.hasOwnProperty("value") ? n.value : r; }, set: function (e, r) { return (t(e).value = r), this; }, has: function (e) { return "value" in t(e); }, delete: function (e) { return delete t(e).value; }, }; }; }, { "./create-store.js": 314 }, ], 317: [ function (t, e, r) { "use strict"; var n, i = function () { return function (t, e, r, n, i, a) { var o = t[0], s = r[0], l = [0], c = s; n |= 0; var u = 0, f = s; for (u = 0; u < o; ++u) { var h = e[n] - a, p = e[n + c] - a; h >= 0 != p >= 0 && i.push( l[0] + 0.5 + (0.5 * (h + p)) / (h - p), ), (n += f), ++l[0]; } }; }; e.exports = ((n = { funcName: { funcName: "zeroCrossings" } .funcName, }), (function (t) { var e = {}; return function (r, n, i) { var a = r.dtype, o = r.order, s = [a, o.join()].join(), l = e[s]; return ( l || (e[s] = l = t([a, o])), l( r.shape.slice(0), r.data, r.stride, 0 | r.offset, n, i, ) ); }; })(i.bind(void 0, n))); }, {}, ], 318: [ function (t, e, r) { "use strict"; e.exports = function (t, e) { var r = []; return ( (e = +e || 0), n(t.hi(t.shape[0] - 1), r, e), r ); }; var n = t("./lib/zc-core"); }, { "./lib/zc-core": 317 }, ], }, {}, [6], )(6); }); }).call(this); }).call( this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, ); }, {}, ], }, {}, [27], )(27); });
>>>>>>> master